diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bg.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bg.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.bg.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.cs.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.cs.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.cs.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hr.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hr.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hr.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hu.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hu.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.hu.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.my.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.my.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.my.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ro.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ro.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.ro.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sk.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sk.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sk.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sl.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sl.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sl.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sr.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sr.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.sr.jpg differ diff --git a/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.uk.jpg b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.uk.jpg new file mode 100644 index 00000000..7112c185 Binary files /dev/null and b/translated_images/1200px-Girl_and_cat.89bd70951181e86a088f41f72415b6324ba4fe506148c6f18dca4e2ef3079ec3.uk.jpg differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bg.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bg.png new file mode 100644 index 00000000..aed9bffe Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bg.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.cs.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.cs.png new file mode 100644 index 00000000..260758b9 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.cs.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hr.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hr.png new file mode 100644 index 00000000..24a40df8 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hr.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hu.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hu.png new file mode 100644 index 00000000..81e321fc Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hu.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.my.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.my.png new file mode 100644 index 00000000..d2613b74 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.my.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ro.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ro.png new file mode 100644 index 00000000..af8dcab6 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ro.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sk.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sk.png new file mode 100644 index 00000000..1a472580 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sk.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sl.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sl.png new file mode 100644 index 00000000..35daa257 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sl.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sr.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sr.png new file mode 100644 index 00000000..2c424091 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sr.png differ diff --git a/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.uk.png b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.uk.png new file mode 100644 index 00000000..bc53f365 Binary files /dev/null and b/translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.uk.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bg.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bg.png new file mode 100644 index 00000000..cc4eafbb Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.bg.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.cs.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.cs.png new file mode 100644 index 00000000..08469a2c Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.cs.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hr.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hr.png new file mode 100644 index 00000000..1bdce4e5 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hr.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hu.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hu.png new file mode 100644 index 00000000..e4aad3fc Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.hu.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.my.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.my.png new file mode 100644 index 00000000..a5f1660a Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.my.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ro.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ro.png new file mode 100644 index 00000000..42fe5e61 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.ro.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sk.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sk.png new file mode 100644 index 00000000..6e925f37 Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sk.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sl.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sl.png new file mode 100644 index 00000000..c30b1ebd Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sl.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sr.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sr.png new file mode 100644 index 00000000..bd63d97b Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.sr.png differ diff --git a/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.uk.png b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.uk.png new file mode 100644 index 00000000..5be7724a Binary files /dev/null and b/translated_images/ComputeGraph.463c9d8ebdcb22158e0563fcc50171dfbf3cb40443b597bc642b0f34ac23abbf.uk.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bg.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bg.png new file mode 100644 index 00000000..7072fa59 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.bg.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.cs.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.cs.png new file mode 100644 index 00000000..ecdc9f73 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.cs.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hr.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hr.png new file mode 100644 index 00000000..37f994a9 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hr.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hu.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hu.png new file mode 100644 index 00000000..c5399ef0 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.hu.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.my.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.my.png new file mode 100644 index 00000000..fced96e3 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.my.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ro.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ro.png new file mode 100644 index 00000000..7d40eaf3 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.ro.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sk.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sk.png new file mode 100644 index 00000000..2e0a4ea5 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sk.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sl.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sl.png new file mode 100644 index 00000000..01b02509 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sl.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sr.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sr.png new file mode 100644 index 00000000..0fa12d2b Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.sr.png differ diff --git a/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.uk.png b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.uk.png new file mode 100644 index 00000000..e745d8c2 Binary files /dev/null and b/translated_images/ComputeGraphGrad.4626252c0de035075e5cd2b7f71b776d5e3e8f64f2dc472b4420d3fdfaf53ba8.uk.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bg.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bg.png new file mode 100644 index 00000000..0e040585 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.bg.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.cs.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.cs.png new file mode 100644 index 00000000..085c0e15 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.cs.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hr.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hr.png new file mode 100644 index 00000000..ee0fb4d0 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hr.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hu.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hu.png new file mode 100644 index 00000000..7534a2a2 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hu.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.my.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.my.png new file mode 100644 index 00000000..4b572e9b Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.my.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ro.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ro.png new file mode 100644 index 00000000..2cd36252 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ro.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sk.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sk.png new file mode 100644 index 00000000..211b94ae Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sk.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sl.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sl.png new file mode 100644 index 00000000..1715afa0 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sl.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sr.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sr.png new file mode 100644 index 00000000..5df25899 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sr.png differ diff --git a/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.uk.png b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.uk.png new file mode 100644 index 00000000..ae96e3c6 Binary files /dev/null and b/translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.uk.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bg.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bg.png new file mode 100644 index 00000000..fc2b43fc Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.bg.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.cs.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.cs.png new file mode 100644 index 00000000..874488f0 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.cs.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hr.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hr.png new file mode 100644 index 00000000..0d30f2d6 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hr.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hu.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hu.png new file mode 100644 index 00000000..26005e39 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.hu.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.my.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.my.png new file mode 100644 index 00000000..b088603d Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.my.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ro.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ro.png new file mode 100644 index 00000000..ecfacf16 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.ro.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sk.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sk.png new file mode 100644 index 00000000..a588ae18 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sk.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sl.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sl.png new file mode 100644 index 00000000..11dc740e Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sl.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sr.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sr.png new file mode 100644 index 00000000..1c4ccf02 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.sr.png differ diff --git a/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.uk.png b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.uk.png new file mode 100644 index 00000000..fb9ac7f0 Binary files /dev/null and b/translated_images/Cross-Entropy-Loss.dc7ba633d2467ef3ae9ff8f06546ffcdff1347fa032b8e4b3d70b9e4ad0bf506.uk.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.bg.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.bg.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.bg.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.cs.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.cs.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.cs.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.hr.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.hr.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.hr.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.hu.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.hu.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.hu.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.my.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.my.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.my.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.ro.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.ro.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.ro.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.sk.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.sk.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.sk.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.sl.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.sl.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.sl.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.sr.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.sr.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.sr.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.uk.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.uk.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.uk.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.bg.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.bg.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.bg.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.cs.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.cs.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.cs.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.hr.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.hr.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.hr.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.hu.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.hu.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.hu.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.my.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.my.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.my.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.ro.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.ro.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.ro.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.sk.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.sk.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.sk.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.sl.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.sl.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.sl.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.sr.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.sr.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.sr.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.uk.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.uk.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.uk.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.bg.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.bg.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.bg.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.cs.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.cs.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.cs.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.hr.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.hr.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.hr.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.hu.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.hu.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.hu.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.my.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.my.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.my.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.ro.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.ro.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.ro.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.sk.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.sk.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.sk.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.sl.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.sl.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.sl.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.sr.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.sr.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.sr.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.uk.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.uk.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.uk.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bg.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bg.png new file mode 100644 index 00000000..c4d2a274 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.bg.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.cs.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.cs.png new file mode 100644 index 00000000..0be30910 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.cs.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hr.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hr.png new file mode 100644 index 00000000..e12c0963 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hr.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hu.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hu.png new file mode 100644 index 00000000..cae1d188 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.hu.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.my.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.my.png new file mode 100644 index 00000000..82ec9ad6 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.my.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ro.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ro.png new file mode 100644 index 00000000..d10308f7 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.ro.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sk.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sk.png new file mode 100644 index 00000000..4a869d54 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sk.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sl.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sl.png new file mode 100644 index 00000000..46f3e028 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sl.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sr.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sr.png new file mode 100644 index 00000000..ac1dafb3 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.sr.png differ diff --git a/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.uk.png b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.uk.png new file mode 100644 index 00000000..061681b9 Binary files /dev/null and b/translated_images/DIKW_Pyramid.94126f7d2bd8db5be71c6f1658b94bd3c85342e3cb827913b556b0414d358340.uk.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bg.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bg.png new file mode 100644 index 00000000..1baf01d8 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bg.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.cs.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.cs.png new file mode 100644 index 00000000..762530f9 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.cs.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hr.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hr.png new file mode 100644 index 00000000..1bb325f6 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hr.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hu.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hu.png new file mode 100644 index 00000000..ec921582 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hu.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.my.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.my.png new file mode 100644 index 00000000..6b4b054e Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.my.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ro.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ro.png new file mode 100644 index 00000000..71bf0dc5 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ro.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sk.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sk.png new file mode 100644 index 00000000..f0d453c7 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sk.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sl.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sl.png new file mode 100644 index 00000000..3e10813a Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sl.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sr.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sr.png new file mode 100644 index 00000000..1c829b87 Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sr.png differ diff --git a/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.uk.png b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.uk.png new file mode 100644 index 00000000..8f46ed2f Binary files /dev/null and b/translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.uk.png differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bg.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bg.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.bg.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.cs.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.cs.jpg new file mode 100644 index 00000000..35e7ee25 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.cs.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hr.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hr.jpg new file mode 100644 index 00000000..a38667fe Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hr.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hu.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hu.jpg new file mode 100644 index 00000000..e33d2130 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.hu.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.my.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.my.jpg new file mode 100644 index 00000000..e1a53ff3 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.my.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ro.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ro.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.ro.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sk.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sk.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sk.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sl.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sl.jpg new file mode 100644 index 00000000..aa71e3ef Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sl.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sr.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sr.jpg new file mode 100644 index 00000000..5c1e6605 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.sr.jpg differ diff --git a/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.uk.jpg b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.uk.jpg new file mode 100644 index 00000000..5c1e6605 Binary files /dev/null and b/translated_images/Mark_I_perceptron_wikipedia.1f84eaa2d4b76ec9fb32bab6ae07e40faa202be1935c0fbd8c2bc2600a87bcb1.uk.jpg differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bg.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bg.png new file mode 100644 index 00000000..671589b9 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.bg.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.cs.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.cs.png new file mode 100644 index 00000000..7d7e9303 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.cs.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hr.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hr.png new file mode 100644 index 00000000..e15f2a23 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hr.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hu.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hu.png new file mode 100644 index 00000000..74e2486d Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hu.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.my.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.my.png new file mode 100644 index 00000000..ca3a69bf Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.my.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ro.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ro.png new file mode 100644 index 00000000..41b9dea8 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ro.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sk.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sk.png new file mode 100644 index 00000000..b7e3f1fd Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sk.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sl.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sl.png new file mode 100644 index 00000000..2b74ac45 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sl.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sr.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sr.png new file mode 100644 index 00000000..7b5b1547 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sr.png differ diff --git a/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.uk.png b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.uk.png new file mode 100644 index 00000000..83943899 Binary files /dev/null and b/translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.uk.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bg.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bg.png new file mode 100644 index 00000000..06ca2248 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.bg.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.cs.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.cs.png new file mode 100644 index 00000000..b6f488af Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.cs.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hr.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hr.png new file mode 100644 index 00000000..cb7a4809 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hr.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hu.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hu.png new file mode 100644 index 00000000..186f968d Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.hu.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.my.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.my.png new file mode 100644 index 00000000..72398188 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.my.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ro.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ro.png new file mode 100644 index 00000000..8c4a4a24 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.ro.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sk.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sk.png new file mode 100644 index 00000000..aafe6d07 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sk.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sl.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sl.png new file mode 100644 index 00000000..d5c69374 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sl.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sr.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sr.png new file mode 100644 index 00000000..c122b36c Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.sr.png differ diff --git a/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.uk.png b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.uk.png new file mode 100644 index 00000000..532d8a16 Binary files /dev/null and b/translated_images/NetLogo-ModelLib.efe023afb4763c059704a8ac0e2cd5e51889b117e8eac02aaa5334cfe1c52c13.uk.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bg.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bg.png new file mode 100644 index 00000000..50b50ed8 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.bg.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.cs.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.cs.png new file mode 100644 index 00000000..061ef12e Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.cs.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hr.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hr.png new file mode 100644 index 00000000..c8c02528 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hr.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hu.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hu.png new file mode 100644 index 00000000..7e8088d5 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.hu.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.my.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.my.png new file mode 100644 index 00000000..4d00d545 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.my.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ro.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ro.png new file mode 100644 index 00000000..f72ffb7a Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.ro.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sk.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sk.png new file mode 100644 index 00000000..32bfc6d6 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sk.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sl.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sl.png new file mode 100644 index 00000000..45136dcd Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sl.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sr.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sr.png new file mode 100644 index 00000000..de8d8025 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.sr.png differ diff --git a/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.uk.png b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.uk.png new file mode 100644 index 00000000..f1399c04 Binary files /dev/null and b/translated_images/NeuroArch.4e17cdba5e445721ad0a94a738c6f1178fc9c5f36486fb0f8fccfd61964d528c.uk.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bg.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bg.png new file mode 100644 index 00000000..a5297e58 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.bg.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.cs.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.cs.png new file mode 100644 index 00000000..904ffec8 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.cs.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hr.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hr.png new file mode 100644 index 00000000..782e6c9c Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hu.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hu.png new file mode 100644 index 00000000..8a3ec277 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.hu.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.my.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.my.png new file mode 100644 index 00000000..e52160c2 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.my.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ro.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ro.png new file mode 100644 index 00000000..6591fde3 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.ro.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sk.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sk.png new file mode 100644 index 00000000..c54d198c Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sk.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sl.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sl.png new file mode 100644 index 00000000..94fe1953 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sl.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sr.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sr.png new file mode 100644 index 00000000..3dbc17cc Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.sr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.uk.png b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.uk.png new file mode 100644 index 00000000..6698322f Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecall.d2ef5b6081a0b094b5242ff6aa810ef25285f5a4e0efcc604c31708798fd51ee.uk.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bg.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bg.png new file mode 100644 index 00000000..1138b8c1 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.bg.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.cs.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.cs.png new file mode 100644 index 00000000..33a45601 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.cs.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hr.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hr.png new file mode 100644 index 00000000..f2e0e363 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hu.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hu.png new file mode 100644 index 00000000..f8242332 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.hu.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.my.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.my.png new file mode 100644 index 00000000..6918607d Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.my.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ro.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ro.png new file mode 100644 index 00000000..1af17323 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.ro.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sk.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sk.png new file mode 100644 index 00000000..c6e84280 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sk.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sl.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sl.png new file mode 100644 index 00000000..6573c216 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sl.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sr.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sr.png new file mode 100644 index 00000000..037e0f64 Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.sr.png differ diff --git a/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.uk.png b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.uk.png new file mode 100644 index 00000000..0f3373df Binary files /dev/null and b/translated_images/ObjDetectionPrecisionRecallIoU.96b4116fcd30ce5a6f0db4193ce61830ea03e505138410480fc16f9051694a40.uk.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bg.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bg.png new file mode 100644 index 00000000..d87a8dcb Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bg.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.cs.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.cs.png new file mode 100644 index 00000000..fef68f11 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.cs.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hr.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hr.png new file mode 100644 index 00000000..8870589d Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hr.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hu.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hu.png new file mode 100644 index 00000000..f499efc1 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hu.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.my.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.my.png new file mode 100644 index 00000000..dbaa73e3 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.my.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ro.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ro.png new file mode 100644 index 00000000..80303839 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ro.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sk.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sk.png new file mode 100644 index 00000000..660d08b9 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sk.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sl.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sl.png new file mode 100644 index 00000000..cddc600c Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sl.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sr.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sr.png new file mode 100644 index 00000000..61e46151 Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sr.png differ diff --git a/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.uk.png b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.uk.png new file mode 100644 index 00000000..cced38cf Binary files /dev/null and b/translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.uk.png differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bg.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bg.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.bg.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.cs.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.cs.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.cs.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hr.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hr.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hr.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hu.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hu.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.hu.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.my.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.my.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.my.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ro.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ro.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.ro.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sk.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sk.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sk.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sl.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sl.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sl.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sr.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sr.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.sr.jpg differ diff --git a/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.uk.jpg b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.uk.jpg new file mode 100644 index 00000000..262d4559 Binary files /dev/null and b/translated_images/Rosenblatt-wikipedia.294821b285ac796d2281a556fe3de9a7aa328e34cdd25f3ac9deefa0982ea2df.uk.jpg differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bg.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bg.png new file mode 100644 index 00000000..732d5713 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.bg.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.cs.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.cs.png new file mode 100644 index 00000000..3cb36d1b Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.cs.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hr.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hr.png new file mode 100644 index 00000000..439a0213 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hr.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hu.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hu.png new file mode 100644 index 00000000..0f48d666 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hu.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.my.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.my.png new file mode 100644 index 00000000..620de5db Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.my.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ro.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ro.png new file mode 100644 index 00000000..43194343 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ro.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sk.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sk.png new file mode 100644 index 00000000..1a7bef98 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sk.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sl.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sl.png new file mode 100644 index 00000000..338f5bbe Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sl.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sr.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sr.png new file mode 100644 index 00000000..fe064b75 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sr.png differ diff --git a/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.uk.png b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.uk.png new file mode 100644 index 00000000..28c53b19 Binary files /dev/null and b/translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.uk.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bg.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bg.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.bg.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.cs.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.cs.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.cs.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hr.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hr.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.hr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hu.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hu.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.hu.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.my.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.my.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.my.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ro.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ro.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.ro.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sk.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sk.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.sk.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sl.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sl.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.sl.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sr.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sr.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.sr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.uk.png b/translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.uk.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.uk.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bg.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bg.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.bg.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.cs.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.cs.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.cs.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hr.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hr.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.hr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hu.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hu.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.hu.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.my.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.my.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.my.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ro.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ro.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.ro.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sk.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sk.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.sk.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sl.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sl.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.sl.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sr.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sr.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.sr.png differ diff --git a/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.uk.png b/translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.uk.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.uk.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bg.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.bg.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.bg.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.cs.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.cs.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.cs.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hr.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hr.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.hr.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hu.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hu.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.hu.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.my.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.my.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.my.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ro.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ro.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.ro.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sk.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sk.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.sk.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sl.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sl.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.sl.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sr.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sr.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.sr.png differ diff --git a/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.uk.png b/translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.uk.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.uk.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bg.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bg.png new file mode 100644 index 00000000..899d3260 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.bg.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.cs.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.cs.png new file mode 100644 index 00000000..5a2dddc5 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.cs.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hr.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hr.png new file mode 100644 index 00000000..94b146c6 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hr.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hu.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hu.png new file mode 100644 index 00000000..37bb67dd Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.hu.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.my.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.my.png new file mode 100644 index 00000000..370fc634 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.my.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ro.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ro.png new file mode 100644 index 00000000..660874cb Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.ro.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sk.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sk.png new file mode 100644 index 00000000..5a2dddc5 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sk.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sl.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sl.png new file mode 100644 index 00000000..4abf1332 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sl.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sr.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sr.png new file mode 100644 index 00000000..05c55c22 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.sr.png differ diff --git a/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.uk.png b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.uk.png new file mode 100644 index 00000000..9fbf69e4 Binary files /dev/null and b/translated_images/aae.9d418a990fc75bf9204b701eb6998206fd1b986643cc4e9b899aabdd27504702.uk.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bg.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bg.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.bg.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.cs.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.cs.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.cs.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hr.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hr.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hr.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hu.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hu.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.hu.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.my.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.my.png new file mode 100644 index 00000000..8d836ff9 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.my.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ro.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ro.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.ro.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sk.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sk.png new file mode 100644 index 00000000..b1105b94 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sk.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sl.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sl.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sl.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sr.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sr.png new file mode 100644 index 00000000..684ab686 Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.sr.png differ diff --git a/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.uk.png b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.uk.png new file mode 100644 index 00000000..7daca0da Binary files /dev/null and b/translated_images/activation-func.b4924007c7ce77648d4b1dd3e81c689453204902c096c626735c7b53688cdc63.uk.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bg.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bg.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bg.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.cs.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.cs.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.cs.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hr.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hr.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hr.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hu.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hu.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hu.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.my.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.my.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.my.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ro.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ro.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ro.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sk.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sk.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sk.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sl.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sl.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sl.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sr.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sr.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sr.png differ diff --git a/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.uk.png b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.uk.png new file mode 100644 index 00000000..2da4f4e2 Binary files /dev/null and b/translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.uk.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bg.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bg.png new file mode 100644 index 00000000..303acc83 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bg.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.cs.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.cs.png new file mode 100644 index 00000000..214dcf19 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.cs.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hr.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hr.png new file mode 100644 index 00000000..96295fb2 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hr.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hu.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hu.png new file mode 100644 index 00000000..127d6418 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hu.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.my.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.my.png new file mode 100644 index 00000000..c9446b3c Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.my.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ro.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ro.png new file mode 100644 index 00000000..64bed655 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ro.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sk.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sk.png new file mode 100644 index 00000000..ae137f61 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sk.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sl.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sl.png new file mode 100644 index 00000000..84b1571b Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sl.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sr.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sr.png new file mode 100644 index 00000000..6de1376d Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sr.png differ diff --git a/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.uk.png b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.uk.png new file mode 100644 index 00000000..69cc3258 Binary files /dev/null and b/translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.uk.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bg.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bg.png new file mode 100644 index 00000000..f46040bb Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.bg.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.cs.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.cs.png new file mode 100644 index 00000000..ca3c310e Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.cs.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hr.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hr.png new file mode 100644 index 00000000..e2fe01cf Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hr.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hu.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hu.png new file mode 100644 index 00000000..86391cf9 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.hu.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.my.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.my.png new file mode 100644 index 00000000..eff3c293 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.my.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ro.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ro.png new file mode 100644 index 00000000..387bbe89 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.ro.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sk.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sk.png new file mode 100644 index 00000000..29ed4a9b Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sk.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sl.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sl.png new file mode 100644 index 00000000..e9d72400 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sl.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sr.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sr.png new file mode 100644 index 00000000..d96c1978 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.sr.png differ diff --git a/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.uk.png b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.uk.png new file mode 100644 index 00000000..f332b389 Binary files /dev/null and b/translated_images/ai-for-beginners.b354ca904b22cd70ef0d0df7b0c8633af55878f9aba882d9b9971d12badff175.uk.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bg.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bg.png new file mode 100644 index 00000000..4249d710 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bg.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.cs.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.cs.png new file mode 100644 index 00000000..926852ab Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.cs.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hr.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hr.png new file mode 100644 index 00000000..3e5c7709 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hr.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hu.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hu.png new file mode 100644 index 00000000..e5dbe766 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hu.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.my.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.my.png new file mode 100644 index 00000000..db4ba543 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.my.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ro.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ro.png new file mode 100644 index 00000000..d88956e0 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.ro.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sk.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sk.png new file mode 100644 index 00000000..b58909de Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sk.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sl.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sl.png new file mode 100644 index 00000000..c5b5e593 Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sl.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sr.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sr.png new file mode 100644 index 00000000..9a447bce Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sr.png differ diff --git a/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.uk.png b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.uk.png new file mode 100644 index 00000000..77fd4a6c Binary files /dev/null and b/translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.uk.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bg.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bg.png new file mode 100644 index 00000000..e8d07ebf Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bg.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.cs.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.cs.png new file mode 100644 index 00000000..eff1e5c9 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.cs.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hr.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hr.png new file mode 100644 index 00000000..6614fcd0 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hr.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hu.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hu.png new file mode 100644 index 00000000..44ee9c00 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hu.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.my.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.my.png new file mode 100644 index 00000000..99b7cc49 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.my.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ro.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ro.png new file mode 100644 index 00000000..d5706ba1 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ro.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sk.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sk.png new file mode 100644 index 00000000..1a3b86e7 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sk.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sl.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sl.png new file mode 100644 index 00000000..c758f249 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sl.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sr.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sr.png new file mode 100644 index 00000000..00e68349 Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sr.png differ diff --git a/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.uk.png b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.uk.png new file mode 100644 index 00000000..343054bb Binary files /dev/null and b/translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.uk.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bg.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bg.png new file mode 100644 index 00000000..95b3bb3e Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bg.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.cs.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.cs.png new file mode 100644 index 00000000..be571b34 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.cs.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hr.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hr.png new file mode 100644 index 00000000..247b9214 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hr.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hu.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hu.png new file mode 100644 index 00000000..bdec7aac Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hu.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.my.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.my.png new file mode 100644 index 00000000..c2565186 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.my.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ro.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ro.png new file mode 100644 index 00000000..6139c16c Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ro.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sk.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sk.png new file mode 100644 index 00000000..4303fd9e Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sk.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sl.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sl.png new file mode 100644 index 00000000..26e61592 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sl.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sr.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sr.png new file mode 100644 index 00000000..9879d4d7 Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sr.png differ diff --git a/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.uk.png b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.uk.png new file mode 100644 index 00000000..dca82a1a Binary files /dev/null and b/translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.uk.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bg.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bg.png new file mode 100644 index 00000000..29991c09 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bg.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.cs.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.cs.png new file mode 100644 index 00000000..58ca06ed Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.cs.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hr.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hr.png new file mode 100644 index 00000000..fb87f848 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hr.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hu.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hu.png new file mode 100644 index 00000000..2636de66 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hu.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.my.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.my.png new file mode 100644 index 00000000..5f6f488c Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.my.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ro.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ro.png new file mode 100644 index 00000000..f591d74a Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ro.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sk.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sk.png new file mode 100644 index 00000000..5984d1d8 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sk.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sl.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sl.png new file mode 100644 index 00000000..ebb12496 Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sl.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sr.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sr.png new file mode 100644 index 00000000..71355c5e Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sr.png differ diff --git a/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.uk.png b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.uk.png new file mode 100644 index 00000000..3302040c Binary files /dev/null and b/translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.uk.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bg.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bg.png new file mode 100644 index 00000000..9a684e8c Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bg.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.cs.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.cs.png new file mode 100644 index 00000000..0397fef4 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.cs.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hr.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hr.png new file mode 100644 index 00000000..54667101 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hr.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hu.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hu.png new file mode 100644 index 00000000..1129ebb0 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hu.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.my.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.my.png new file mode 100644 index 00000000..68ea26f0 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.my.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ro.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ro.png new file mode 100644 index 00000000..2e3f6149 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ro.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sk.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sk.png new file mode 100644 index 00000000..e57fd55a Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sk.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sl.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sl.png new file mode 100644 index 00000000..7b7c4166 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sl.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sr.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sr.png new file mode 100644 index 00000000..a55bb5d0 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sr.png differ diff --git a/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.uk.png b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.uk.png new file mode 100644 index 00000000..72a41f63 Binary files /dev/null and b/translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.uk.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bg.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bg.png new file mode 100644 index 00000000..9c43a08d Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bg.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.cs.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.cs.png new file mode 100644 index 00000000..a573119a Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.cs.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hr.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hr.png new file mode 100644 index 00000000..9a2a42ab Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hr.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hu.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hu.png new file mode 100644 index 00000000..1f6516b6 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hu.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.my.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.my.png new file mode 100644 index 00000000..6869bbea Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.my.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ro.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ro.png new file mode 100644 index 00000000..f26504ec Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ro.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sk.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sk.png new file mode 100644 index 00000000..8a89d769 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sk.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sl.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sl.png new file mode 100644 index 00000000..3581314a Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sl.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sr.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sr.png new file mode 100644 index 00000000..4c7c2fce Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sr.png differ diff --git a/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.uk.png b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.uk.png new file mode 100644 index 00000000..b12f2b75 Binary files /dev/null and b/translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.uk.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bg.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bg.png new file mode 100644 index 00000000..dc063585 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bg.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.cs.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.cs.png new file mode 100644 index 00000000..5390dcd2 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.cs.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hr.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hr.png new file mode 100644 index 00000000..c1d24cb2 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hr.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hu.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hu.png new file mode 100644 index 00000000..bfe8350e Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hu.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.my.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.my.png new file mode 100644 index 00000000..452d777b Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.my.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ro.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ro.png new file mode 100644 index 00000000..98da2b2d Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ro.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sk.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sk.png new file mode 100644 index 00000000..cca92526 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sk.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sl.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sl.png new file mode 100644 index 00000000..dc063585 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sl.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sr.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sr.png new file mode 100644 index 00000000..4d222d71 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sr.png differ diff --git a/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.uk.png b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.uk.png new file mode 100644 index 00000000..dc063585 Binary files /dev/null and b/translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.uk.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bg.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bg.png new file mode 100644 index 00000000..45762db1 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bg.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.cs.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.cs.png new file mode 100644 index 00000000..875eef42 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.cs.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hr.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hr.png new file mode 100644 index 00000000..e1360140 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hr.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hu.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hu.png new file mode 100644 index 00000000..e1360140 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hu.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.my.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.my.png new file mode 100644 index 00000000..92402a06 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.my.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ro.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ro.png new file mode 100644 index 00000000..875eef42 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ro.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sk.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sk.png new file mode 100644 index 00000000..45762db1 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sk.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sl.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sl.png new file mode 100644 index 00000000..875eef42 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sl.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sr.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sr.png new file mode 100644 index 00000000..a7e295ea Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sr.png differ diff --git a/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.uk.png b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.uk.png new file mode 100644 index 00000000..93cc9cf5 Binary files /dev/null and b/translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.uk.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bg.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bg.png new file mode 100644 index 00000000..7c359f71 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.bg.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.cs.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.cs.png new file mode 100644 index 00000000..8a576386 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.cs.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hr.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hr.png new file mode 100644 index 00000000..58c6b172 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hr.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hu.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hu.png new file mode 100644 index 00000000..23d7e209 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.hu.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.my.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.my.png new file mode 100644 index 00000000..baf07767 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.my.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ro.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ro.png new file mode 100644 index 00000000..dca14ad4 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.ro.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sk.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sk.png new file mode 100644 index 00000000..8a576386 Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sk.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sl.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sl.png new file mode 100644 index 00000000..1704700e Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sl.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sr.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sr.png new file mode 100644 index 00000000..857eccac Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.sr.png differ diff --git a/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.uk.png b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.uk.png new file mode 100644 index 00000000..dbdacc6e Binary files /dev/null and b/translated_images/ascii-character-map.18ed6aa7f3b0a7ffeb29db95be05a245b6a20712bb2c3a9963c1ec7e9df70358.uk.png differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bg.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bg.jpg new file mode 100644 index 00000000..fed18d7d Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.bg.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.cs.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.cs.jpg new file mode 100644 index 00000000..dae91452 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.cs.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hr.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hr.jpg new file mode 100644 index 00000000..620143e1 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hr.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hu.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hu.jpg new file mode 100644 index 00000000..e76438d7 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hu.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.my.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.my.jpg new file mode 100644 index 00000000..7ba07789 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.my.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ro.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ro.jpg new file mode 100644 index 00000000..623ff985 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ro.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sk.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sk.jpg new file mode 100644 index 00000000..f5d93336 Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sk.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sl.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sl.jpg new file mode 100644 index 00000000..f6693c1b Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sl.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sr.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sr.jpg new file mode 100644 index 00000000..f520724d Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sr.jpg differ diff --git a/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.uk.jpg b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.uk.jpg new file mode 100644 index 00000000..0f4de14b Binary files /dev/null and b/translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.uk.jpg differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bg.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bg.png new file mode 100644 index 00000000..bf5681b5 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.bg.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.cs.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.cs.png new file mode 100644 index 00000000..284807dd Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.cs.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hr.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hr.png new file mode 100644 index 00000000..90b18335 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hr.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hu.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hu.png new file mode 100644 index 00000000..c33b0df7 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.hu.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.my.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.my.png new file mode 100644 index 00000000..d30e2717 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.my.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ro.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ro.png new file mode 100644 index 00000000..2e71d4f9 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.ro.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sk.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sk.png new file mode 100644 index 00000000..284807dd Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sk.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sl.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sl.png new file mode 100644 index 00000000..7b8d721d Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sl.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sr.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sr.png new file mode 100644 index 00000000..25e55bc7 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.sr.png differ diff --git a/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.uk.png b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.uk.png new file mode 100644 index 00000000..bf5681b5 Binary files /dev/null and b/translated_images/bag-of-words-example.606fc1738f1d7ba98a9d693e3bcd706c6e83fa7bf8221e6e90d1a206d82f2ea4.uk.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bg.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bg.png new file mode 100644 index 00000000..f4647662 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.bg.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.cs.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.cs.png new file mode 100644 index 00000000..6e11fb96 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.cs.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hr.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hr.png new file mode 100644 index 00000000..63c8ef0d Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hr.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hu.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hu.png new file mode 100644 index 00000000..8bd17ae5 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hu.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.my.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.my.png new file mode 100644 index 00000000..e4db40f5 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.my.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ro.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ro.png new file mode 100644 index 00000000..a9f26393 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ro.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sk.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sk.png new file mode 100644 index 00000000..06fbaefc Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sk.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sl.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sl.png new file mode 100644 index 00000000..2d036ed4 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sl.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sr.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sr.png new file mode 100644 index 00000000..5f75c766 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sr.png differ diff --git a/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.uk.png b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.uk.png new file mode 100644 index 00000000..95c307a3 Binary files /dev/null and b/translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.uk.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bg.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bg.png new file mode 100644 index 00000000..024898dc Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.bg.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.cs.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.cs.png new file mode 100644 index 00000000..03ed412a Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.cs.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hr.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hr.png new file mode 100644 index 00000000..5ff248be Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hr.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hu.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hu.png new file mode 100644 index 00000000..e62d7400 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.hu.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.my.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.my.png new file mode 100644 index 00000000..0eebf87f Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.my.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ro.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ro.png new file mode 100644 index 00000000..6b99613c Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.ro.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sk.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sk.png new file mode 100644 index 00000000..214e41bc Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sk.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sl.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sl.png new file mode 100644 index 00000000..e986e876 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sl.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sr.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sr.png new file mode 100644 index 00000000..a8d6a433 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.sr.png differ diff --git a/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.uk.png b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.uk.png new file mode 100644 index 00000000..4030e716 Binary files /dev/null and b/translated_images/bot-ner.4b09235dbb0ad2754ec1f54c8c797f902cbb0b45ac90b0cfc8287343cef8df2f.uk.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bg.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bg.png new file mode 100644 index 00000000..709e9256 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.bg.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.cs.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.cs.png new file mode 100644 index 00000000..37e81fb9 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.cs.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hr.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hr.png new file mode 100644 index 00000000..619c3299 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hr.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hu.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hu.png new file mode 100644 index 00000000..6b2a7cef Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.hu.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.my.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.my.png new file mode 100644 index 00000000..d43a3368 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.my.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ro.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ro.png new file mode 100644 index 00000000..6cb4c0e0 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.ro.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sk.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sk.png new file mode 100644 index 00000000..da566c3b Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sk.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sl.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sl.png new file mode 100644 index 00000000..e6bf6ee0 Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sl.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sr.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sr.png new file mode 100644 index 00000000..f06c1a4a Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.sr.png differ diff --git a/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.uk.png b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.uk.png new file mode 100644 index 00000000..48b715cc Binary files /dev/null and b/translated_images/bow.3811869cff59368d951c7a765ed20ebeaf7d10680eb602ea7c5312fb22f7b7ad.uk.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bg.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bg.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bg.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.cs.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.cs.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.cs.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hr.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hr.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hr.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hu.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hu.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hu.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.my.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.my.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.my.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ro.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ro.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ro.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sk.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sk.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sk.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sl.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sl.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sl.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sr.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sr.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sr.png differ diff --git a/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.uk.png b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.uk.png new file mode 100644 index 00000000..82fa8e43 Binary files /dev/null and b/translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.uk.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bg.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bg.png new file mode 100644 index 00000000..50823c9d Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bg.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.cs.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.cs.png new file mode 100644 index 00000000..0e679503 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.cs.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hr.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hr.png new file mode 100644 index 00000000..0a105113 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hr.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hu.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hu.png new file mode 100644 index 00000000..bc1d8ce4 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hu.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.my.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.my.png new file mode 100644 index 00000000..843ea10c Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.my.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ro.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ro.png new file mode 100644 index 00000000..23e81e68 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ro.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sk.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sk.png new file mode 100644 index 00000000..881d9ff6 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sk.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sl.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sl.png new file mode 100644 index 00000000..ec7ddbae Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sl.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sr.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sr.png new file mode 100644 index 00000000..43441dc8 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sr.png differ diff --git a/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.uk.png b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.uk.png new file mode 100644 index 00000000..cbd823a3 Binary files /dev/null and b/translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.uk.png differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bg.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bg.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.bg.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.cs.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.cs.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.cs.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hr.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hr.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hr.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hu.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hu.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hu.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.my.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.my.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.my.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ro.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ro.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ro.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sk.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sk.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sk.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sl.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sl.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sl.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sr.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sr.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sr.jpeg differ diff --git a/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.uk.jpeg b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.uk.jpeg new file mode 100644 index 00000000..5d3ee5e4 Binary files /dev/null and b/translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.uk.jpeg differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bg.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bg.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.bg.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.cs.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.cs.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.cs.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hr.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hr.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hr.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hu.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hu.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.hu.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.my.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.my.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.my.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ro.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ro.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.ro.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sk.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sk.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sk.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sl.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sl.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sl.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sr.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sr.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.sr.png differ diff --git a/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.uk.png b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.uk.png new file mode 100644 index 00000000..76b66c47 Binary files /dev/null and b/translated_images/cartpole.f52a67f27e058170c25efc1bca8375b60906570ea757fe8d7ef04ae8e53df29d.uk.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bg.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bg.png new file mode 100644 index 00000000..eb6fc632 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.bg.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.cs.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.cs.png new file mode 100644 index 00000000..b818998e Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.cs.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hr.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hr.png new file mode 100644 index 00000000..8364973a Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hr.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hu.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hu.png new file mode 100644 index 00000000..a40351ae Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.hu.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.my.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.my.png new file mode 100644 index 00000000..974a6fab Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.my.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ro.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ro.png new file mode 100644 index 00000000..523442ed Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.ro.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sk.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sk.png new file mode 100644 index 00000000..e5b8ce70 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sk.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sl.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sl.png new file mode 100644 index 00000000..e5b8ce70 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sl.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sr.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sr.png new file mode 100644 index 00000000..02d817f5 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.sr.png differ diff --git a/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.uk.png b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.uk.png new file mode 100644 index 00000000..2cd0be43 Binary files /dev/null and b/translated_images/catsdogsdataset.a7aff8e6085fd3f062a882179ac5e5a9e652f82ca35c5f5a94f96f526da34498.uk.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bg.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bg.png new file mode 100644 index 00000000..3378ce24 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bg.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.cs.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.cs.png new file mode 100644 index 00000000..56470fb5 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.cs.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hr.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hr.png new file mode 100644 index 00000000..e7284cc0 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hr.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hu.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hu.png new file mode 100644 index 00000000..e367e915 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hu.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.my.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.my.png new file mode 100644 index 00000000..fcef9c15 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.my.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ro.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ro.png new file mode 100644 index 00000000..550137b8 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ro.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sk.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sk.png new file mode 100644 index 00000000..4857e5f0 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sk.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sl.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sl.png new file mode 100644 index 00000000..29b13c06 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sl.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sr.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sr.png new file mode 100644 index 00000000..0475335d Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sr.png differ diff --git a/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.uk.png b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.uk.png new file mode 100644 index 00000000..d9a36643 Binary files /dev/null and b/translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.uk.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bg.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bg.png new file mode 100644 index 00000000..897d3223 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bg.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.cs.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.cs.png new file mode 100644 index 00000000..d936901d Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.cs.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hr.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hr.png new file mode 100644 index 00000000..e7284cc0 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hr.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hu.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hu.png new file mode 100644 index 00000000..c9a8d91d Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hu.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.my.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.my.png new file mode 100644 index 00000000..b6ffc17a Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.my.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ro.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ro.png new file mode 100644 index 00000000..550137b8 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ro.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sk.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sk.png new file mode 100644 index 00000000..4857e5f0 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sk.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sl.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sl.png new file mode 100644 index 00000000..bba7e8d7 Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sl.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sr.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sr.png new file mode 100644 index 00000000..0475335d Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sr.png differ diff --git a/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.uk.png b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.uk.png new file mode 100644 index 00000000..6ed6f7bf Binary files /dev/null and b/translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.uk.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bg.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bg.png new file mode 100644 index 00000000..2b4956f7 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.bg.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.cs.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.cs.png new file mode 100644 index 00000000..5c0caf35 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.cs.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hr.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hr.png new file mode 100644 index 00000000..e8e34247 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hr.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hu.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hu.png new file mode 100644 index 00000000..2237b658 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.hu.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.my.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.my.png new file mode 100644 index 00000000..69caaf5a Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.my.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ro.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ro.png new file mode 100644 index 00000000..808d4f8b Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.ro.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sk.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sk.png new file mode 100644 index 00000000..c54bfa51 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sk.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sl.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sl.png new file mode 100644 index 00000000..08166d6b Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sl.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sr.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sr.png new file mode 100644 index 00000000..1452e15d Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.sr.png differ diff --git a/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.uk.png b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.uk.png new file mode 100644 index 00000000..912c0794 Binary files /dev/null and b/translated_images/cnn-pyramid.85915455759ef0ce6a8cc9da2170492c85bfd9e1b61832650e2228e037039ec4.uk.png differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bg.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bg.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.bg.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.cs.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.cs.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.cs.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hr.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hr.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hr.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hu.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hu.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hu.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.my.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.my.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.my.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ro.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ro.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ro.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sk.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sk.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sk.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sl.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sl.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sl.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sr.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sr.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sr.jpg differ diff --git a/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.uk.jpg b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.uk.jpg new file mode 100644 index 00000000..87e2c770 Binary files /dev/null and b/translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.uk.jpg differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bg.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bg.png new file mode 100644 index 00000000..89ecc827 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.bg.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.cs.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.cs.png new file mode 100644 index 00000000..c96ad2d5 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.cs.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hr.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hr.png new file mode 100644 index 00000000..c96ad2d5 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hr.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hu.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hu.png new file mode 100644 index 00000000..9e8d840b Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.hu.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.my.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.my.png new file mode 100644 index 00000000..2e1bb243 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.my.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ro.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ro.png new file mode 100644 index 00000000..c96ad2d5 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.ro.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sk.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sk.png new file mode 100644 index 00000000..c96ad2d5 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sk.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sl.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sl.png new file mode 100644 index 00000000..c96ad2d5 Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sl.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sr.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sr.png new file mode 100644 index 00000000..08adb2eb Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.sr.png differ diff --git a/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.uk.png b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.uk.png new file mode 100644 index 00000000..37bd1f1b Binary files /dev/null and b/translated_images/convolutionExample.634615d5ff7081e0b73416b9e398f9eade32856616386fdc0cf412ce898cc192.uk.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bg.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bg.png new file mode 100644 index 00000000..55ff81b1 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.bg.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.cs.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.cs.png new file mode 100644 index 00000000..d3029c54 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.cs.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hr.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hr.png new file mode 100644 index 00000000..3360f091 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hr.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hu.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hu.png new file mode 100644 index 00000000..f7bc8ddb Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hu.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.my.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.my.png new file mode 100644 index 00000000..29306278 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.my.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ro.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ro.png new file mode 100644 index 00000000..2a06501a Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ro.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sk.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sk.png new file mode 100644 index 00000000..3819454e Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sk.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sl.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sl.png new file mode 100644 index 00000000..b4c7d45c Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sl.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sr.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sr.png new file mode 100644 index 00000000..02e4c216 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sr.png differ diff --git a/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.uk.png b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.uk.png new file mode 100644 index 00000000..e2a87638 Binary files /dev/null and b/translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.uk.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bg.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bg.png new file mode 100644 index 00000000..ffcf092d Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.bg.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.cs.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.cs.png new file mode 100644 index 00000000..d5910014 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.cs.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hr.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hr.png new file mode 100644 index 00000000..1d16ea98 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hr.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hu.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hu.png new file mode 100644 index 00000000..3130d49b Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.hu.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.my.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.my.png new file mode 100644 index 00000000..5c1b0fb6 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.my.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ro.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ro.png new file mode 100644 index 00000000..84620a52 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.ro.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sk.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sk.png new file mode 100644 index 00000000..8a7c8f6c Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sk.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sl.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sl.png new file mode 100644 index 00000000..36c544fd Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sl.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sr.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sr.png new file mode 100644 index 00000000..cf2f4f34 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.sr.png differ diff --git a/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.uk.png b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.uk.png new file mode 100644 index 00000000..b85de194 Binary files /dev/null and b/translated_images/dcgan_generator.b500988ec2bc8ba5cb38dae855fece348933171227c0536743b9c3b599f33f3d.uk.png differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bg.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bg.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.bg.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.cs.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.cs.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.cs.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hr.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hr.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hr.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hu.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hu.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.hu.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.my.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.my.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.my.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ro.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ro.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.ro.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sk.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sk.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sk.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sl.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sl.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sl.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sr.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sr.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.sr.jpg differ diff --git a/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.uk.jpg b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.uk.jpg new file mode 100644 index 00000000..1ec22269 Binary files /dev/null and b/translated_images/dog-from-unsplash.426f9fbca2febc93f70499f8330874380bd6f2184b4fb986bac7220826d11a00.uk.jpg differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bg.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bg.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.bg.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.cs.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.cs.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.cs.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hr.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hr.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hr.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hu.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hu.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hu.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.my.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.my.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.my.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ro.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ro.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.ro.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sk.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sk.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sk.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sl.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sl.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sl.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sr.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sr.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sr.png differ diff --git a/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.uk.png b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.uk.png new file mode 100644 index 00000000..2355616a Binary files /dev/null and b/translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.uk.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bg.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bg.png new file mode 100644 index 00000000..c04b70e3 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.bg.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.cs.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.cs.png new file mode 100644 index 00000000..645de72e Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.cs.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hr.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hr.png new file mode 100644 index 00000000..4b782902 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hr.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hu.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hu.png new file mode 100644 index 00000000..05b666c2 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hu.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.my.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.my.png new file mode 100644 index 00000000..d37efb68 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.my.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ro.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ro.png new file mode 100644 index 00000000..73301056 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ro.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sk.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sk.png new file mode 100644 index 00000000..8646a6fd Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sk.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sl.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sl.png new file mode 100644 index 00000000..402c7660 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sl.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sr.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sr.png new file mode 100644 index 00000000..27ebe896 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sr.png differ diff --git a/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.uk.png b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.uk.png new file mode 100644 index 00000000..743efb02 Binary files /dev/null and b/translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.uk.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bg.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bg.png new file mode 100644 index 00000000..864b373b Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.bg.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.cs.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.cs.png new file mode 100644 index 00000000..8200e225 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.cs.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hr.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hr.png new file mode 100644 index 00000000..c3e0ab5e Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hr.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hu.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hu.png new file mode 100644 index 00000000..97e5d24d Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hu.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.my.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.my.png new file mode 100644 index 00000000..b286863d Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.my.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ro.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ro.png new file mode 100644 index 00000000..c3f6ac92 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ro.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sk.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sk.png new file mode 100644 index 00000000..01a82644 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sk.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sl.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sl.png new file mode 100644 index 00000000..a32a5125 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sl.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sr.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sr.png new file mode 100644 index 00000000..0dc7c918 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sr.png differ diff --git a/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.uk.png b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.uk.png new file mode 100644 index 00000000..e94cfb29 Binary files /dev/null and b/translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.uk.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bg.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bg.png new file mode 100644 index 00000000..e6623c07 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.bg.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.cs.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.cs.png new file mode 100644 index 00000000..9638fc16 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.cs.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hr.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hr.png new file mode 100644 index 00000000..cab364fb Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hr.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hu.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hu.png new file mode 100644 index 00000000..c13e1ec8 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hu.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.my.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.my.png new file mode 100644 index 00000000..05d090b0 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.my.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ro.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ro.png new file mode 100644 index 00000000..fed90190 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ro.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sk.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sk.png new file mode 100644 index 00000000..d7cc3e78 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sk.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sl.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sl.png new file mode 100644 index 00000000..a7d007d4 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sl.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sr.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sr.png new file mode 100644 index 00000000..312f4d00 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sr.png differ diff --git a/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.uk.png b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.uk.png new file mode 100644 index 00000000..5bd272d5 Binary files /dev/null and b/translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.uk.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bg.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bg.png new file mode 100644 index 00000000..0ae64033 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.bg.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.cs.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.cs.png new file mode 100644 index 00000000..fe882984 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.cs.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hr.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hr.png new file mode 100644 index 00000000..3c8f01ea Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hr.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hu.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hu.png new file mode 100644 index 00000000..2d0d7464 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hu.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.my.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.my.png new file mode 100644 index 00000000..0368b692 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.my.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ro.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ro.png new file mode 100644 index 00000000..2b518e8d Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ro.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sk.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sk.png new file mode 100644 index 00000000..d94db117 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sk.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sl.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sl.png new file mode 100644 index 00000000..e402f6d3 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sl.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sr.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sr.png new file mode 100644 index 00000000..5db450da Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sr.png differ diff --git a/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.uk.png b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.uk.png new file mode 100644 index 00000000..2aaffcf4 Binary files /dev/null and b/translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.uk.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bg.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bg.png new file mode 100644 index 00000000..68cfbca0 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.bg.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.cs.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.cs.png new file mode 100644 index 00000000..49781349 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.cs.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hr.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hr.png new file mode 100644 index 00000000..e30e58a0 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hr.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hu.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hu.png new file mode 100644 index 00000000..226203ea Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hu.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.my.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.my.png new file mode 100644 index 00000000..a4391d02 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.my.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ro.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ro.png new file mode 100644 index 00000000..ea16b39a Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ro.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sk.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sk.png new file mode 100644 index 00000000..59bab227 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sk.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sl.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sl.png new file mode 100644 index 00000000..a700e022 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sl.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sr.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sr.png new file mode 100644 index 00000000..f990fb49 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sr.png differ diff --git a/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.uk.png b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.uk.png new file mode 100644 index 00000000..3c05b1b8 Binary files /dev/null and b/translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.uk.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bg.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bg.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.bg.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.cs.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.cs.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.cs.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hr.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hr.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hu.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hu.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.hu.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.my.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.my.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.my.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ro.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ro.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ro.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sk.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sk.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sk.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sl.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sl.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sl.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sr.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sr.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.sr.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.uk.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.uk.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.uk.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bg.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bg.png new file mode 100644 index 00000000..626e5713 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bg.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.cs.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.cs.png new file mode 100644 index 00000000..f7bb75d5 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.cs.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hr.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hr.png new file mode 100644 index 00000000..626e5713 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hr.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hu.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hu.png new file mode 100644 index 00000000..f2d35254 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hu.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.my.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.my.png new file mode 100644 index 00000000..0a844556 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.my.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ro.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ro.png new file mode 100644 index 00000000..7c73799b Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ro.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sk.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sk.png new file mode 100644 index 00000000..18b9fca5 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sk.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sl.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sl.png new file mode 100644 index 00000000..692ea54e Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sl.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sr.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sr.png new file mode 100644 index 00000000..a5036b18 Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sr.png differ diff --git a/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.uk.png b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.uk.png new file mode 100644 index 00000000..034eaced Binary files /dev/null and b/translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.uk.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bg.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bg.png new file mode 100644 index 00000000..aa655866 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bg.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.cs.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.cs.png new file mode 100644 index 00000000..615b2b9d Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.cs.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hr.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hr.png new file mode 100644 index 00000000..b3d51b7f Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hr.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hu.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hu.png new file mode 100644 index 00000000..8b4a84d3 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hu.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.my.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.my.png new file mode 100644 index 00000000..098b415b Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.my.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ro.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ro.png new file mode 100644 index 00000000..4a1d50ce Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ro.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sk.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sk.png new file mode 100644 index 00000000..4392765a Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sk.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sl.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sl.png new file mode 100644 index 00000000..d8f0cba6 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sl.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sr.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sr.png new file mode 100644 index 00000000..c3d9103e Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sr.png differ diff --git a/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.uk.png b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.uk.png new file mode 100644 index 00000000..67f41a42 Binary files /dev/null and b/translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.uk.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bg.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bg.png new file mode 100644 index 00000000..852de4c3 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.bg.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.cs.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.cs.png new file mode 100644 index 00000000..32d0fae1 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.cs.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hr.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hr.png new file mode 100644 index 00000000..d6aa1d90 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hr.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hu.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hu.png new file mode 100644 index 00000000..3848c65d Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hu.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.my.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.my.png new file mode 100644 index 00000000..f471e428 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.my.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ro.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ro.png new file mode 100644 index 00000000..e9848880 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ro.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sk.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sk.png new file mode 100644 index 00000000..a926e4e4 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sk.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sl.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sl.png new file mode 100644 index 00000000..f638ca91 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sl.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sr.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sr.png new file mode 100644 index 00000000..f4ce3189 Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sr.png differ diff --git a/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.uk.png b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.uk.png new file mode 100644 index 00000000..fdb9cd1a Binary files /dev/null and b/translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.uk.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bg.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bg.png new file mode 100644 index 00000000..fad63e4e Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bg.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.cs.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.cs.png new file mode 100644 index 00000000..1a199a2f Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.cs.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hr.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hr.png new file mode 100644 index 00000000..85a47dea Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hr.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hu.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hu.png new file mode 100644 index 00000000..23837d62 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hu.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.my.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.my.png new file mode 100644 index 00000000..c17a42a4 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.my.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ro.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ro.png new file mode 100644 index 00000000..f86efb6c Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ro.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sk.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sk.png new file mode 100644 index 00000000..1a199a2f Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sk.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sl.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sl.png new file mode 100644 index 00000000..c7c915ec Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sl.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sr.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sr.png new file mode 100644 index 00000000..aa4f725d Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sr.png differ diff --git a/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.uk.png b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.uk.png new file mode 100644 index 00000000..67c858b4 Binary files /dev/null and b/translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.uk.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bg.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bg.png new file mode 100644 index 00000000..301907f8 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.bg.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.cs.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.cs.png new file mode 100644 index 00000000..7db0b288 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.cs.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hr.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hr.png new file mode 100644 index 00000000..adc3b741 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hr.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hu.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hu.png new file mode 100644 index 00000000..ac77a39b Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.hu.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.my.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.my.png new file mode 100644 index 00000000..217f4f8c Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.my.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ro.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ro.png new file mode 100644 index 00000000..1614801e Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.ro.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sk.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sk.png new file mode 100644 index 00000000..4c895b07 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sk.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sl.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sl.png new file mode 100644 index 00000000..430241ac Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sl.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sr.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sr.png new file mode 100644 index 00000000..7be95900 Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.sr.png differ diff --git a/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.uk.png b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.uk.png new file mode 100644 index 00000000..64ab9f3a Binary files /dev/null and b/translated_images/gan_arch_detail.46b95fd366f8e543170264fe07e516683ac3e5bb699392c35449e99590a11063.uk.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bg.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bg.png new file mode 100644 index 00000000..382e543b Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.bg.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.cs.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.cs.png new file mode 100644 index 00000000..5d65907f Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.cs.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hr.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hr.png new file mode 100644 index 00000000..82b6c0b1 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hr.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hu.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hu.png new file mode 100644 index 00000000..51abbdf5 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.hu.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.my.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.my.png new file mode 100644 index 00000000..1fd55a5e Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.my.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ro.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ro.png new file mode 100644 index 00000000..b7a0b094 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.ro.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sk.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sk.png new file mode 100644 index 00000000..7b7840ef Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sk.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sl.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sl.png new file mode 100644 index 00000000..4773cfa0 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sl.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sr.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sr.png new file mode 100644 index 00000000..0722e1c6 Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.sr.png differ diff --git a/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.uk.png b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.uk.png new file mode 100644 index 00000000..ecbe07be Binary files /dev/null and b/translated_images/gan_architecture.8f3a5ab62b8d5d698a91f7668017d8e09b81c5d8e7cc99bdb23979d90a0c475e.uk.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bg.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bg.png new file mode 100644 index 00000000..babf2f67 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.bg.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.cs.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.cs.png new file mode 100644 index 00000000..147cdcd9 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.cs.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hr.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hr.png new file mode 100644 index 00000000..ea8748eb Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hr.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hu.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hu.png new file mode 100644 index 00000000..df622962 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.hu.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.my.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.my.png new file mode 100644 index 00000000..9b93e9a8 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.my.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ro.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ro.png new file mode 100644 index 00000000..0f0bb8b9 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.ro.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sk.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sk.png new file mode 100644 index 00000000..de121c07 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sk.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sl.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sl.png new file mode 100644 index 00000000..722a3fa2 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sl.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sr.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sr.png new file mode 100644 index 00000000..4d63dec2 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.sr.png differ diff --git a/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.uk.png b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.uk.png new file mode 100644 index 00000000..fd699256 Binary files /dev/null and b/translated_images/history-of-ai.7e83efa70b537f5a0264357672b0884cf3a220fbafe35c65d70b2c3805f7bf5e.uk.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bg.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bg.png new file mode 100644 index 00000000..a5d8a622 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.bg.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.cs.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.cs.png new file mode 100644 index 00000000..2d92be14 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.cs.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hr.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hr.png new file mode 100644 index 00000000..186d5495 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hr.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hu.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hu.png new file mode 100644 index 00000000..5633498d Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hu.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.my.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.my.png new file mode 100644 index 00000000..7dc1a8a4 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.my.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ro.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ro.png new file mode 100644 index 00000000..92e57697 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ro.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sk.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sk.png new file mode 100644 index 00000000..be7600b1 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sk.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sl.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sl.png new file mode 100644 index 00000000..6fdcd179 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sl.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sr.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sr.png new file mode 100644 index 00000000..9910a0f5 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sr.png differ diff --git a/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.uk.png b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.uk.png new file mode 100644 index 00000000..35ed4673 Binary files /dev/null and b/translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.uk.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bg.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bg.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bg.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.cs.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.cs.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.cs.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hr.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hr.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hr.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hu.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hu.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hu.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.my.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.my.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.my.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ro.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ro.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ro.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sk.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sk.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sk.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sl.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sl.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sl.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sr.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sr.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sr.png differ diff --git a/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.uk.png b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.uk.png new file mode 100644 index 00000000..54e79786 Binary files /dev/null and b/translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.uk.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bg.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bg.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bg.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.cs.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.cs.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.cs.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hr.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hr.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hr.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hu.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hu.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hu.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.my.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.my.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.my.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ro.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ro.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ro.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sk.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sk.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sk.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sl.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sl.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sl.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sr.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sr.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sr.png differ diff --git a/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.uk.png b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.uk.png new file mode 100644 index 00000000..0422909f Binary files /dev/null and b/translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.uk.png differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bg.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bg.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.bg.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.cs.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.cs.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.cs.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hr.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hr.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hr.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hu.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hu.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.hu.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.my.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.my.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.my.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ro.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ro.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.ro.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sk.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sk.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sk.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sl.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sl.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sl.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sr.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sr.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.sr.jpg differ diff --git a/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.uk.jpg b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.uk.jpg new file mode 100644 index 00000000..599c8388 Binary files /dev/null and b/translated_images/image.896e8254a2c60d451dbc648a499c3ed5d4b596bea265a3ca7ea581b5bc50d32f.uk.jpg differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bg.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bg.png new file mode 100644 index 00000000..7d19ca11 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.bg.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.cs.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.cs.png new file mode 100644 index 00000000..0a025d39 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.cs.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hr.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hr.png new file mode 100644 index 00000000..1653eced Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hr.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hu.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hu.png new file mode 100644 index 00000000..75417573 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.hu.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.my.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.my.png new file mode 100644 index 00000000..b39257bf Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.my.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ro.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ro.png new file mode 100644 index 00000000..73c5e97b Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.ro.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sk.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sk.png new file mode 100644 index 00000000..08ffdd23 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sk.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sl.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sl.png new file mode 100644 index 00000000..07069e11 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sl.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sr.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sr.png new file mode 100644 index 00000000..124d0e46 Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.sr.png differ diff --git a/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.uk.png b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.uk.png new file mode 100644 index 00000000..5440ebbf Binary files /dev/null and b/translated_images/inception.a6605b85bcbc6f52490ec55e68109dd41924cba9d7e1007453b4cdf554199c8d.uk.png differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bg.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bg.jpeg new file mode 100644 index 00000000..e9e3a66e Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.bg.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.cs.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.cs.jpeg new file mode 100644 index 00000000..6e741755 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.cs.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hr.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hr.jpeg new file mode 100644 index 00000000..62908fe3 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hr.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hu.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hu.jpeg new file mode 100644 index 00000000..1cb9eefb Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.hu.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.my.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.my.jpeg new file mode 100644 index 00000000..ce0edb33 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.my.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ro.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ro.jpeg new file mode 100644 index 00000000..8453cf7f Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.ro.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sk.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sk.jpeg new file mode 100644 index 00000000..5b4ece94 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sk.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sl.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sl.jpeg new file mode 100644 index 00000000..69bb86a0 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sl.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sr.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sr.jpeg new file mode 100644 index 00000000..0028c4cd Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.sr.jpeg differ diff --git a/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.uk.jpeg b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.uk.jpeg new file mode 100644 index 00000000..7e12ede2 Binary files /dev/null and b/translated_images/instance_vs_semantic.eee9812bebf8cd450cdef4caaed2d4dd9c6c3b671e0c65d8aef312758ebb7b89.uk.jpeg differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bg.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bg.png new file mode 100644 index 00000000..d9fa6f56 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bg.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.cs.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.cs.png new file mode 100644 index 00000000..a6d40afd Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.cs.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hr.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hr.png new file mode 100644 index 00000000..dfbae613 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hr.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hu.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hu.png new file mode 100644 index 00000000..f226181c Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hu.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.my.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.my.png new file mode 100644 index 00000000..2259276f Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.my.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ro.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ro.png new file mode 100644 index 00000000..60229964 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ro.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sk.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sk.png new file mode 100644 index 00000000..0da796c7 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sk.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sl.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sl.png new file mode 100644 index 00000000..0b3b5631 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sl.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sr.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sr.png new file mode 100644 index 00000000..db1b7580 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sr.png differ diff --git a/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.uk.png b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.uk.png new file mode 100644 index 00000000..83327b26 Binary files /dev/null and b/translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.uk.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bg.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bg.png new file mode 100644 index 00000000..89f8d1c0 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bg.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.cs.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.cs.png new file mode 100644 index 00000000..33940172 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.cs.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hr.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hr.png new file mode 100644 index 00000000..767d3cdf Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hr.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hu.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hu.png new file mode 100644 index 00000000..28d97e51 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hu.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.my.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.my.png new file mode 100644 index 00000000..185b3898 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.my.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ro.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ro.png new file mode 100644 index 00000000..d325902f Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ro.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sk.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sk.png new file mode 100644 index 00000000..80389670 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sk.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sl.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sl.png new file mode 100644 index 00000000..b9779616 Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sl.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sr.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sr.png new file mode 100644 index 00000000..3d92213e Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sr.png differ diff --git a/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.uk.png b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.uk.png new file mode 100644 index 00000000..7f555dda Binary files /dev/null and b/translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.uk.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bg.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bg.png new file mode 100644 index 00000000..52778760 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bg.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.cs.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.cs.png new file mode 100644 index 00000000..9f2a3a4a Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.cs.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hr.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hr.png new file mode 100644 index 00000000..24ba59dd Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hr.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hu.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hu.png new file mode 100644 index 00000000..2e94a39e Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hu.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.my.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.my.png new file mode 100644 index 00000000..622c12f1 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.my.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ro.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ro.png new file mode 100644 index 00000000..d140c9c9 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ro.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sk.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sk.png new file mode 100644 index 00000000..f503b4c4 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sk.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sl.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sl.png new file mode 100644 index 00000000..169cbd71 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sl.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sr.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sr.png new file mode 100644 index 00000000..90610325 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sr.png differ diff --git a/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.uk.png b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.uk.png new file mode 100644 index 00000000..b56d3de7 Binary files /dev/null and b/translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.uk.png differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bg.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bg.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.bg.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.cs.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.cs.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.cs.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hr.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hr.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hr.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hu.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hu.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.hu.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.my.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.my.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.my.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ro.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ro.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.ro.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sk.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sk.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sk.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sl.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sl.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sl.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sr.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sr.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.sr.jpg differ diff --git a/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.uk.jpg b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.uk.jpg new file mode 100644 index 00000000..4edba1d7 Binary files /dev/null and b/translated_images/lmfilters.ea9e4868a82cf74cdca05121b1128f0122297cf2879501cd06956beb88ff96a2.uk.jpg differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bg.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bg.png new file mode 100644 index 00000000..d68927b5 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bg.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.cs.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.cs.png new file mode 100644 index 00000000..5117b5ff Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.cs.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hr.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hr.png new file mode 100644 index 00000000..7f263173 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hr.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hu.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hu.png new file mode 100644 index 00000000..ef476da3 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hu.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.my.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.my.png new file mode 100644 index 00000000..38e43321 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.my.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ro.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ro.png new file mode 100644 index 00000000..394aed02 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.ro.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sk.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sk.png new file mode 100644 index 00000000..11a38a1f Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sk.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sl.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sl.png new file mode 100644 index 00000000..4a01a726 Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sl.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sr.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sr.png new file mode 100644 index 00000000..15c709ca Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sr.png differ diff --git a/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.uk.png b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.uk.png new file mode 100644 index 00000000..8b76a3bc Binary files /dev/null and b/translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.uk.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bg.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bg.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.bg.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.cs.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.cs.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.cs.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hr.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hr.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hr.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hu.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hu.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.hu.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.my.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.my.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.my.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ro.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ro.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.ro.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sk.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sk.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sk.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sl.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sl.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sl.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sr.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sr.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.sr.png differ diff --git a/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.uk.png b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.uk.png new file mode 100644 index 00000000..7e859b3d Binary files /dev/null and b/translated_images/mountaincar.f7b7a7f6d4f9933b31a5fb3453b9c026aa0d65f6644bb03513a955590aae1bc4.uk.png differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bg.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bg.jpg new file mode 100644 index 00000000..51e66e4a Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bg.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.cs.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.cs.jpg new file mode 100644 index 00000000..5e0199e0 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.cs.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hr.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hr.jpg new file mode 100644 index 00000000..021ba426 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hr.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hu.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hu.jpg new file mode 100644 index 00000000..6ee75080 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hu.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.my.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.my.jpg new file mode 100644 index 00000000..6b165e34 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.my.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ro.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ro.jpg new file mode 100644 index 00000000..107328e9 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ro.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sk.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sk.jpg new file mode 100644 index 00000000..10ce02b1 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sk.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sl.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sl.jpg new file mode 100644 index 00000000..53a4622d Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sl.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sr.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sr.jpg new file mode 100644 index 00000000..2424ed21 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sr.jpg differ diff --git a/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.uk.jpg b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.uk.jpg new file mode 100644 index 00000000..af275295 Binary files /dev/null and b/translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.uk.jpg differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bg.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bg.png new file mode 100644 index 00000000..fef79381 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bg.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.cs.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.cs.png new file mode 100644 index 00000000..380ba8b4 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.cs.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hr.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hr.png new file mode 100644 index 00000000..a4d41ba3 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hr.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hu.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hu.png new file mode 100644 index 00000000..1630d4ef Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hu.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.my.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.my.png new file mode 100644 index 00000000..2e4e4ce6 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.my.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ro.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ro.png new file mode 100644 index 00000000..a4d41ba3 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ro.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sk.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sk.png new file mode 100644 index 00000000..a4d41ba3 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sk.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sl.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sl.png new file mode 100644 index 00000000..122ec261 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sl.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sr.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sr.png new file mode 100644 index 00000000..a4d41ba3 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sr.png differ diff --git a/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.uk.png b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.uk.png new file mode 100644 index 00000000..d831b889 Binary files /dev/null and b/translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.uk.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bg.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bg.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.bg.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.cs.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.cs.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.cs.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hr.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hr.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hr.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hu.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hu.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.hu.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.my.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.my.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.my.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ro.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ro.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.ro.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sk.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sk.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sk.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sl.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sl.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sl.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sr.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sr.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.sr.png differ diff --git a/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.uk.png b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.uk.png new file mode 100644 index 00000000..9fe23e7e Binary files /dev/null and b/translated_images/navi.2f20b727910110ea593fa03a2491f2ba1b25c62c97b33c692bcf01917a1f333f.uk.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bg.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bg.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.bg.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.cs.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.cs.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.cs.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hr.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hr.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hr.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hu.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hu.png new file mode 100644 index 00000000..bbb22600 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.hu.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.my.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.my.png new file mode 100644 index 00000000..1b0401b4 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.my.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ro.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ro.png new file mode 100644 index 00000000..ac97b5e4 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.ro.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sk.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sk.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sk.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sl.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sl.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sl.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sr.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sr.png new file mode 100644 index 00000000..6ad51a49 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.sr.png differ diff --git a/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.uk.png b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.uk.png new file mode 100644 index 00000000..bbb22600 Binary files /dev/null and b/translated_images/netout.1eb15eb76fd767313e067719f400cec4b0e5090239c3e997c29f6789d4c3c263.uk.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bg.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bg.png new file mode 100644 index 00000000..d678fb18 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.bg.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.cs.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.cs.png new file mode 100644 index 00000000..727c419a Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.cs.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hr.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hr.png new file mode 100644 index 00000000..3a522d65 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hr.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hu.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hu.png new file mode 100644 index 00000000..32261d1f Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.hu.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.my.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.my.png new file mode 100644 index 00000000..fa377782 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.my.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ro.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ro.png new file mode 100644 index 00000000..606679df Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.ro.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sk.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sk.png new file mode 100644 index 00000000..c4606cd9 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sk.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sl.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sl.png new file mode 100644 index 00000000..edc77fd1 Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sl.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sr.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sr.png new file mode 100644 index 00000000..4d2ada4f Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.sr.png differ diff --git a/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.uk.png b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.uk.png new file mode 100644 index 00000000..e479e62f Binary files /dev/null and b/translated_images/offset-sequence-representation.eb73fcefb29b46eecfbe74466077cfeb7c0f93a4f254850538a2efbc63517479.uk.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bg.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bg.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.bg.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.cs.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.cs.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.cs.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hr.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hr.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hr.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hu.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hu.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hu.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.my.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.my.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.my.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ro.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ro.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ro.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sk.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sk.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sk.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sl.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sl.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sl.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sr.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sr.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sr.png differ diff --git a/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.uk.png b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.uk.png new file mode 100644 index 00000000..f6d867c3 Binary files /dev/null and b/translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.uk.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bg.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bg.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bg.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.cs.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.cs.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.cs.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hr.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hr.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hr.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hu.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hu.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hu.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.my.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.my.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.my.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ro.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ro.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ro.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sk.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sk.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sk.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sl.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sl.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sl.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sr.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sr.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sr.png differ diff --git a/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.uk.png b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.uk.png new file mode 100644 index 00000000..da672bbd Binary files /dev/null and b/translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.uk.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bg.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bg.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.bg.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.cs.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.cs.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.cs.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hr.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hr.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hr.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hu.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hu.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.hu.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.my.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.my.png new file mode 100644 index 00000000..4176f0d6 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.my.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ro.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ro.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.ro.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sk.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sk.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sk.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sl.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sl.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sl.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sr.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sr.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.sr.png differ diff --git a/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.uk.png b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.uk.png new file mode 100644 index 00000000..46a57f84 Binary files /dev/null and b/translated_images/overfit.a0bd57f717c157696f30c9c73fa7c3345c49b4280e412ff30c4a1a16ba29ff49.uk.png differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bg.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bg.jpg new file mode 100644 index 00000000..11be87cf Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bg.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.cs.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.cs.jpg new file mode 100644 index 00000000..ac6d3697 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.cs.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hr.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hr.jpg new file mode 100644 index 00000000..4b62f473 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hr.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hu.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hu.jpg new file mode 100644 index 00000000..cb96e299 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hu.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.my.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.my.jpg new file mode 100644 index 00000000..62e8b441 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.my.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ro.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ro.jpg new file mode 100644 index 00000000..4b62f473 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ro.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sk.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sk.jpg new file mode 100644 index 00000000..4b62f473 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sk.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sl.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sl.jpg new file mode 100644 index 00000000..4b62f473 Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sl.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sr.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sr.jpg new file mode 100644 index 00000000..11be87cf Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sr.jpg differ diff --git a/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.uk.jpg b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.uk.jpg new file mode 100644 index 00000000..11be87cf Binary files /dev/null and b/translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.uk.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bg.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bg.jpg new file mode 100644 index 00000000..8c0169b8 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bg.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.cs.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.cs.jpg new file mode 100644 index 00000000..b88c995f Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.cs.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hr.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hr.jpg new file mode 100644 index 00000000..7a69a2fe Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hr.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hu.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hu.jpg new file mode 100644 index 00000000..4ded2310 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hu.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.my.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.my.jpg new file mode 100644 index 00000000..7bd04563 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.my.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ro.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ro.jpg new file mode 100644 index 00000000..6722c751 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ro.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sk.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sk.jpg new file mode 100644 index 00000000..b88c995f Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sk.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sl.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sl.jpg new file mode 100644 index 00000000..b88c995f Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sl.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sr.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sr.jpg new file mode 100644 index 00000000..ac5003cd Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sr.jpg differ diff --git a/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.uk.jpg b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.uk.jpg new file mode 100644 index 00000000..8c0169b8 Binary files /dev/null and b/translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.uk.jpg differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bg.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bg.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.bg.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.cs.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.cs.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.cs.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hr.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hr.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hr.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hu.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hu.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.hu.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.my.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.my.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.my.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ro.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ro.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.ro.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sk.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sk.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sk.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sl.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sl.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sl.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sr.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sr.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.sr.png differ diff --git a/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.uk.png b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.uk.png new file mode 100644 index 00000000..bb70c019 Binary files /dev/null and b/translated_images/palm-movement.341495f0e9c47da39cc1f99626822a1d20203aa33ff89a86a068f14bea133e84.uk.png differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bg.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bg.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bg.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.cs.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.cs.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.cs.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hr.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hr.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hr.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hu.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hu.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hu.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.my.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.my.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.my.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ro.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ro.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.ro.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sk.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sk.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sk.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sl.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sl.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sl.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sr.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sr.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sr.jpg differ diff --git a/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.uk.jpg b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.uk.jpg new file mode 100644 index 00000000..776f24aa Binary files /dev/null and b/translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.uk.jpg differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bg.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bg.png new file mode 100644 index 00000000..71afec80 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.bg.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.cs.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.cs.png new file mode 100644 index 00000000..ea04a3a8 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.cs.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hr.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hr.png new file mode 100644 index 00000000..70d39d59 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hr.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hu.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hu.png new file mode 100644 index 00000000..0457fd49 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.hu.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.my.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.my.png new file mode 100644 index 00000000..5f2cbf4b Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.my.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ro.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ro.png new file mode 100644 index 00000000..4801080e Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.ro.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sk.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sk.png new file mode 100644 index 00000000..6ee98e7c Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sk.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sl.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sl.png new file mode 100644 index 00000000..6197e024 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sl.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sr.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sr.png new file mode 100644 index 00000000..0412780d Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.sr.png differ diff --git a/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.uk.png b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.uk.png new file mode 100644 index 00000000..d3e03a66 Binary files /dev/null and b/translated_images/pos-embedding.e41ce9b6cf6078afd28da02f27e33ac7026ed4c156491df7ad9aa96be7c194bb.uk.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bg.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bg.png new file mode 100644 index 00000000..7d535761 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.bg.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.cs.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.cs.png new file mode 100644 index 00000000..ba72185b Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.cs.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hr.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hr.png new file mode 100644 index 00000000..5c178efa Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hr.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hu.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hu.png new file mode 100644 index 00000000..64154130 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.hu.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.my.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.my.png new file mode 100644 index 00000000..2f8c7feb Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.my.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ro.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ro.png new file mode 100644 index 00000000..b72b8242 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.ro.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sk.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sk.png new file mode 100644 index 00000000..f73d6a83 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sk.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sl.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sl.png new file mode 100644 index 00000000..bde6e202 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sl.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sr.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sr.png new file mode 100644 index 00000000..5419272f Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.sr.png differ diff --git a/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.uk.png b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.uk.png new file mode 100644 index 00000000..3811fe66 Binary files /dev/null and b/translated_images/protege.274177ceeac13b38094bc425073776bb0d2525620ad6261b9d9760ebd2a8e322.uk.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bg.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bg.png new file mode 100644 index 00000000..964ce842 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.bg.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.cs.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.cs.png new file mode 100644 index 00000000..a3ab069a Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.cs.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hr.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hr.png new file mode 100644 index 00000000..a1296651 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hr.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hu.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hu.png new file mode 100644 index 00000000..6b692fbe Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hu.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.my.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.my.png new file mode 100644 index 00000000..07595e22 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.my.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ro.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ro.png new file mode 100644 index 00000000..01031dab Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ro.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sk.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sk.png new file mode 100644 index 00000000..89a6c90e Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sk.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sl.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sl.png new file mode 100644 index 00000000..d6fff059 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sl.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sr.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sr.png new file mode 100644 index 00000000..9c067c83 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sr.png differ diff --git a/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.uk.png b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.uk.png new file mode 100644 index 00000000..a418ec00 Binary files /dev/null and b/translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.uk.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bg.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bg.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bg.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.cs.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.cs.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.cs.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hr.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hr.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hr.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hu.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hu.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hu.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.my.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.my.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.my.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ro.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ro.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ro.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sk.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sk.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sk.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sl.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sl.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sl.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sr.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sr.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sr.png differ diff --git a/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.uk.png b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.uk.png new file mode 100644 index 00000000..50f70d5b Binary files /dev/null and b/translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.uk.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bg.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bg.png new file mode 100644 index 00000000..3248174b Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bg.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.cs.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.cs.png new file mode 100644 index 00000000..4ef5602d Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.cs.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hr.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hr.png new file mode 100644 index 00000000..3707d3d1 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hr.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hu.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hu.png new file mode 100644 index 00000000..aff440f1 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hu.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.my.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.my.png new file mode 100644 index 00000000..f9203f24 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.my.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ro.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ro.png new file mode 100644 index 00000000..6470710d Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ro.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sk.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sk.png new file mode 100644 index 00000000..2005b767 Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sk.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sl.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sl.png new file mode 100644 index 00000000..2eae19bc Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sl.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sr.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sr.png new file mode 100644 index 00000000..0aca77fe Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sr.png differ diff --git a/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.uk.png b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.uk.png new file mode 100644 index 00000000..5a458f2b Binary files /dev/null and b/translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.uk.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bg.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bg.png new file mode 100644 index 00000000..92c54259 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.bg.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.cs.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.cs.png new file mode 100644 index 00000000..5f964639 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.cs.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hr.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hr.png new file mode 100644 index 00000000..6d4901a3 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hr.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hu.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hu.png new file mode 100644 index 00000000..28086f8c Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.hu.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.my.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.my.png new file mode 100644 index 00000000..72266041 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.my.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ro.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ro.png new file mode 100644 index 00000000..6d9cd6a7 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.ro.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sk.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sk.png new file mode 100644 index 00000000..5f964639 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sk.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sl.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sl.png new file mode 100644 index 00000000..1a38899a Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sl.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sr.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sr.png new file mode 100644 index 00000000..ea3c0a28 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.sr.png differ diff --git a/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.uk.png b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.uk.png new file mode 100644 index 00000000..e01e3b87 Binary files /dev/null and b/translated_images/resnet-block.aba4ccbcc094443477d7bee189d44fed695c852d710a702462d6b809155d959a.uk.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bg.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bg.png new file mode 100644 index 00000000..a1e4e908 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.bg.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.cs.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.cs.png new file mode 100644 index 00000000..6ebb6b79 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.cs.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hr.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hr.png new file mode 100644 index 00000000..af199405 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hr.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hu.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hu.png new file mode 100644 index 00000000..b031c25a Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.hu.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.my.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.my.png new file mode 100644 index 00000000..426bf9fd Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.my.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ro.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ro.png new file mode 100644 index 00000000..d527f7f2 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.ro.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sk.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sk.png new file mode 100644 index 00000000..fd333d71 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sk.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sl.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sl.png new file mode 100644 index 00000000..44454e73 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sl.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sr.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sr.png new file mode 100644 index 00000000..bf28a1aa Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.sr.png differ diff --git a/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.uk.png b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.uk.png new file mode 100644 index 00000000..d431fd56 Binary files /dev/null and b/translated_images/rnn-anatomy.79ee3f3920b3294bd52e9543ef36102dbca3cecf6d4d78d8c63bf0bbc95fdc90.uk.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bg.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bg.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.bg.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.cs.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.cs.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.cs.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hr.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hr.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hr.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hu.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hu.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.hu.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.my.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.my.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.my.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ro.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ro.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.ro.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sk.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sk.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sk.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sl.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sl.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sl.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sr.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sr.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.sr.png differ diff --git a/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.uk.png b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.uk.png new file mode 100644 index 00000000..0498e867 Binary files /dev/null and b/translated_images/rnn-generate-inf.5168dc65e0370eeab36f83885ba6b5bf56265698de5ddbd8648dc3653e1f0b9b.uk.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bg.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bg.png new file mode 100644 index 00000000..b2b05067 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bg.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.cs.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.cs.png new file mode 100644 index 00000000..49a1519a Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.cs.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hr.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hr.png new file mode 100644 index 00000000..890dc46f Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hr.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hu.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hu.png new file mode 100644 index 00000000..79911907 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hu.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.my.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.my.png new file mode 100644 index 00000000..4d0585fb Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.my.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ro.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ro.png new file mode 100644 index 00000000..8b5a2a68 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ro.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sk.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sk.png new file mode 100644 index 00000000..5acd6f56 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sk.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sl.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sl.png new file mode 100644 index 00000000..c46e8a07 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sl.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sr.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sr.png new file mode 100644 index 00000000..099767c8 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sr.png differ diff --git a/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.uk.png b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.uk.png new file mode 100644 index 00000000..6b414f20 Binary files /dev/null and b/translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.uk.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bg.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bg.png new file mode 100644 index 00000000..6f12bbd7 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.bg.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.cs.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.cs.png new file mode 100644 index 00000000..0dd9a4ec Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.cs.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hr.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hr.png new file mode 100644 index 00000000..801248c2 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hr.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hu.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hu.png new file mode 100644 index 00000000..bfd24ab3 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hu.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.my.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.my.png new file mode 100644 index 00000000..e6882114 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.my.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ro.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ro.png new file mode 100644 index 00000000..9f41f08f Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ro.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sk.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sk.png new file mode 100644 index 00000000..742aca50 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sk.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sl.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sl.png new file mode 100644 index 00000000..b9d71687 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sl.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sr.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sr.png new file mode 100644 index 00000000..e9609d89 Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sr.png differ diff --git a/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.uk.png b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.uk.png new file mode 100644 index 00000000..eac116af Binary files /dev/null and b/translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.uk.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bg.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bg.png new file mode 100644 index 00000000..04d2e945 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.bg.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.cs.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.cs.png new file mode 100644 index 00000000..f5e6ab46 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.cs.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hr.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hr.png new file mode 100644 index 00000000..49d5e225 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hr.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hu.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hu.png new file mode 100644 index 00000000..2fb996f8 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.hu.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.my.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.my.png new file mode 100644 index 00000000..19dbb73c Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.my.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ro.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ro.png new file mode 100644 index 00000000..511aa0f8 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.ro.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sk.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sk.png new file mode 100644 index 00000000..42073bd2 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sk.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sl.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sl.png new file mode 100644 index 00000000..a2dde2b7 Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sl.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sr.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sr.png new file mode 100644 index 00000000..b4ed724a Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.sr.png differ diff --git a/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.uk.png b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.uk.png new file mode 100644 index 00000000..a7269efb Binary files /dev/null and b/translated_images/segm.92442f2cb42ff4fa650fee858a3a02f55cf46825d9602115130e9e95a52a8526.uk.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bg.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bg.png new file mode 100644 index 00000000..1add2f7c Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.bg.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.cs.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.cs.png new file mode 100644 index 00000000..9cd44998 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.cs.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hr.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hr.png new file mode 100644 index 00000000..17d9385c Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hr.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hu.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hu.png new file mode 100644 index 00000000..35c0f164 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.hu.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.my.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.my.png new file mode 100644 index 00000000..409c980b Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.my.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ro.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ro.png new file mode 100644 index 00000000..806e6c1e Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.ro.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sk.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sk.png new file mode 100644 index 00000000..dcbd1703 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sk.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sl.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sl.png new file mode 100644 index 00000000..a2a3264b Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sl.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sr.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sr.png new file mode 100644 index 00000000..95862846 Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.sr.png differ diff --git a/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.uk.png b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.uk.png new file mode 100644 index 00000000..58ccda4a Binary files /dev/null and b/translated_images/segnet.87377542aa5a8b76c6e19b715e86daec8da5c1124df41ab6064d8409b8579be6.uk.png differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bg.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bg.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.bg.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.cs.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.cs.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.cs.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hr.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hr.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hr.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hu.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hu.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.hu.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.my.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.my.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.my.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ro.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ro.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.ro.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sk.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sk.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sk.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sl.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sl.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sl.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sr.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sr.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.sr.jpg differ diff --git a/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.uk.jpg b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.uk.jpg new file mode 100644 index 00000000..24361692 Binary files /dev/null and b/translated_images/style.5293e85e077ab22cf0e8f920132b79bd9a6d6f957085ef20079ec5eee96405c3.uk.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bg.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bg.jpg new file mode 100644 index 00000000..10073dcb Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bg.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.cs.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.cs.jpg new file mode 100644 index 00000000..9af90e53 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.cs.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hr.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hr.jpg new file mode 100644 index 00000000..24d53826 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hr.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hu.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hu.jpg new file mode 100644 index 00000000..7c034f14 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hu.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.my.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.my.jpg new file mode 100644 index 00000000..1c88159d Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.my.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ro.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ro.jpg new file mode 100644 index 00000000..73de024b Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ro.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sk.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sk.jpg new file mode 100644 index 00000000..c4fd7a76 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sk.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sl.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sl.jpg new file mode 100644 index 00000000..f45772bd Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sl.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sr.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sr.jpg new file mode 100644 index 00000000..193cd627 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sr.jpg differ diff --git a/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.uk.jpg b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.uk.jpg new file mode 100644 index 00000000..e6ae14d4 Binary files /dev/null and b/translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.uk.jpg differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bg.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bg.png new file mode 100644 index 00000000..5ff90bfb Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.bg.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.cs.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.cs.png new file mode 100644 index 00000000..8d02f4b4 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.cs.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hr.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hr.png new file mode 100644 index 00000000..7650cf77 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hr.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hu.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hu.png new file mode 100644 index 00000000..b435110f Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.hu.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.my.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.my.png new file mode 100644 index 00000000..83800f22 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.my.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ro.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ro.png new file mode 100644 index 00000000..608eb6b7 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.ro.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sk.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sk.png new file mode 100644 index 00000000..e5545c12 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sk.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sl.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sl.png new file mode 100644 index 00000000..919d4af5 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sl.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sr.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sr.png new file mode 100644 index 00000000..16b40e40 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.sr.png differ diff --git a/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.uk.png b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.uk.png new file mode 100644 index 00000000..318c4c78 Binary files /dev/null and b/translated_images/transformer-layer.905e14747ca4e7d5cf1409e8bf8944c9b1d6e4f5ce3ab167918af65c4904d727.uk.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bg.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bg.png new file mode 100644 index 00000000..ffecebaa Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.bg.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.cs.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.cs.png new file mode 100644 index 00000000..53bcb3e5 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.cs.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hr.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hr.png new file mode 100644 index 00000000..3a7eca02 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hr.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hu.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hu.png new file mode 100644 index 00000000..0daa6f4e Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.hu.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.my.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.my.png new file mode 100644 index 00000000..5c53dc97 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.my.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ro.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ro.png new file mode 100644 index 00000000..9406a687 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.ro.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sk.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sk.png new file mode 100644 index 00000000..f9d767d6 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sk.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sl.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sl.png new file mode 100644 index 00000000..7f2f0721 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sl.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sr.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sr.png new file mode 100644 index 00000000..74ceaab4 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.sr.png differ diff --git a/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.uk.png b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.uk.png new file mode 100644 index 00000000..748b8d09 Binary files /dev/null and b/translated_images/triplet-complex.32094972c7b4441b844bd85e683ba8eedc08af12177160f11584452698f29ace.uk.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bg.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bg.png new file mode 100644 index 00000000..41408c6c Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.bg.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.cs.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.cs.png new file mode 100644 index 00000000..50323aeb Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.cs.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hr.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hr.png new file mode 100644 index 00000000..9e11ff07 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hr.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hu.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hu.png new file mode 100644 index 00000000..a7938ecf Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.hu.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.my.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.my.png new file mode 100644 index 00000000..f17cd76f Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.my.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ro.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ro.png new file mode 100644 index 00000000..e2c1a64f Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.ro.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sk.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sk.png new file mode 100644 index 00000000..00c9e2d5 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sk.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sl.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sl.png new file mode 100644 index 00000000..05adaee4 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sl.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sr.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sr.png new file mode 100644 index 00000000..6351d6b0 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.sr.png differ diff --git a/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.uk.png b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.uk.png new file mode 100644 index 00000000..79013870 Binary files /dev/null and b/translated_images/triplet.4b9b332587593298b31846eb5cf341d8f7e48da76e6692dbb7cf0fcf2fd5ab38.uk.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bg.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bg.png new file mode 100644 index 00000000..026d6a4f Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.bg.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.cs.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.cs.png new file mode 100644 index 00000000..24ce18e4 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.cs.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hr.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hr.png new file mode 100644 index 00000000..088d5d60 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hr.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hu.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hu.png new file mode 100644 index 00000000..334718c3 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.hu.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.my.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.my.png new file mode 100644 index 00000000..2841943f Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.my.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ro.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ro.png new file mode 100644 index 00000000..f46d3b59 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.ro.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sk.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sk.png new file mode 100644 index 00000000..d6593a87 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sk.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sl.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sl.png new file mode 100644 index 00000000..56558055 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sl.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sr.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sr.png new file mode 100644 index 00000000..8bc1cf2d Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.sr.png differ diff --git a/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.uk.png b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.uk.png new file mode 100644 index 00000000..8093bc99 Binary files /dev/null and b/translated_images/turing-test-evol.4184696701293ead6de6e6441a659c62f0b119b342456987f531005f43be0b6d.uk.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bg.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bg.png new file mode 100644 index 00000000..d7c136d1 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.bg.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.cs.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.cs.png new file mode 100644 index 00000000..37083511 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.cs.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hr.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hr.png new file mode 100644 index 00000000..2e3c528c Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hr.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hu.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hu.png new file mode 100644 index 00000000..633bbd82 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.hu.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.my.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.my.png new file mode 100644 index 00000000..bd929ee1 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.my.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ro.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ro.png new file mode 100644 index 00000000..dc4e31cc Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.ro.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sk.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sk.png new file mode 100644 index 00000000..7591de05 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sk.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sl.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sl.png new file mode 100644 index 00000000..a4b687e2 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sl.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sr.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sr.png new file mode 100644 index 00000000..019a0b56 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.sr.png differ diff --git a/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.uk.png b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.uk.png new file mode 100644 index 00000000..198fa1c6 Binary files /dev/null and b/translated_images/unet.3adb555bf39d3657bf535321c7ee153dbdd32895189e915e014229a9c79cf1e3.uk.png differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bg.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bg.jpg new file mode 100644 index 00000000..0cfd32e7 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.bg.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.cs.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.cs.jpg new file mode 100644 index 00000000..451289d0 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.cs.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hr.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hr.jpg new file mode 100644 index 00000000..484a9565 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hr.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hu.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hu.jpg new file mode 100644 index 00000000..9fe55850 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hu.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.my.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.my.jpg new file mode 100644 index 00000000..07045e57 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.my.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ro.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ro.jpg new file mode 100644 index 00000000..761c08be Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ro.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sk.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sk.jpg new file mode 100644 index 00000000..04322a74 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sk.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sl.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sl.jpg new file mode 100644 index 00000000..be17a6ea Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sl.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sr.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sr.jpg new file mode 100644 index 00000000..32891fde Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sr.jpg differ diff --git a/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.uk.jpg b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.uk.jpg new file mode 100644 index 00000000..d9f84e86 Binary files /dev/null and b/translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.uk.jpg differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bg.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bg.png new file mode 100644 index 00000000..95ef8c03 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.bg.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.cs.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.cs.png new file mode 100644 index 00000000..157f5d32 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.cs.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hr.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hr.png new file mode 100644 index 00000000..20140868 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hr.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hu.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hu.png new file mode 100644 index 00000000..2be6ba91 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.hu.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.my.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.my.png new file mode 100644 index 00000000..5cbde1b0 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.my.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ro.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ro.png new file mode 100644 index 00000000..03ec0d0b Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.ro.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sk.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sk.png new file mode 100644 index 00000000..ca26079e Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sk.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sl.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sl.png new file mode 100644 index 00000000..20140868 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sl.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sr.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sr.png new file mode 100644 index 00000000..95ef8c03 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.sr.png differ diff --git a/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.uk.png b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.uk.png new file mode 100644 index 00000000..95ef8c03 Binary files /dev/null and b/translated_images/vae.464c465a5b6a9e253be65a8cb3be1724832cbde57ece3912ddc962b199472a89.uk.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bg.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bg.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.bg.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.cs.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.cs.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.cs.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hr.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hr.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hr.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hu.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hu.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.hu.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.my.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.my.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.my.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ro.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ro.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.ro.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sk.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sk.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sk.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sl.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sl.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sl.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sr.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sr.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.sr.png differ diff --git a/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.uk.png b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.uk.png new file mode 100644 index 00000000..6d15b15b Binary files /dev/null and b/translated_images/vaemnist-diag.694315f775d5d666b02fb54f8fc7c64db65a9d126a16c2fdb8683cf9726f9ff5.uk.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bg.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bg.png new file mode 100644 index 00000000..580cf58c Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.bg.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.cs.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.cs.png new file mode 100644 index 00000000..56afad82 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.cs.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hr.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hr.png new file mode 100644 index 00000000..56afad82 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hr.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hu.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hu.png new file mode 100644 index 00000000..fc30c203 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.hu.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.my.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.my.png new file mode 100644 index 00000000..ea940546 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.my.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ro.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ro.png new file mode 100644 index 00000000..0176c921 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.ro.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sk.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sk.png new file mode 100644 index 00000000..d1b010fb Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sk.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sl.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sl.png new file mode 100644 index 00000000..e71b1aa9 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sl.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sr.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sr.png new file mode 100644 index 00000000..a475ce15 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.sr.png differ diff --git a/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.uk.png b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.uk.png new file mode 100644 index 00000000..e0b41310 Binary files /dev/null and b/translated_images/vaemnist.cab9e602dc08dc5066ce14e005889d6b53ca5bcaf16e35c28dbf8cd40c304de1.uk.png differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bg.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bg.jpg new file mode 100644 index 00000000..f0f3e0a9 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bg.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.cs.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.cs.jpg new file mode 100644 index 00000000..a7052435 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.cs.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hr.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hr.jpg new file mode 100644 index 00000000..515f55da Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hr.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hu.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hu.jpg new file mode 100644 index 00000000..44e81708 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hu.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.my.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.my.jpg new file mode 100644 index 00000000..e4c4aee4 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.my.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ro.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ro.jpg new file mode 100644 index 00000000..9bbade22 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ro.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sk.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sk.jpg new file mode 100644 index 00000000..97543388 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sk.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sl.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sl.jpg new file mode 100644 index 00000000..96af611a Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sl.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sr.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sr.jpg new file mode 100644 index 00000000..47d81c6f Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sr.jpg differ diff --git a/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.uk.jpg b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.uk.jpg new file mode 100644 index 00000000..4b444a45 Binary files /dev/null and b/translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.uk.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bg.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bg.jpg new file mode 100644 index 00000000..775d02f1 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bg.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.cs.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.cs.jpg new file mode 100644 index 00000000..ad03fd60 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.cs.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hr.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hr.jpg new file mode 100644 index 00000000..345b797c Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hr.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hu.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hu.jpg new file mode 100644 index 00000000..4c4589ab Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hu.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.my.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.my.jpg new file mode 100644 index 00000000..51635ee3 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.my.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ro.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ro.jpg new file mode 100644 index 00000000..c2743832 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ro.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sk.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sk.jpg new file mode 100644 index 00000000..b4d2eab4 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sk.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sl.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sl.jpg new file mode 100644 index 00000000..47c01a94 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sl.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sr.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sr.jpg new file mode 100644 index 00000000..340e2a6a Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sr.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg new file mode 100644 index 00000000..b08a0307 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg differ diff --git a/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.uk.jpg b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.uk.jpg new file mode 100644 index 00000000..cd5db451 Binary files /dev/null and b/translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.uk.jpg differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bg.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bg.png new file mode 100644 index 00000000..e120340d Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.bg.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.cs.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.cs.png new file mode 100644 index 00000000..3e81ab10 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.cs.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hr.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hr.png new file mode 100644 index 00000000..1c6abe21 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hr.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hu.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hu.png new file mode 100644 index 00000000..7231a5af Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hu.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.my.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.my.png new file mode 100644 index 00000000..c5d7fa98 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.my.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ro.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ro.png new file mode 100644 index 00000000..0cc4a96b Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ro.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sk.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sk.png new file mode 100644 index 00000000..0403e4c8 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sk.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sl.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sl.png new file mode 100644 index 00000000..934d1dc9 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sl.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sr.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sr.png new file mode 100644 index 00000000..fbba3893 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sr.png differ diff --git a/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.uk.png b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.uk.png new file mode 100644 index 00000000..35d4c2e6 Binary files /dev/null and b/translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.uk.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bg.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bg.png new file mode 100644 index 00000000..f5f100a2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bg.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.cs.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.cs.png new file mode 100644 index 00000000..d4eeb8c6 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.cs.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hr.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hr.png new file mode 100644 index 00000000..290e741b Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hr.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hu.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hu.png new file mode 100644 index 00000000..8167180d Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hu.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.my.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.my.png new file mode 100644 index 00000000..98ce75f4 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.my.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ro.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ro.png new file mode 100644 index 00000000..a486a42d Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ro.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sk.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sk.png new file mode 100644 index 00000000..0649d69c Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sk.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sl.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sl.png new file mode 100644 index 00000000..626440a2 Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sl.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sr.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sr.png new file mode 100644 index 00000000..95a8467d Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sr.png differ diff --git a/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.uk.png b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.uk.png new file mode 100644 index 00000000..8a6bdd8e Binary files /dev/null and b/translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.uk.png differ diff --git a/translations/bg/README.md b/translations/bg/README.md new file mode 100644 index 00000000..8b9187d7 --- /dev/null +++ b/translations/bg/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 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 приложения, изградени с помощта на **[Когнитивни услуги](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) от 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) в Microsoft Learn. + +# Съдържание + +| | Връзка към урока | 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) | [Бележник](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) | [Бележник](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`. Те постепенно се локализират. +## Търсим помощ + +Имате ли предложения или сте открили правописни или кодови грешки? Създайте проблем или направете pull request. + +## Специални благодарности + +* **✍️ Основен автор:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Редактор:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Илюстратор на скици:** [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/bg/SECURITY.md b/translations/bg/SECURITY.md new file mode 100644 index 00000000..5cc5b5a9 --- /dev/null +++ b/translations/bg/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 инжекция, cross-site scripting и др.) + * Пълни пътища на изходните файлове, свързани с проявата на проблема + * Местоположението на засегнатия изходен код (таг/клон/комит или директен URL) + * Специална конфигурация, необходима за възпроизвеждане на проблема + * Стъпка по стъпка инструкции за възпроизвеждане на проблема + * Доказателство за концепция или експлойт код (ако е възможно) + * Въздействие на проблема, включително как нападател може да го използва + +Тази информация ще ни помогне да обработим вашия доклад по-бързо. + +Ако докладвате за програма за награди за грешки, по-пълните доклади могат да допринесат за по-висока награда. Моля, посетете нашата [страница за програмата за награди за грешки на Microsoft](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/bg/etc/CODE_OF_CONDUCT.md b/translations/bg/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..e5a6c3e4 --- /dev/null +++ b/translations/bg/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Кодекс за поведение на Microsoft за отворен код + +Този проект е приел [Кодекса за поведение на Microsoft за отворен код](https://opensource.microsoft.com/codeofconduct/). + +Ресурси: + +- [Кодекс за поведение на Microsoft за отворен код](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/bg/etc/CONTRIBUTING.md b/translations/bg/etc/CONTRIBUTING.md new file mode 100644 index 00000000..e26f5050 --- /dev/null +++ b/translations/bg/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# Принос + +Този проект приветства приноси и предложения. Повечето приноси изискват от вас да се съгласите с Лицензионно споразумение за принос (CLA), което декларира, че имате право и наистина предоставяте ни правата да използваме вашия принос. За подробности посетете https://cla.microsoft.com. + +Когато изпратите pull заявка, CLA-бот автоматично ще определи дали трябва да предоставите CLA и ще маркира PR съответно (например, етикет, коментар). Просто следвайте инструкциите, предоставени от бота. Ще трябва да направите това само веднъж за всички хранилища, които използват нашия CLA. + +Този проект е приел [Microsoft Open Source Code of Conduct](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)) +- [ ] Напишете раздел + примери за Разпознаване на именувани обекти +- [ ] Създайте примери за обучение на собствени 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/bg/etc/Mindmap.md b/translations/bg/etc/Mindmap.md new file mode 100644 index 00000000..357fbc4a --- /dev/null +++ b/translations/bg/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# AI + +## [Въведение в AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Дефиниция на AI + - История на AI + - Подходи към AI + - Отгоре-надолу/Символичен + - Отдолу-нагоре/Невронен + - Еволюционен + - Синергетичен / Емергентен AI + - [Microsoft AI Business School](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) + - [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 + - [Основи на AI: Изследване на компютърно зрение](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) + - В MS Learn + - [Основи на AI: Изследване на NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP с PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP с 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) + +## [Етика в AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn за отговорен AI](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/bg/etc/SUPPORT.md b/translations/bg/etc/SUPPORT.md new file mode 100644 index 00000000..0a73dacf --- /dev/null +++ b/translations/bg/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Поддръжка + +## Как да съобщите за проблеми и да получите помощ + +Този проект използва GitHub Issues за проследяване на грешки и заявки за функции. Моля, потърсете съществуващите проблеми, преди да създадете нови, за да избегнете дублиране. За нови проблеми, създайте вашата грешка или заявка за функция като нов проблем. + +За помощ и въпроси относно използването на този проект, използвайте дискусионните табла. + +## Политика за поддръжка на Microsoft + +Поддръжката за този проект е ограничена до изброените по-горе ресурси. + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/etc/TRANSLATIONS.md b/translations/bg/etc/TRANSLATIONS.md new file mode 100644 index 00000000..0cdc9c46 --- /dev/null +++ b/translations/bg/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 + +**БЛАГОДАРИМ ВИ** + +Наистина ценим вашите усилия! + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/etc/quiz-app/README.md b/translations/bg/etc/quiz-app/README.md new file mode 100644 index 00000000..7662d4a9 --- /dev/null +++ b/translations/bg/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. Форкнете 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 +- Основни настройки: Абонамент: Изберете вашия Azure абонамент. +- Група ресурси: Създайте нова група ресурси или използвайте съществуваща. +- Име: Въведете име за вашето статично уеб приложение. +- Регион: Изберете региона, който е най-близо до вашите потребители. + +- #### Подробности за деплойването: +- Източник: Изберете „GitHub“. +- GitHub акаунт: Упълномощете Azure да има достъп до вашия GitHub акаунт. +- Организация: Изберете вашата GitHub организация. +- Хранилище: Изберете хранилището, което съдържа вашето статично уеб приложение. +- Клон: Изберете клона, от който искате да деплойвате. + +- #### Подробности за компилацията: +- Пресети за компилация: Изберете фреймуърка, с който е създадено вашето приложение (например React, Angular, Vue и т.н.). +- Местоположение на приложението: Посочете папката, която съдържа кода на вашето приложение (например /, ако е в основната директория). +- Местоположение на API: Ако имате API, посочете неговото местоположение (по избор). +- Местоположение на изхода: Посочете папката, където се генерира изходът от компилацията (например build или dist). + +4. Преглед и създаване +Прегледайте настройките си и кликнете върху „Create“. Azure ще създаде необходимите ресурси и ще създаде GitHub Actions workflow във вашето хранилище. + +5. GitHub Actions Workflow +Azure автоматично ще създаде GitHub Actions workflow файл във вашето хранилище (.github/workflows/azure-static-web-apps-.yml). Този workflow ще се грижи за процеса на компилация и деплойване. + +6. Наблюдение на деплойването +Отидете в раздела „Actions“ във вашето GitHub хранилище. +Трябва да видите работен процес, който се изпълнява. Този работен процес ще компилира и деплойва вашето статично уеб приложение в Azure. +След като работният процес завърши, вашето приложение ще бъде активно на предоставения Azure URL. + +### Примерен файл за работен процес + +Ето пример за това как може да изглежда GitHub Actions workflow файлът: +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/bg/lessons/0-course-setup/for-teachers.md b/translations/bg/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..6c6a051a --- /dev/null +++ b/translations/bg/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/bg/lessons/0-course-setup/how-to-run.md b/translations/bg/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..bae878be --- /dev/null +++ b/translations/bg/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Как да стартирате кода + +Тази учебна програма съдържа множество изпълними примери и лабораторни упражнения, които вероятно ще искате да стартирате. За да направите това, трябва да имате възможност да изпълнявате Python код в Jupyter Notebooks, предоставени като част от тази учебна програма. Имате няколко опции за стартиране на кода: + +## Стартиране локално на вашия компютър + +За да стартирате кода локално на вашия компютър, трябва да имате инсталирана някаква версия на 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 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). + +> **Забележка**: След като клонирате и отворите директорията във 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/bg/lessons/0-course-setup/setup.md b/translations/bg/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..f482e969 --- /dev/null +++ b/translations/bg/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 посланици](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) + +## Самостоятелно обучение + +Ако искате да преминете курса като проект за самостоятелно обучение, препоръчваме да направите fork на целия репозиторий към вашия 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/#/). Направете fork на този репозиторий, [инсталирайте Docsify](https://docsify.js.org/#/quickstart) на вашия локален компютър и след това в основната папка на този репозиторий въведете `docsify serve`. Уебсайтът ще бъде достъпен на порт 3000 на вашия localhost: `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/bg/lessons/1-Intro/README.md b/translations/bg/lessons/1-Intro/README.md new file mode 100644 index 00000000..f6865a14 --- /dev/null +++ b/translations/bg/lessons/1-Intro/README.md @@ -0,0 +1,163 @@ + +# Въведение в изкуствения интелект + +![Обобщение на съдържанието за въведение в изкуствения интелект в рисунка](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.bg.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.bg.png) + +> Снимка от [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Определянето на възрастта на човек от негова снимка е задача, която не може да бъде изрично програмирана, защото не знаем как точно стигаме до числото в главата си, когато го правим. + +--- + +Има задачи обаче, за които не знаем изрично как да ги решим. Например, определянето на възрастта на човек от негова снимка. Ние някак си се научаваме да го правим, защото сме виждали много примери на хора на различна възраст, но не можем изрично да обясним как го правим, нито можем да програмираме компютър да го прави. Именно този тип задачи са интересни за **Изкуствения интелект** (съкратено ИИ). + +✅ Помислете за някои задачи, които бихте могли да прехвърлите на компютър, който би се възползвал от ИИ. Разгледайте областите на финансите, медицината и изкуствата – как тези области се възползват днес от ИИ? + +## Слаб ИИ срещу Силен ИИ + +Слаб ИИ | Силен ИИ +---------------------------------------|------------------------------------- +Слабият ИИ се отнася до системи, които са проектирани и обучени за конкретна задача или тесен набор от задачи.|Силният ИИ, или Изкуствен Общ Интелект (AGI), се отнася до системи с човешко ниво на интелигентност и разбиране. +Тези системи не са общо интелигентни; те са отлични в изпълнението на предварително дефинирана задача, но нямат истинско разбиране или съзнание.|Тези системи имат способността да изпълняват всяка интелектуална задача, която човек може да направи, да се адаптират към различни области и да притежават форма на съзнание или самосъзнание. +Примери за слаб ИИ включват виртуални асистенти като Siri или Alexa, алгоритми за препоръки, използвани от стрийминг услуги, и чатботове, проектирани за конкретни задачи в обслужването на клиенти.|Постигането на Силен ИИ е дългосрочна цел на изследванията в областта на ИИ и би изисквало разработването на системи, които могат да разсъждават, учат, разбират и се адаптират в широк спектър от задачи и контексти. +Слабият ИИ е силно специализиран и не притежава когнитивни способности, подобни на човешките, или общи способности за решаване на проблеми извън своята тясна област.|Силният ИИ в момента е теоретична концепция и нито една система не е достигнала това ниво на обща интелигентност. + +За повече информация вижте **[Artificial General Intelligence](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## Определение за интелигентност и тестът на Тюринг + +Един от проблемите при работа с термина **[Интелигентност](https://en.wikipedia.org/wiki/Intelligence)** е, че няма ясно определение за него. Може да се твърди, че интелигентността е свързана с **абстрактното мислене** или със **самосъзнанието**, но не можем да я дефинираме точно. + +![Снимка на котка](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.bg.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), интелигентността може да *възникне* от по-просто, реактивно поведение в процеса на *метасистемен преход*. + +* **Еволюционен подход** или **генетичен алгоритъм** е процес на оптимизация, базиран на принципите на еволюцията. + +Ще разгледаме тези подходи по-късно в курса, но засега ще се фокусираме върху двата основни направления: отгоре-надолу и отдолу-нагоре. + +### Подход отгоре-надолу + +При **подхода отгоре-надолу** се опитваме да моделираме нашето разсъждение. Тъй като можем да следваме мислите си, когато разсъждаваме, можем да се опитаме да формализираме този процес и да го програмираме в компютъра. Това се нарича **символично разсъждение**. + +Хората обикновено имат някакви правила в главата си, които ръководят процесите им на вземане на решения. Например, когато лекар диагностицира пациент, той или тя може да осъзнае, че човек има треска и следователно може да има възпаление в тялото. Чрез прилагане на голям набор от правила към конкретен проблем лекарят може да стигне до окончателната диагноза. + +Този подход разчита силно на **представяне на знания** и **разсъждения**. Извличането на знания от човешки експерт може да бъде най-трудната част, защото лекарят в много случаи не знае точно защо стига до определена диагноза. Понякога решението просто изниква в главата му, без изрично мислене. Някои задачи, като определяне на възрастта на човек от снимка, изобщо не могат да бъдат сведени до манипулиране на знания. + +### Подход отдолу-нагоре + +Алтернативно, можем да се опитаме да моделираме най-простите елементи в нашия мозък – невроните. Можем да изградим така наречената **изкуствена невронна мрежа** в компютър и след това да се опитаме да я научим да решава проблеми, като й предоставяме примери. Този процес е подобен на начина, по който новородено дете учи заобикалящата го среда, като прави наблюдения. + +✅ Направете малко проучване за това как бебетата учат. Какви са основните елементи на мозъка на бебето? + +> | А какво ще кажете за машинното обучение? | | +> |--------------|-----------| +> | Част от Изкуствения интелект, която се основава на това компютърът да се научи да решава проблем въз основа на някакви данни, се нарича **Машинно обучение**. Няма да разглеждаме класическото машинно обучение в този курс – насочваме ви към отделната учебна програма [Machine Learning for Beginners](http://aka.ms/ml-beginners). | ![ML за начинаещи](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.bg.png) | + +## Кратка история на ИИ + +Изкуственият интелект започва като област в средата на двадесети век. Първоначално символичното разсъждение е преобладаващ подход и води до редица важни успехи, като експертни системи – компютърни програми, които могат да действат като експерт в някои ограничени области на проблеми. Въпреки това скоро става ясно, че този подход не се мащабира добре. Извличането на знания от експерт, представянето им в компютър и поддържането на тази база от знания актуална се оказва много сложна задача и твърде скъпа, за да бъде практична в много случаи. Това води до така наречената [Зима на ИИ](https://en.wikipedia.org/wiki/AI_winter) през 70-те години. + +> Снимка от [Дмитрий Сошников](http://soshnikov.com) + +С течение на времето изчислителните ресурси стават по-евтини, а данните – по-достъпни, което позволява подходите с невронни мрежи да демонстрират отлична производителност в конкуренция с хора в много области, като компютърно зрение или разпознаване на реч. През последното десетилетие терминът Изкуствен интелект се използва предимно като синоним на невронни мрежи, защото повечето успехи на ИИ, за които чуваме, се основават на тях. + +Можем да наблюдаваме как подходите се променят, например при създаването на компютърна програма за игра на шах: + +* Ранните шахматни програми се основават на търсене – програмата изрично се опитва да оцени възможните ходове на противника за даден брой следващи ходове и избира оптимален ход въз основа на най-добрата позиция, която може да бъде постигната след няколко хода. Това води до разработването на така наречения алгоритъм за търсене [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Стратегиите за търсене работят добре към края на играта, където пространството за търсене е ограничено от малък брой възможни ходове. Въпреки това, в началото на играта пространството за търсене е огромно и алгоритъмът може да бъде подобрен чрез учене от съществуващи мачове между човешки играчи. Последващите експерименти използват така нареченото [case-based reasoning](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, са хибридни системи, които използват невронни мрежи за преобразуване на реч в текст и разпознаване на намерението ни, а след това прилагат някакво разсъждение или изрични алгоритми за изпълнение на необходимите действия. +* В бъдеще можем да очакваме + +> Снимка от Дмитрий Сошников, [снимка](https://unsplash.com/photos/r8LmVbUKgns) от [Марина Абросимова](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Последни изследвания в областта на изкуствения интелект + +Огромният ръст в изследванията на невронните мрежи започна около 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 година [Конволюционни невронни мрежи](../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) + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/lessons/1-Intro/assignment.md b/translations/bg/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..2e342616 --- /dev/null +++ b/translations/bg/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Игрите са област, която е силно повлияна от развитието на 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/bg/lessons/2-Symbolic/README.md b/translations/bg/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..f1116441 --- /dev/null +++ b/translations/bg/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Представяне на знания и експертни системи + +![Обобщение на съдържанието за символен ИИ](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.bg.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). Тя съдържа следните концепции: + +* **Данни** са нещо, представено на физически носител, като писмен текст или изговорени думи. Данните съществуват независимо от хората и могат да се предават между тях. +* **Информация** е начинът, по който интерпретираме данните в нашата глава. Например, когато чуем думата *компютър*, имаме някакво разбиране за това какво е. +* **Знания** са информация, интегрирана в нашия модел на света. Например, след като научим какво е компютър, започваме да имаме идеи за това как работи, колко струва и за какво може да се използва. Тази мрежа от взаимосвързани концепции формира нашите знания. +* **Мъдрост** е още едно ниво на нашето разбиране за света и представлява *мета-знания*, например някакво понятие за това как и кога трябва да се използват знанията. + +*Изображение [от Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), от Longlivetheux - Собствена работа, CC BY-SA 4.0* + +Така проблемът с **представянето на знания** е да се намери ефективен начин за представяне на знанията в компютър под формата на данни, за да могат да се използват автоматично. Това може да се разглежда като спектър: + +![Спектър на представяне на знания](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.bg.png) + +> Изображение от [Dmitry Soshnikov](http://soshnikov.com) + +* Вляво са много прости типове представяне на знания, които могат да се използват ефективно от компютри. Най-простият е алгоритмичният, когато знанията се представят чрез компютърна програма. Това обаче не е най-добрият начин за представяне на знания, защото не е гъвкав. Знанията в нашата глава често не са алгоритмични. +* Вдясно са представяния като естествен текст. Това е най-мощното, но не може да се използва за автоматично разсъждение. + +> ✅ Помислете за момент как представяте знанията в главата си и ги преобразувате в бележки. Има ли определен формат, който работи добре за вас, за да подпомогне запаметяването? + +## Класификация на компютърните представяния на знания + +Можем да класифицираме различните методи за представяне на знания в компютър в следните категории: + +* **Мрежови представяния** се основават на факта, че в нашата глава имаме мрежа от взаимосвързани концепции. Можем да се опитаме да възпроизведем същите мрежи като граф вътре в компютър - така наречената **семантична мрежа**. + +1. **Тройките обект-атрибут-стойност** или **двойки атрибут-стойност**. Тъй като графът може да бъде представен в компютър като списък от възли и ръбове, можем да представим семантична мрежа чрез списък от тройки, съдържащи обекти, атрибути и стойности. Например, можем да изградим следните тройки за програмни езици: + +Обект | Атрибут | Стойност +-------|-----------|------ +Python | е | Език без типизация +Python | създаден от | Гуидо ван Росум +Python | синтаксис на блокове | отстъп +Език без типизация | няма | дефиниции на типове + +> ✅ Помислете как тройките могат да се използват за представяне на други видове знания. + +2. **Йерархични представяния** подчертават факта, че често създаваме йерархия от обекти в нашата глава. Например, знаем, че канарчето е птица и всички птици имат крила. Също така имаме представа за това какъв цвят обикновено е канарчето и каква е неговата скорост на полет. + + - **Представяне чрез рамки** се основава на представянето на всеки обект или клас обекти като **рамка**, която съдържа **слотове**. Слотовете имат възможни стойности по подразбиране, ограничения на стойностите или съхранени процедури, които могат да бъдат извикани за получаване на стойността на слот. Всички рамки формират йерархия, подобна на йерархията на обекти в обектно-ориентираните програмни езици. + - **Сценарии** са специален вид рамки, които представляват сложни ситуации, които могат да се развиват във времето. + +**Python** + +Слот | Стойност | Стойност по подразбиране | Интервал | +-----|-------|---------------|----------| +Име | Python | | | +Език е | Език без типизация | | | +Формат на променливите | | CamelCase | | +Дължина на програмата | | | 5-5000 реда | +Синтаксис на блокове | Отстъп | | | + +3. **Процедурни представяния** се основават на представяне на знания чрез списък от действия, които могат да се изпълняват при настъпване на определено условие. + - Правилата за производство са if-then изявления, които ни позволяват да правим заключения. Например, лекар може да има правило, което гласи, че **АКО** пациентът има висока температура **ИЛИ** високо ниво на С-реактивен протеин в кръвния тест **ТОГАВА** той има възпаление. След като срещнем едно от условията, можем да направим заключение за възпаление и след това да го използваме в по-нататъшни разсъждения. + - Алгоритмите могат да се считат за друга форма на процедурно представяне, въпреки че почти никога не се използват директно в системи, базирани на знания. + +4. **Логика** първоначално е предложена от Аристотел като начин за представяне на универсални човешки знания. + - Предикатната логика като математическа теория е твърде богата, за да бъде изчислима, затова обикновено се използва някакво нейно подмножество, като например клаузите на Хорн, използвани в Prolog. + - Описателната логика е семейство от логически системи, използвани за представяне и разсъждение за йерархии от обекти и разпределени представяния на знания като *семантичната мрежа*. + +## Експертни системи + +Един от ранните успехи на символния ИИ са така наречените **експертни системи** - компютърни системи, проектирани да действат като експерт в ограничена проблемна област. Те се основават на **база от знания**, извлечена от един или повече човешки експерти, и съдържат **инференционен механизъм**, който извършва разсъждения върху нея. + +![Човешка архитектура](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.bg.png) | ![Система, базирана на знания](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.bg.png) +---------------------------------------------|------------------------------------------------ +Опростена структура на човешката нервна система | Архитектура на система, базирана на знания + +Експертните системи са изградени подобно на човешката система за разсъждение, която съдържа **краткосрочна памет** и **дългосрочна памет**. По същия начин, в системите, базирани на знания, разграничаваме следните компоненти: + +* **Памет за проблема**: съдържа знания за текущо решавания проблем, напр. температурата или кръвното налягане на пациент, дали има възпаление и т.н. Тези знания също се наричат **статични знания**, защото съдържат моментна снимка на това, което знаем за проблема - така нареченото *състояние на проблема*. +* **База от знания**: представлява дългосрочни знания за проблемната област. Те се извличат ръчно от човешки експерти и не се променят от консултация до консултация. Тъй като ни позволяват да навигираме от едно състояние на проблема към друго, те също се наричат **динамични знания**. +* **Инференционен механизъм**: координира целия процес на търсене в пространството на състоянията на проблема, задава въпроси на потребителя, когато е необходимо. Той също така е отговорен за намирането на правилните правила, които да се приложат към всяко състояние. + +Като пример, нека разгледаме следната експертна система за определяне на животно въз основа на неговите физически характеристики: + +![AND-OR дърво](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.bg.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+. В даден момент правилата стават твърде сложни, за да ги държите всички в ума си, и тогава може да започнете да се чудите защо системата взема определени решения. Въпреки това, важна характеристика на базираните на знания системи е, че винаги можете *да обясните* точно как е било взето което и да е от решенията. +## Онтологии и Семантичната мрежа + +В края на 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/) е колекция от машинно четими бази знания, свързани с Wikipedia. Повечето от данните са извлечени от *InfoBoxes* на Wikipedia, части от структурирано съдържание в страниците на Wikipedia. Можете да [запитвате](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/). Изтеглете го или го използвайте онлайн. + + + +*Уеб редакторът Protégé, отворен с онтологията на семейство Романови. Екранна снимка от Дмитрий Сошников* + +## ✍️ Упражнение: Семейна онтология + +Вижте [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) за пример за използване на техники от Семантичната мрежа за разсъждение върху семейни взаимоотношения. Ще вземем родословно дърво, представено в общия формат GEDCOM, и онтология на семейните взаимоотношения, за да изградим граф на всички семейни връзки за даден набор от индивиди. + +## Microsoft Concept Graph + +В повечето случаи онтологиите се създават внимателно на ръка. Въпреки това, също така е възможно да се **извличат** онтологии от неструктурирани данни, например от текстове на естествен език. + +Един такъв опит беше направен от 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 за групиране на новинарски статии в няколко категории. + +## Заключение + +Днес 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/bg/lessons/2-Symbolic/assignment.md b/translations/bg/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..3f18d154 --- /dev/null +++ b/translations/bg/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/bg/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/bg/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..c5914f4d --- /dev/null +++ b/translations/bg/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Въведение в невронните мрежи: Перцептрон + +## [Тест преди лекцията](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Един от първите опити за създаване на нещо подобно на съвременна невронна мрежа е направен от Франк Розенблат от Корнелската аеронавтична лаборатория през 1957 г. Това е хардуерна реализация, наречена "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 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/bg/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/bg/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..4b5644d3 --- /dev/null +++ b/translations/bg/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/bg/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/bg/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..097daf98 --- /dev/null +++ b/translations/bg/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'. + +изчислителен граф + +> 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/bg/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/bg/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..37584ff0 --- /dev/null +++ b/translations/bg/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, използвайки перцептрон с 1, 2 и 3 слоя. Използвайте рамката за невронни мрежи, която разработихме в урока. + +## Начален Notebook + +Започнете лабораторното упражнение, като отворите [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/bg/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/bg/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..a7d356a0 --- /dev/null +++ b/translations/bg/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Фреймворкове за невронни мрежи + +Както вече научихме, за да можем ефективно да обучаваме невронни мрежи, трябва да направим две неща: + +* Да работим с тензори, например да умножаваме, събираме и изчисляваме функции като сигмоид или 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 за оптимизация. И двата API използват едни и същи основни концепции и са проектирани да работят добре заедно. + +## Обучение + +В този курс предлагаме повечето съдържание както за PyTorch, така и за TensorFlow. Можете да изберете предпочитания от вас фреймворк и да преминете само през съответните тетрадки. Ако не сте сигурни кой фреймворк да изберете, прочетете някои дискусии в интернет относно **PyTorch vs. TensorFlow**. Можете също така да разгледате и двата фреймворка, за да получите по-добро разбиране. + +Където е възможно, ще използваме високо ниво API за простота. Въпреки това, смятаме, че е важно да разберете как работят невронните мрежи от основата, затова в началото започваме с работа с ниско ниво API и тензори. Ако обаче искате да започнете бързо и не искате да отделяте много време за изучаване на тези детайли, можете да пропуснете тези части и да преминете директно към тетрадките с високо ниво API. + +## ✍️ Упражнения: Фреймворкове + +Продължете обучението си в следните тетрадки: + +Ниско ниво 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* + +След като овладеете фреймворковете, нека преговорим концепцията за overfitting. + +# Overfitting + +Overfitting е изключително важна концепция в машинното обучение и е много важно да я разберем правилно! + +Разгледайте следния проблем с апроксимация на 5 точки (представени с `x` на графиките по-долу): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.bg.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.bg.jpg) +-------------------------|-------------------------- +**Линеен модел, 2 параметъра** | **Нелинеен модел, 7 параметъра** +Грешка при обучение = 5.3 | Грешка при обучение = 0 +Грешка при валидация = 5.1 | Грешка при валидация = 20 + +* Вляво виждаме добра апроксимация с права линия. Тъй като броят на параметрите е адекватен, моделът улавя правилно разпределението на точките. +* Вдясно моделът е твърде мощен. Тъй като имаме само 5 точки, а моделът има 7 параметъра, той може да се настрои така, че да премине през всички точки, като прави грешката при обучение 0. Това обаче пречи на модела да разбере правилния модел в данните, което води до висока грешка при валидация. + +Много е важно да се намери правилният баланс между сложността на модела (броя на параметрите) и броя на обучителните примери. + +## Защо възниква overfitting + + * Недостатъчно обучителни данни + * Твърде мощен модел + * Твърде много шум в данните + +## Как да открием overfitting + +Както се вижда от графиката по-горе, overfitting може да се открие чрез много ниска грешка при обучение и висока грешка при валидация. Обикновено по време на обучението ще видим как и грешката при обучение, и грешката при валидация започват да намаляват, но в даден момент грешката при валидация може да спре да намалява и да започне да се увеличава. Това ще бъде знак за overfitting и индикатор, че вероятно трябва да спрем обучението на този етап (или поне да направим моментна снимка на модела). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.bg.png) + +## Как да предотвратим overfitting + +Ако забележите, че възниква overfitting, можете да направите едно от следните: + + * Увеличете количеството обучителни данни + * Намалете сложността на модела + * Използвайте някаква [техника за регуляризация](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), като например [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), която ще разгледаме по-късно. + +## Overfitting и компромисът между пристрастие и вариация + +Overfitting всъщност е случай на по-общ проблем в статистиката, наречен [компромис между пристрастие и вариация](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Ако разгледаме възможните източници на грешка в нашия модел, можем да видим два типа грешки: + +* **Грешки от пристрастие** възникват, когато алгоритъмът ни не може правилно да улови връзката между обучителните данни. Това може да се дължи на факта, че моделът ни не е достатъчно мощен (**underfitting**). +* **Грешки от вариация**, които възникват, когато моделът апроксимира шума в данните вместо смислените връзки (**overfitting**). + +По време на обучението грешките от пристрастие намаляват (тъй като моделът ни се учи да апроксимира данните), а грешките от вариация се увеличават. Важно е да спрем обучението - или ръчно (когато открием overfitting), или автоматично (чрез въвеждане на регуляризация) - за да предотвратим overfitting. + +## Заключение + +В този урок научихте за разликите между различните API за двата най-популярни AI фреймворка, TensorFlow и PyTorch. Освен това научихте за една много важна тема - overfitting. + +## 🚀 Предизвикателство + +В придружаващите тетрадки ще намерите 'задачи' в края; преминете през тетрадките и изпълнете задачите. + +## [Тест след лекцията](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Преглед и самостоятелно обучение + +Направете проучване по следните теми: + +- TensorFlow +- PyTorch +- Overfitting + +Задайте си следните въпроси: + +- Каква е разликата между TensorFlow и PyTorch? +- Каква е разликата между overfitting и underfitting? + +## [Задание](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/bg/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/bg/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..cf5928a5 --- /dev/null +++ b/translations/bg/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)** - пример за задача с таблични входни данни, която може да бъде решена с класически машинен обучителен подход. Вашата цел е да класифицирате ирисите в 3 класа, базирайки се на 4 числови параметъра. +1. **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/bg/lessons/3-NeuralNetworks/README.md b/translations/bg/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..22ebd40a --- /dev/null +++ b/translations/bg/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Въведение в невронните мрежи + +![Обобщение на съдържанието за въведение в невронните мрежи в рисунка](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.bg.png) + +Както обсъдихме във въведението, един от начините за постигане на интелигентност е чрез обучение на **компютърен модел** или **изкуствен мозък**. От средата на 20-ти век изследователите опитват различни математически модели, докато през последните години този подход не се оказа изключително успешен. Тези математически модели на мозъка се наричат **невронни мрежи**. + +> Понякога невронните мрежи се наричат *Изкуствени невронни мрежи* или ANNs, за да се подчертае, че става въпрос за модели, а не за реални мрежи от неврони. + +## Машинно обучение + +Невронните мрежи са част от по-голяма дисциплина, наречена **Машинно обучение**, чиято цел е да използва данни за обучение на компютърни модели, способни да решават проблеми. Машинното обучение представлява голяма част от Изкуствения интелект, но в тази учебна програма няма да разглеждаме класическо машинно обучение. + +> Посетете нашата отделна учебна програма **[Машинно обучение за начинаещи](http://github.com/microsoft/ml-for-beginners)**, за да научите повече за класическото машинно обучение. + +В машинното обучение приемаме, че разполагаме с някакъв набор от примери **X** и съответстващи изходни стойности **Y**. Примерите често са N-измерни вектори, състоящи се от **характеристики**, а изходите се наричат **етикети**. + +Ще разгледаме двата най-често срещани проблема в машинното обучение: + +* **Класификация**, при която трябва да класифицираме входен обект в две или повече категории. +* **Регресия**, при която трябва да предскажем числова стойност за всеки от входните примери. + +> Когато представяме входовете и изходите като тензори, входният набор от данни е матрица с размер M×N, където M е броят на примерите, а N е броят на характеристиките. Изходните етикети Y са вектор с размер M. + +В тази учебна програма ще се фокусираме само върху модели на невронни мрежи. + +## Модел на неврон + +От биологията знаем, че нашият мозък се състои от невронни клетки, всяка от които има множество "входове" (аксони) и един изход (дендрит). Аксоните и дендритите могат да провеждат електрически сигнали, а връзките между тях могат да имат различна степен на проводимост (контролирана от невромедиатори). + +![Модел на неврон](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.bg.jpg) | ![Модел на неврон](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.bg.png) +----|---- +Реален неврон *([Изображение](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) от Wikipedia)* | Изкуствен неврон *(Изображение от автора)* + +Следователно, най-простият математически модел на неврон съдържа няколко входа 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) от Уорън МакКълок и Уолтър Питс през 1943 г. Доналд Хеб в своята книга "[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/bg/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/bg/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..e7fcd57c --- /dev/null +++ b/translations/bg/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++. Можете също така да използвате OpenCV от Python. + +Добро място за изучаване на OpenCV е [този курс за 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)` +* Промяна на **яркостта и контраста** на изображението чрез манипулации с 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 точки в изображението. Например, ако направите снимка на правоъгълен документ с камера на смартфон под някакъв ъгъл и искате да получите правоъгълно изображение на самия документ. +* Разбиране на движението в изображението чрез използване на **[оптичен поток](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.bg.jpeg) | ![Предварително обработено брайлово изображение](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.bg.png) | ![Брайлови символи](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.bg.png) +----|-----|----- + +> Изображение от [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Откриване на движение във видео чрез разлика между кадри**. Ако камерата е фиксирана, тогава кадрите от видео потока трябва да са доста сходни един с друг. Тъй като кадрите се представят като масиви, просто чрез изваждане на тези масиви за два последователни кадъра ще получим разликата в пикселите, която трябва да е малка за статични кадри и да стане по-голяма, когато има значително движение в изображението. + +![Изображение на видео кадри и разлики между кадри](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.bg.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.bg.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/bg/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/bg/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..b5a3a427 --- /dev/null +++ b/translations/bg/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Откриване на движения с помощта на Optical Flow + +Задача от [Учебната програма за начинаещи в AI](https://aka.ms/ai-beginners). + +## Задача + +Разгледайте [това видео](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), в което дланта на човек се движи наляво/надясно/нагоре/надолу на стабилен фон. + +**Вашата цел** е да използвате Optical Flow, за да определите кои части от видеото съдържат движения нагоре/надолу/наляво/надясно. + +**Допълнителна цел** би била да проследите движението на дланта/пръста, използвайки тон на кожата, както е описано [в тази публикация в блог](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) или [тук](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Начален Notebook + +Започнете задачата, като отворите [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/bg/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/bg/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..f59d1d87 --- /dev/null +++ b/translations/bg/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Добре познати архитектури на CNN + +### VGG-16 + +VGG-16 е мрежа, която постигна 92.7% точност в класификацията на ImageNet top-5 през 2014 година. Тя има следната структура на слоевете: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bg.jpg) + +Както можете да видите, VGG следва традиционна пирамидална архитектура, която представлява последователност от слоеве за свиване и пулуване. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bg.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). + +## Заключение + +В този модул научихте основната концепция зад невронните мрежи за компютърно зрение - свиващите мрежи. Реалните архитектури, които захранват класификацията на изображения, откриването на обекти и дори генерирането на изображения, са базирани на 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/bg/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/bg/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..7bdf4f24 --- /dev/null +++ b/translations/bg/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.bg.png) | ![Филтър за хоризонтални ръбове](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.bg.png) +----|---- + +> Изображение от Дмитрий Сошников + +Например, ако приложим 3x3 филтри за вертикални и хоризонтални ръбове към цифрите от MNIST, можем да получим акценти (например високи стойности) там, където има вертикални и хоризонтални ръбове в оригиналното изображение. Така тези два филтъра могат да се използват за "търсене" на ръбове. По същия начин можем да проектираме различни филтри, за да търсим други нискоуровневи модели: + +> Изображение на [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Въпреки това, докато можем ръчно да проектираме филтри за извличане на определени модели, можем също така да проектираме мрежата така, че тя да научава моделите автоматично. Това е една от основните идеи зад CNN. + +## Основни идеи зад CNN + +Работата на CNN се основава на следните важни идеи: + +* Конволюционните филтри могат да извличат модели +* Можем да проектираме мрежата така, че филтрите да се обучават автоматично +* Можем да използваме същия подход, за да намираме модели в характеристики на високо ниво, а не само в оригиналното изображение. Така извличането на характеристики в CNN работи на йерархия от характеристики, започвайки от нискоуровневи комбинации от пиксели до по-високо ниво комбинации от части на изображението. + +![Йерархично извличане на характеристики](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.bg.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, мрежа, която постигна 92.7% точност в класификацията на ImageNet в топ-5 през 2014 г.: + +![Слоеве на ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.bg.jpg) + +![Пирамида на ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.bg.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/bg/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/bg/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..07f412ed --- /dev/null +++ b/translations/bg/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.bg.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/bg/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/bg/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..887fd545 --- /dev/null +++ b/translations/bg/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](../07-ConvNets/CNN_Architectures.md) от предишния урок. По-специално, може да обмислите използването на някои от следните: + +* **VGG-16/VGG-19**, които са сравнително прости модели, но все пак дават добра точност. Често използването на VGG като първи опит е добър избор, за да видите как работи трансферното обучение. +* **ResNet** е семейство модели, предложени от Microsoft Research през 2015 г. Те имат повече слоеве и следователно изискват повече ресурси. +* **MobileNet** е семейство модели с намален размер, подходящи за мобилни устройства. Използвайте ги, ако разполагате с ограничени ресурси и можете да жертвате малко точност. + +Ето примерни характеристики, извлечени от снимка на котка от мрежата VGG-16: + +![Характеристики, извлечени от VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.bg.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.bg.png) + +Ако направим това, ще получим нещо много подобно на случаен шум. Това е така, защото *има много начини да накараме мрежата да мисли, че входното изображение е котка*, включително такива, които визуално нямат смисъл. Въпреки че тези изображения съдържат много модели, типични за котка, няма нищо, което да ги ограничава да бъдат визуално разпознаваеми. + +За да подобрим резултата, можем да добавим друг термин към функцията за загуба, наречен **загуба на вариация**. Това е метрика, която показва колко сходни са съседните пиксели на изображението. Минимизирането на загубата на вариация прави изображението по-гладко и премахва шума, разкривайки по-визуално привлекателни модели. Ето пример за такива "идеални" изображения, които се класифицират като котка и като зебра с висока вероятност: + +![Идеална котка](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.bg.png) | ![Идеална зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.bg.png) +-----|----- + *Идеална котка* | *Идеална зебра* + +Подобен подход може да се използва за извършване на така наречените **враждебни атаки** върху невронна мрежа. Да предположим, че искаме да заблудим невронната мрежа и да накараме куче да изглежда като котка. Ако вземем изображение на куче, което мрежата разпознава като куче, можем да го коригираме малко чрез оптимизация с градиентен спуск, докато мрежата започне да го класифицира като котка: + +![Снимка на куче](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.bg.png) | ![Снимка на куче, класифицирано като котка](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.bg.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/bg/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/bg/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..6c323acc --- /dev/null +++ b/translations/bg/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)** гарантира, че за входове със средна стойност 0 и стандартно отклонение 1, същата средна стойност/стандартно отклонение ще остане + * **N(0,√2/(n_in+n_out))** -- така наречената **Xavier инициализация** (`glorot`), която помага да се запазят сигналите в диапазона както при предно, така и при обратно разпространение + +## Нормализация на партиди + +Дори с правилна инициализация на теглата, те могат да станат произволно големи или малки по време на обучението, което ще изведе сигналите извън правилния диапазон. Можем да върнем сигналите обратно, като използваме една от техниките за **нормализация**. Въпреки че има няколко такива (нормализация на тегла, нормализация на слоеве), най-често използваната е нормализация на партиди. + +Идеята на **нормализацията на партиди** е да се вземат предвид всички стойности в минипартидата и да се извърши нормализация (т.е. изваждане на средната стойност и делене на стандартното отклонение) въз основа на тези стойности. Тя се реализира като слой в мрежата, който извършва тази нормализация след прилагането на теглата, но преди функцията за активация. В резултат, вероятно ще видим по-висока крайна точност и по-бързо обучение. + +Ето [оригиналната статия](https://arxiv.org/pdf/1502.03167.pdf) за нормализация на партиди, [обяснението в Wikipedia](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 върху обучението на класификатор за цифри MNIST в [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) тетрадка. Тя ускорява обучението и ни позволява да постигнем по-висока точност за по-малко епохи. + +Този ефект може да се обясни по няколко начина: + + * Може да се разглежда като случаен шоков фактор за модела, който го извежда от локалния минимум + * Може да се разглежда като *имплицитно усредняване на модела*, защото можем да кажем, че по време на 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/bg/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/bg/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..b1e077df --- /dev/null +++ b/translations/bg/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/bg/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/bg/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..3ceedf6a --- /dev/null +++ b/translations/bg/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.bg.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) на Исак Дайкман + +Вариационните автоенкодери използват сложна функция за загуба, която се състои от две части: + +* **Загуба от възстановяване** е функцията за загуба, която показва колко близко е възстановеното изображение до целевото (може да бъде Mean Squared Error или MSE). Това е същата функция за загуба като при нормалните автоенкодери. +* **KL загуба**, която гарантира, че разпределението на латентните променливи остава близко до нормалното разпределение. Тя се основава на понятието за [дивергенция на Кълбак-Лайблер](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - метрика за оценка на сходството между две статистически разпределения. + +Едно важно предимство на VAE е, че те ни позволяват да генерираме нови изображения сравнително лесно, защото знаем от кое разпределение да извличаме латентни вектори. Например, ако обучим VAE с 2D латентен вектор върху MNIST, можем след това да променяме компонентите на латентния вектор, за да получим различни цифри: + +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/bg/lessons/4-ComputerVision/10-GANs/README.md b/translations/bg/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..76bc3da3 --- /dev/null +++ b/translations/bg/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) + +Конволюционният дискриминатор се състои от следните слоеве: няколко конволюции+пулинги (с намаляващ пространствен размер) и един или повече напълно свързани слоеве за получаване на "вектор на характеристиките", финален бинарен класификатор. + +> ✅ "Пулинг" в този контекст е техника, която намалява размера на изображението. "Пулинг слоевете намаляват размерите на данните, като комбинират изходите на клъстери от неврони в един слой в един неврон в следващия слой." - [източник](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 Notebook в TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook в PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Проблеми с обучението на GAN + +GANs са известни с това, че са особено трудни за обучение. Ето някои проблеми: + +* **Колапс на режима**. С този термин имаме предвид, че генераторът се научава да произвежда едно успешно изображение, което заблуждава дискриминатора, вместо разнообразие от различни изображения. +* **Чувствителност към хиперпараметри**. Често може да се види, че GAN изобщо не се конвергира, а след това внезапно намаляване на скоростта на обучение води до конвергенция. +* Поддържане на **баланс** между генератора и дискриминатора. В много случаи загубата на дискриминатора може да спадне до нула сравнително бързо, което води до невъзможност на генератора да продължи обучението. За да се преодолее това, можем да опитаме да зададем различни скорости на обучение за генератора и дискриминатора или да пропуснем обучението на дискриминатора, ако загубата вече е твърде ниска. +* Обучение за **висока резолюция**. Отразявайки същия проблем като при автокодировачите, този проблем се предизвиква, защото реконструирането на твърде много слоеве на конволюционната мрежа води до артефакти. Този проблем обикновено се решава с така нареченото **прогресивно нарастване**, когато първо няколко слоя се обучават върху изображения с ниска резолюция, а след това слоевете се "отблокират" или добавят. Друго решение би било добавянето на допълнителни връзки между слоевете и обучението на няколко резолюции едновременно - вижте тази [Multi-Scale Gradient GANs статия](https://arxiv.org/abs/1903.06048) за подробности. + +## Прехвърляне на стил + +GANs са чудесен начин за генериране на артистични изображения. Друга интересна техника е така нареченото **прехвърляне на стил**, което взема едно **съдържателно изображение** и го прерисува в различен стил, прилагайки филтри от **стилово изображение**. + +Как работи това: +* Започваме с произволно шумово изображение (или със съдържателно изображение, но за целите на разбирането е по-лесно да започнем с произволен шум). +* Нашата цел е да създадем такова изображение, което да бъде близко както до съдържателното изображение, така и до стиловото изображение. Това се определя от две функции за загуба: + - **Загуба на съдържание** се изчислява въз основа на характеристиките, извлечени от CNN на някои слоеве от текущото изображение и съдържателното изображение. + - **Загуба на стил** се изчислява между текущото изображение и стиловото изображение по интелигентен начин, използвайки матрици на Грам (повече подробности в [примерния notebook](../../../../../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 и как да ги обучавате. Също така научихте за специалните предизвикателства, пред които този тип невронни мрежи може да се изправи, и някои стратегии за преодоляването им. + +## 🚀 Предизвикателство + +Прегледайте [Style Transfer notebook](../../../../../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/) + +## Задание + +Прегледайте един от двата notebook-а, свързани с този урок, и обучете GAN върху свои собствени изображения. Какво можете да създадете? + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/bg/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..c878e41e --- /dev/null +++ b/translations/bg/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.bg.png) + +> Изображение от [уебсайта на YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Наивен подход към разпознаването на обекти + +Да предположим, че искаме да намерим котка на снимка. Един много наивен подход към разпознаването на обекти би бил следният: + +1. Разделяме снимката на множество малки части. +2. Извършваме класификация на изображения върху всяка част. +3. Тези части, които водят до достатъчно висока активация, могат да се считат за съдържащи търсения обект. + +![Наивно разпознаване на обекти](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.bg.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.bg.jpg) + +## Метрики за разпознаване на обекти + +### Пресечна площ спрямо обединение (Intersection over Union) + +Докато за класификация на изображения е лесно да се измери колко добре се представя алгоритъмът, за разпознаване на обекти трябва да измерим както коректността на класа, така и прецизността на местоположението на предвидената рамка. За последното използваме така наречената **Пресечна площ спрямо обединение** (IoU), която измерва колко добре се припокриват две рамки (или две произволни области). + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.bg.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), за да генерира йерархична структура на региони от интерес, които след това преминават през CNN екстрактори на характеристики и SVM-класификатори, за да определят класа на обекта, и линейна регресия, за да определят координатите на *рамката*. [Официална статия](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.bg.png) + +> *Изображение от van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.bg.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.bg.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.bg.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.bg.png) + +> Изображение от [официалната статия](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO е алгоритъм за разпознаване в реално време с едно преминаване. Основната идея е следната: + + * Изображението се разделя на $S\times S$ региони. + * За всеки регион **CNN** предсказва $n$ възможни обекти, координати на *рамката* и *увереност*=*вероятност* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.bg.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 (Single Shot Detector): [официална статия](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/) +* [Имплементация на Faster R-CNN в Python за разпознаване на обекти](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/bg/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/bg/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..8473ac4d --- /dev/null +++ b/translations/bg/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Откриване на глави с помощта на Hollywood Heads Dataset + +Лабораторно упражнение от [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/bg/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/bg/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..f72a1335 --- /dev/null +++ b/translations/bg/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) + +В тази лабораторна работа опитайте **сегментация на човешко тяло** с помощта на [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/bg/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/bg/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..1f5d9a84 --- /dev/null +++ b/translations/bg/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Сегментация на човешко тяло + +Лабораторно упражнение от [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Задача + +При видео продукция, например прогнози за времето, често се налага да изрежем изображение на човек от камерата и да го поставим върху друг кадър. Това обикновено се прави с помощта на техники като **chroma key**, когато човек е заснет пред едноцветен фон, който след това се премахва. В тази лаборатория ще обучим модел на невронна мрежа, за да изрязва силуета на човека. + +## Датасетът + +Ще използваме [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) от Kaggle. Изтеглете датасета ръчно от Kaggle. + +## Начален Notebook + +Започнете лабораторията, като отворите [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/bg/lessons/4-ComputerVision/README.md b/translations/bg/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..07057d1d --- /dev/null +++ b/translations/bg/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Компютърно зрение + +![Обобщение на съдържанието за компютърно зрение в рисунка](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.bg.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/bg/lessons/5-NLP/13-TextRep/README.md b/translations/bg/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..1ba64177 --- /dev/null +++ b/translations/bg/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. Company Wins Grant to Study Peptides (AP) +* Текст: AP - Компания, основана от изследовател по химия в Университета на Луисвил, спечели грант за разработване на... + +Нашата цел ще бъде да класифицираме новината в една от категориите въз основа на текста. + +## Представяне на текст + +Ако искаме да решаваме задачи по обработка на естествен език (NLP) с невронни мрежи, трябва да намерим начин да представим текста като тензори. Компютрите вече представят текстовите символи като числа, които съответстват на шрифтове на екрана ви, използвайки кодировки като ASCII или UTF-8. + +Изображение, показващо диаграма за преобразуване на символ в ASCII и двоично представяне + +> [Източник на изображението](https://www.seobility.net/en/wiki/ASCII) + +Като хора, ние разбираме какво **представлява** всяка буква и как всички символи се съчетават, за да образуват думите в едно изречение. Въпреки това, компютрите сами по себе си нямат такова разбиране, и невронната мрежа трябва да научи значението по време на обучението. + +Затова можем да използваме различни подходи за представяне на текст: + +* **Представяне на ниво символи**, при което представяме текста, като третираме всеки символ като число. Ако имаме *C* различни символи в нашия текстов корпус, думата *Hello* ще бъде представена като тензор с размер 5x*C*. Всеки символ ще съответства на колона в тензора при one-hot кодиране. +* **Представяне на ниво думи**, при което създаваме **речник** на всички думи в текста и след това представяме думите чрез one-hot кодиране. Този подход е донякъде по-добър, защото всяка буква сама по себе си няма голямо значение, и така чрез използване на по-високо ниво семантични концепции - думи - опростяваме задачата за невронната мрежа. Въпреки това, поради големия размер на речника, трябва да се справяме с високодименсионални разредени тензори. + +Независимо от представянето, първо трябва да преобразуваме текста в последователност от **токени**, като един токен може да бъде символ, дума или дори част от дума. След това преобразуваме токена в число, обикновено използвайки **речник**, и това число може да бъде подадено в невронна мрежа чрез one-hot кодиране. + +## N-грамове + +В естествения език точният смисъл на думите може да бъде определен само в контекст. Например, значенията на *невронна мрежа* и *рибарска мрежа* са напълно различни. Един от начините да вземем това предвид е да изградим модела си върху двойки думи, като разглеждаме двойките думи като отделни токени в речника. По този начин изречението *Обичам да ходя на риболов* ще бъде представено чрез следната последователност от токени: *Обичам да*, *да ходя*, *ходя на*, *на риболов*. Проблемът с този подход е, че размерът на речника нараства значително, а комбинации като *на риболов* и *на пазар* се представят чрез различни токени, които не споделят никаква семантична прилика, въпреки че съдържат един и същ глагол. + +В някои случаи можем да разгледаме използването на триграми - комбинации от три думи - също. Затова този подход често се нарича **n-грамове**. Също така има смисъл да използваме n-грамове с представяне на ниво символи, при което n-грамовете ще съответстват приблизително на различни срички. + +## Чанта с думи и TF/IDF + +Когато решаваме задачи като класификация на текст, трябва да можем да представим текста чрез един вектор с фиксиран размер, който ще използваме като вход за крайния плътен класификатор. Един от най-простите начини да направим това е да комбинираме всички индивидуални представяния на думи, например чрез тяхното събиране. Ако съберем one-hot кодирането на всяка дума, ще получим вектор на честотите, показващ колко пъти всяка дума се появява в текста. Такова представяне на текста се нарича **чанта с думи** (BoW). + + + +> Изображение от автора + +BoW по същество представя кои думи се появяват в текста и в какви количества, което наистина може да бъде добър индикатор за съдържанието на текста. Например, новинарска статия за политика вероятно ще съдържа думи като *президент* и *държава*, докато научна публикация би имала нещо като *колайдер*, *откритие* и т.н. Така честотите на думите в много случаи могат да бъдат добър индикатор за съдържанието на текста. + +Проблемът с BoW е, че определени често срещани думи, като *и*, *е* и т.н., се появяват в повечето текстове и имат най-високи честоти, което прикрива думите, които наистина са важни. Можем да намалим значимостта на тези думи, като вземем предвид честотата, с която думите се появяват в цялата колекция от документи. Това е основната идея зад подхода 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/bg/lessons/5-NLP/13-TextRep/assignment.md b/translations/bg/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..ff0e0bb4 --- /dev/null +++ b/translations/bg/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/bg/lessons/5-NLP/14-Embeddings/README.md b/translations/bg/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..0effef2b --- /dev/null +++ b/translations/bg/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.bg.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_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.bg.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 за генериране на поезия. Гледайте [това видео от Дан Шифман](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/bg/lessons/5-NLP/14-Embeddings/assignment.md b/translations/bg/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..a454cadd --- /dev/null +++ b/translations/bg/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/bg/lessons/5-NLP/15-LanguageModeling/README.md b/translations/bg/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..4b2dd710 --- /dev/null +++ b/translations/bg/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_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.bg.png) + +> Изображение от [тази статия](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Примерни тетрадки: Обучение на CBoW модел + +Продължете обучението си с помощта на следните тетрадки: + +* [Обучение на 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) + +## Преглед и самостоятелно обучение + +* [Официален урок на 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) + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/bg/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..4f4ccb68 --- /dev/null +++ b/translations/bg/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). + +## Задача + +В това упражнение ви предизвикваме да обучите Word2Vec модел, използвайки техниката Skip-Gram. Обучете мрежа с вграждания, за да предсказва съседни думи в 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) от Луис Карол. Или можете да използвате пиесите на Шекспир, които можете да получите с помощта на следния код: + +```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/bg/lessons/5-NLP/16-RNN/README.md b/translations/bg/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..714a613c --- /dev/null +++ b/translations/bg/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.bg.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 е допълнителен bias. + +Анатомия на клетка на 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/) от Кристофър Олах. + +## Двунасочни и многослойни RNN + +Обсъдихме рекурентни мрежи, които работят в една посока, от началото на последователността до края. Това изглежда естествено, защото наподобява начина, по който четем и слушаме реч. Въпреки това, тъй като в много практически случаи имаме произволен достъп до входната последователност, може да има смисъл да се извършва рекурентно изчисление и в двете посоки. Такива мрежи се наричат **двунапосочни** RNN. При работа с двунапосочна мрежа ще ни трябват два скрити вектора на състоянието, по един за всяка посока. + +Рекурентната мрежа, независимо дали е еднопосочна или двунапосочна, улавя определени модели в рамките на последователността и може да ги съхранява в състоянието или да ги предава като изход. Както при конволюционните мрежи, можем да изградим друг рекурентен слой върху първия, за да уловим модели на по-високо ниво и да изградим от модели на ниско ниво, извлечени от първия слой. Това ни води до понятието за **многослойна RNN**, която се състои от две или повече рекурентни мрежи, където изходът от предишния слой се подава на следващия слой като вход. + +![Изображение, показващо многослойна LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.bg.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) + +## Заключение + +В този модул видяхме, че 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/bg/lessons/5-NLP/16-RNN/assignment.md b/translations/bg/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..9d2ffe60 --- /dev/null +++ b/translations/bg/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/bg/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/bg/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..491c574c --- /dev/null +++ b/translations/bg/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.bg.jpg) + +> Изображение от блог пост [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) от [Андрей Карпати](http://karpathy.github.io/) + +* **Едно-към-едно** е традиционна невронна мрежа с един вход и един изход. +* **Едно-към-много** е генеративна архитектура, която приема една входна стойност и генерира последователност от изходни стойности. Например, ако искаме да обучим мрежа за **описание на изображения**, която да създава текстово описание на снимка, можем да използваме снимка като вход, да я прекараме през CNN, за да получим скритото й състояние, и след това рекурентна верига да генерира описание дума по дума. +* **Много-към-едно** съответства на архитектурите на RNN, които описахме в предишния модул, като класификация на текст. +* **Много-към-много**, или **последователност-към-последователност**, съответства на задачи като **машинен превод**, където първата RNN събира цялата информация от входната последователност в скритото състояние, а друга RNN верига разгръща това състояние в изходна последователност. + +В този модул ще се фокусираме върху прости генеративни модели, които ни помагат да генерираме текст. За простота ще използваме токенизация на ниво символи. + +Ще обучим тази RNN да генерира текст стъпка по стъпка. На всяка стъпка ще вземем последователност от символи с дължина `nchars` и ще помолим мрежата да генерира следващия изходен символ за всеки входен символ: + +![Изображение, показващо пример за генериране на думата 'HELLO' с RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.bg.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/bg/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/bg/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..4962ba78 --- /dev/null +++ b/translations/bg/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Генериране на текст на ниво дума с RNNs + +Лабораторно упражнение от [Учебна програма за начинаещи в AI](https://github.com/microsoft/ai-for-beginners). + +## Задача + +В това упражнение трябва да вземете произволна книга и да я използвате като набор от данни за обучение на генератор на текст на ниво дума. + +## Наборът от данни + +Можете да използвате всяка книга. Много безплатни текстове можете да намерите на [Project Gutenberg](https://www.gutenberg.org/), например, ето директен линк към [Приключенията на Алиса в страната на чудесата](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/bg/lessons/5-NLP/18-Transformers/README.md b/translations/bg/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..d4d15c89 --- /dev/null +++ b/translations/bg/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.bg.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.bg.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) + +> Фигура от [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.bg.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) е много голяма многослойна трансформер мрежа с 12 слоя за *BERT-base* и 24 за *BERT-large*. Моделът първо се предварително обучава върху голям корпус от текстови данни (WikiPedia + книги) чрез неуправляемо обучение (предсказване на маскирани думи в изречение). По време на предварителното обучение моделът усвоява значителни нива на разбиране на езика, които след това могат да бъдат използвани с други набори от данни чрез фина настройка. Този процес се нарича **трансферно обучение**. + +![изображение от http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.bg.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/bg/lessons/5-NLP/18-Transformers/assignment.md b/translations/bg/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..45b09dd9 --- /dev/null +++ b/translations/bg/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/bg/lessons/5-NLP/19-NER/README.md b/translations/bg/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..50393256 --- /dev/null +++ b/translations/bg/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. Интелигентните чатботове работят, като *разбират* какво иска потребителят чрез класификация на текста в подаденото изречение. Резултатът от тази класификация е така нареченото **намерение** (intent), което определя какво трябва да направи чатботът. + +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). Когато е маркирано, заглавието ни ще изглежда така: + +Токен | Таг +------|----- +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.bg.jpg) + +> *Изображение от [тази публикация в блог](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) от [Андрей Карпати](http://karpathy.github.io/). Моделите за класификация на токени за NER съответстват на най-дясната архитектура на мрежата в това изображение.* + +## Обучение на NER модели + +Тъй като моделът за NER по същество е модел за класификация на токени, можем да използваме RNN, с които вече сме запознати, за тази задача. В този случай всеки блок на рекурентната мрежа ще връща ID на токена. Следният примерен ноутбук показва как да обучите LSTM за класификация на токени. + +## ✍️ Примерни ноутбуци: NER + +Продължете обучението си със следния ноутбук: + +* [NER с TensorFlow](../../../../../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/bg/lessons/5-NLP/19-NER/lab/README.md b/translations/bg/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..2a0d2e33 --- /dev/null +++ b/translations/bg/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 +... +``` + +В този датасет заглавието и резюмето на статията са в първите два реда, а след това са изброени индивидуалните обекти с начални и крайни позиции в блока заглавие+резюме. Освен типа на обекта, получавате и онтологичния ID на този обект в рамките на някоя медицинска онтология. + +Ще трябва да напишете малко Python код, за да го конвертирате в BIO кодиране. + +## Мрежата + +Първият опит за 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/bg/lessons/5-NLP/20-LangModels/README.md b/translations/bg/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..adca890f --- /dev/null +++ b/translations/bg/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 милиарда параметри | 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) + +## Заключение + +Новите общи предварително обучени езикови модели не само моделират структурата на езика, но и съдържат огромно количество естествен език. Следователно, те могат ефективно да се използват за решаване на някои задачи в обработката на естествен език в условия на нулеви или малки примери. + +## [Тест след лекцията](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/bg/lessons/5-NLP/README.md b/translations/bg/lessons/5-NLP/README.md new file mode 100644 index 00000000..a45b7ced --- /dev/null +++ b/translations/bg/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Обработка на естествен език + +![Обобщение на задачите в NLP в рисунка](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.bg.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 са имплементирани в Python библиотеката [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Съществува страхотна [книга за NLTK](https://www.nltk.org/book/), достъпна онлайн, която обхваща как различни NLP задачи могат да бъдат решени с помощта на NLTK. + +В нашия курс основно ще се фокусираме върху използването на невронни мрежи за NLP и ще използваме NLTK, когато е необходимо. + +Вече научихме как да използваме невронни мрежи за работа с таблични данни и изображения. Основната разлика между тези типове данни и текста е, че текстът е последователност с променлива дължина, докато размерът на входните данни при изображенията е известен предварително. Докато конволюционните мрежи могат да извличат модели от входните данни, моделите в текста са по-сложни. Например, можем да имаме отрицание, което е отделено от подлога с произволен брой думи (напр. *Не харесвам портокали* срещу *Не харесвам онези големи цветни вкусни портокали*), и това все пак трябва да се интерпретира като един модел. Следователно, за да обработваме език, трябва да въведем нови типове невронни мрежи, като *рекурентни мрежи* и *трансформъри*. + +## Инсталиране на библиотеки + +Ако използвате локална Python инсталация за този курс, може да се наложи да инсталирате всички необходими библиотеки за NLP с помощта на следните команди: + +**За PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**За TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Можете да изпробвате NLP с 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) +``` + +Ако се интересувате от изучаване на NLP от класическа ML перспектива, посетете [този набор от уроци](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/bg/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/bg/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..9a6110ca --- /dev/null +++ b/translations/bg/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), което разказва как компютър може да се научи да играе Super Mario, използвайки невронни мрежи, обучени чрез генетични алгоритми. Ще научим повече за компютърното обучение за игра на игри като тази [в следващия раздел](../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/bg/lessons/6-Other/22-DeepRL/README.md b/translations/bg/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..c8a3e0db --- /dev/null +++ b/translations/bg/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Дълбоко обучение чрез подсилване + +Обучението чрез подсилване (Reinforcement Learning, 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* или *Гироскутери*. Те могат автоматично да се балансират, като регулират колелата си в отговор на сигнал от акселерометър или жироскоп. В тази секция ще научим как да решим подобен проблем - балансиране на прът. Това е подобно на ситуация, в която цирков артист трябва да балансира прът на ръката си - но това балансиране на прът се случва само в 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` изпълнява стъпка на симулация. Тя получава **действие** от **пространството на действията** и връща **наблюдение** (от пространството на наблюденията), както и награда и флаг за прекратяване. + +В горния пример изпълняваме случайно действие на всяка стъпка, поради което животът на експеримента е много кратък: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Целта на RL алгоритъма е да обучи модел - така наречената **политика** π - която ще връща действие в отговор на дадено състояние. Можем също да разглеждаме политиката като вероятностна, например за всяко състояние *s* и действие *a* тя ще връща вероятността π(*a*|*s*), че трябва да предприемем *a* в състояние *s*. + +## Алгоритъм за градиенти на политиката + +Най-очевидният начин за моделиране на политика е чрез създаване на невронна мрежа, която ще приема състояния като вход и ще връща съответните действия (или по-скоро вероятностите за всички действия). В известен смисъл това би било подобно на нормална задача за класификация, с основна разлика - не знаем предварително кои действия трябва да предприемем на всяка от стъпките. + +Идеята тук е да оценим тези вероятности. Създаваме вектор на **кумулативни награди**, който показва общата ни награда на всяка стъпка от експеримента. Също така прилагаме **дисконтиране на наградите**, като умножаваме по-ранните награди с коефициент γ=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, актьорът предлага действието, което трябва да предприемем, а критикът се опитва да бъде критичен и да оцени резултата. Въпреки това, нашата цел е да обучим тези мрежи в унисон. + +Тъй като знаем както реалните кумулативни награди, така и резултатите, върнати от критика по време на експеримента, е сравнително лесно да изградим функция за загуба, която ще минимизира разликата между тях. Това би ни дало **загуба на критика**. Можем да изчислим **загубата на актьора**, използвайки същия подход като в алгоритъма за градиенти на политиката. + +След изпълнението на един от тези алгоритми можем да очакваме нашият CartPole да се държи така: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Упражнения: Градиенти на политиката и 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 + +Обучението чрез подсилване днес е бързо развиваща се област на изследване. Някои от интересните примери за обучение чрез подсилване са: + +* Обучение на компютър да играе **игри на Atari**. Предизвикателната част в този проблем е, че нямаме просто състояние, представено като вектор, а по-скоро екранна снимка - и трябва да използваме CNN, за да преобразуваме това изображение вектор на характеристики или да извлечем информация за наградата. Игри на Atari са налични в 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) + +## Преглед и самостоятелно обучение + +Научете повече за класическото обучение чрез подсилване в нашата [Учебна програма за машинно обучение за начинаещи](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Гледайте [това страхотно видео](https://www.youtube.com/watch?v=qv6UVOQ0F44), което разказва как компютър може да се научи да играе Super Mario. + +## Задание: [Обучение на 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/bg/lessons/6-Other/22-DeepRL/lab/README.md b/translations/bg/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..6e0f23bc --- /dev/null +++ b/translations/bg/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,31 @@ + +# Обучение на Mountain Car да избяга + +Задача от [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Задача + +Вашата цел е да обучите RL агент да контролира [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) в средата на OpenAI. + +## Средата + +Средата 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/bg/lessons/6-Other/23-MultiagentSystems/README.md b/translations/bg/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..a5800129 --- /dev/null +++ b/translations/bg/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) + +Направлението на **мултиагентните системи** се появява в изкуствения интелект през 90-те години на миналия век като отговор на растежа на интернет и разпределените системи. Един от класическите учебници по изкуствен интелект, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), разглежда класическия изкуствен интелект от гледна точка на мултиагентните системи. + +Централно за мултиагентния подход е понятието **агент** – субект, който съществува в някаква **среда**, която може да възприема и върху която може да въздейства. Това е много широка дефиниция и може да има много различни видове и класификации на агентите: + +* Според способността им да разсъждават: + - **Реактивни** агенти обикновено имат поведение от типа заявка-отговор + - **Делиберативни** агенти използват някакъв вид логическо разсъждение и/или способности за планиране +* Според мястото, където агентът изпълнява своя код: + - **Статични** агенти работят на определен мрежов възел + - **Мобилни** агенти могат да преместват своя код между мрежови възли +* Според поведението им: + - **Пасивни агенти** нямат конкретни цели. Такива агенти могат да реагират на външни стимули, но няма да инициират действия сами. + - **Активни агенти** имат цели, които преследват + - **Когнитивни агенти** включват сложно планиране и разсъждение + +Мултиагентните системи днес се използват в редица приложения: + +* В игрите много герои, които не са играчи, използват някакъв вид изкуствен интелект и могат да се считат за интелигентни агенти +* Във видеопродукцията, рендирането на сложни 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/), ако искате да научите повече. + +Можете да [изтеглите](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.bg.png) + +> Снимка от Дмитрий Сошников + +На този екран можете да видите: + +* Секцията **Interface**, която съдържа: + - Основното поле, където живеят всички агенти + - Различни контроли: бутони, плъзгачи и др. + - Графики, които можете да използвате за показване на параметри на симулацията +* Раздела **Code**, който съдържа редактора, където можете да пишете програми на NetLogo + +В повечето случаи интерфейсът ще има бутон **Setup**, който инициализира състоянието на симулацията, и бутон **Go**, който стартира изпълнението. Те се обработват от съответните хендлъри в кода, които изглеждат така: + +``` +to go [ +... +] +``` + +Светът на NetLogo се състои от следните обекти: + +* **Агенти** (костенурки), които могат да се движат по полето и да извършват действия. Можете да командвате агентите, като използвате синтаксиса `ask turtles [...]`, а кодът в скобите се изпълнява от всички агенти в *режим на костенурка*. +* **Пачове** са квадратни области на полето, върху които живеят агентите. Можете да се обръщате към всички агенти на един и същ пач или да променяте цветовете и някои други свойства на пачовете. Можете също така да `ask patches` да извършат нещо. +* **Наблюдател** е уникален агент, който контролира света. Всички хендлъри на бутони се изпълняват в *режим на наблюдател*. + +> ✅ Красотата на мултиагентната среда е, че кодът, който се изпълнява в режим на костенурка или пач, се изпълнява едновременно от всички агенти паралелно. Така, като напишете малко код и програмирате поведението на отделен агент, можете да създадете сложно поведение на симулационната система като цяло. + +### Флокиране + +Като пример за мултиагентно поведение, нека разгледаме **[флокиране](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). Тези езици са проектирани въз основа на [теорията на речевите актове](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/bg/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/bg/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..96182f53 --- /dev/null +++ b/translations/bg/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Задача с NetLogo + +Вземете един от моделите в библиотеката на NetLogo и го използвайте, за да симулирате реална житейска ситуация възможно най-близо до действителността. Добър пример би бил да промените модела Virus в папката Alternative Visualizations, за да покажете как може да се използва за моделиране на разпространението на COVID-19. Можете ли да създадете модел, който имитира реално разпространение на вирус? + +Покажете работата си, като запазите копие и създадете видео демонстрация, обясняваща как моделът е свързан с реална ситуация. + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/lessons/7-Ethics/README.md b/translations/bg/lessons/7-Ethics/README.md new file mode 100644 index 00000000..6c8cd3b6 --- /dev/null +++ b/translations/bg/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), който съдържа набор от инструменти: + +* Табло за интерпретируемост (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) в учебната програма за машинно обучение, който включва задачи. + +## Преглед и самостоятелно обучение + +Вземете този [учебен път](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), за да научите повече за отговорната AI. + +## [Тест след лекцията](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/bg/lessons/README.md b/translations/bg/lessons/README.md new file mode 100644 index 00000000..7b07e500 --- /dev/null +++ b/translations/bg/lessons/README.md @@ -0,0 +1,17 @@ + +# Преглед + +![Преглед в рисунка](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.bg.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/bg/lessons/X-Extras/X1-MultiModal/README.md b/translations/bg/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..171a55a3 --- /dev/null +++ b/translations/bg/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# Мултимодални мрежи + +След успеха на трансформър моделите за решаване на задачи в обработката на естествен език (NLP), същите или подобни архитектури започнаха да се прилагат и за задачи в компютърното зрение. Нараства интересът към създаването на модели, които да *комбинират* възможностите на зрението и естествения език. Един от тези опити е направен от OpenAI и се нарича CLIP и DALL.E. + +## Контрастивно предварително обучение на изображения (CLIP) + +Основната идея на CLIP е да може да сравнява текстови подсказки с изображение и да определя доколко изображението съответства на подсказката. + +![Архитектура на CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.bg.png) + +> *Снимка от [тази публикация в блог](https://openai.com/blog/clip/)* + +Моделът е обучен върху изображения, получени от интернет, и техните описания. За всеки пакет вземаме 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 може да се използва за няколко задачи: + +**Класификация на изображения** + +Да предположим, че трябва да класифицираме изображения между, например, котки, кучета и хора. В този случай можем да подадем на модела изображение и серия от текстови подсказки: "*снимка на котка*", "*снимка на куче*", "*снимка на човек*". В получения вектор от 3 вероятности просто трябва да изберем индекса с най-висока стойност. + +![CLIP за класификация на изображения](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.bg.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/) (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.bg.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.bg.png) | ![Снимка, генерирана от Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.bg.png) | ![Снимка, генерирана от Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.bg.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: +![Снимка, генерирана от 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.bg.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.bg.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.bg.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/bg/lessons/sketchnotes/LICENSE.md b/translations/bg/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..b80801f1 --- /dev/null +++ b/translations/bg/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,112 @@ + +Права, този лиценз се прилага към Вашата употреба на съдържанието на базата данни: + + a. за избягване на съмнения, Раздел 2(a)(1) Ви предоставя правото да извличате, използвате повторно, възпроизвеждате и споделяте цялото или значителна част от съдържанието на базата данни; + + b. ако включите цялото или значителна част от съдържанието на базата данни в база данни, в която Вие притежавате права върху базата данни, тогава базата данни, в която сте включили съдържанието, трябва да бъде лицензирана под същия лиценз като този, който се прилага към оригиналната база данни; + + c. Вие не можете да предлагате или налагате допълнителни или различни условия или да прилагате ефективни технологични мерки към базата данни, които ограничават упражняването на правата, предоставени под този лиценз. + + +Раздел 5 -- Отказ от гаранции и ограничения на отговорността. + + a. Освен ако не е изрично посочено друго, Лицензодателят предоставя Лицензираните права и Лицензирания материал "както е" и "както е наличен", без никакви гаранции от какъвто и да е вид, изрични, подразбиращи се, законови или други, включително, без ограничение, гаранции за продаваемост, годност за определена цел, ненарушение, или че Лицензираният материал е без дефекти, или че ще работи без прекъсвания или грешки. + + b. До максималната степен, разрешена от приложимото законодателство, Лицензодателят се отказва от всякаква отговорност за каквито и да е загуби, разходи, или щети, произтичащи от този лиценз или от използването на Лицензирания материал, включително, без ограничение, всякакви косвени, специални, случайни, наказателни или последващи щети. + + +Раздел 6 -- Срок и прекратяване. + + a. Този публичен лиценз е валиден за срока на приложимите авторски права и подобни права, лицензирани тук. Въпреки това, ако Вие нарушите условията на този публичен лиценз, Вашите права под този лиценз автоматично се прекратяват. + + b. Ако Вашите права под този публичен лиценз бъдат прекратени, те могат да бъдат възстановени: + + 1. автоматично от Лицензодателя, ако нарушението бъде отстранено в рамките на 30 дни от откриването му; или + + 2. по изрично разрешение от Лицензодателя. + + c. Прекратяването на Вашите права под този публичен лиценз не прекратява лицензите на други, които са получили Лицензирания материал от Вас при спазване на този лиценз. + + d. Раздели 1, 5, 6, 7 и 8 остават в сила след прекратяването на този публичен лиценз. + + +Раздел 7 -- Други условия. + + a. Лицензодателят не е задължен да предоставя Лицензирания материал или да поддържа Лицензирания материал. + + b. Освен ако не е изрично посочено друго, нищо в този лиценз не намалява, ограничава или ограничава каквито и да е права, предоставени на Вас от приложимите изключения и ограничения на авторското право и подобни права. + + c. Ако някоя от разпоредбите на този лиценз бъде счетена за неприложима, тя се прилага до максималната степен, разрешена от приложимото законодателство, а останалите разпоредби остават в пълна сила и действие. + + d. Нищо в този лиценз не представлява или може да се тълкува като отказ от права, предоставени от приложимото законодателство. + + +Раздел 8 -- Тълкуване. + + a. Този лиценз не се счита за договор и не създава правни задължения между страните. Той е предназначен да предостави права под авторското право и подобни права, които се прилагат към Лицензирания материал. + + b. Тълкуването на този лиценз трябва да бъде в съответствие с неговите цели и разумно в контекста на приложимото законодателство. + + c. Нищо в този лиценз не ограничава или намалява правата, предоставени от приложимите изключения и ограничения на авторското право и подобни права. +Права, след това базата данни, в която имате права върху sui generis база данни (но не и върху отделните ѝ съдържания), е Адаптиран материал, + +включително за целите на Раздел 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. + +**Отказ от отговорност**: +Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. \ No newline at end of file diff --git a/translations/bg/lessons/sketchnotes/README.md b/translations/bg/lessons/sketchnotes/README.md new file mode 100644 index 00000000..8077d9cd --- /dev/null +++ b/translations/bg/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Всички скици на учебната програма могат да бъдат изтеглени оттук. + +🎨 Създадено от: Томоми Имура (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/cs/README.md b/translations/cs/README.md new file mode 100644 index 00000000..dd7a88af --- /dev/null +++ b/translations/cs/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) + +# Umělá inteligence pro začátečníky - Kurikulum + +|![ Sketchnote od [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI pro začátečníky - _Sketchnote od [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Objevte svět **umělé inteligence** (AI) s naším 12týdenním kurikulem obsahujícím 24 lekcí! Zahrnuje praktické lekce, kvízy a laboratorní cvičení. Kurikulum je přívětivé pro začátečníky a pokrývá nástroje jako TensorFlow a PyTorch, stejně jako etiku v AI. + +## Co se naučíte + +**[Myšlenková mapa kurzu](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +V tomto kurikulu se naučíte: + +* Různé přístupy k umělé inteligenci, včetně "starého dobrého" symbolického přístupu s **reprezentací znalostí** a odvozováním ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neuronové sítě** a **hluboké učení**, které jsou jádrem moderní AI. Tyto důležité koncepty si ukážeme pomocí kódu ve dvou z nejpopulárnějších frameworků - [TensorFlow](http://Tensorflow.org) a [PyTorch](http://pytorch.org). +* **Neuronové architektury** pro práci s obrazy a textem. Pokryjeme aktuální modely, ale možná nebudeme zcela aktuální s nejmodernějšími přístupy. +* Méně populární přístupy k AI, jako jsou **genetické algoritmy** a **systémy s více agenty**. + +Co v tomto kurikulu nepokryjeme: + +> [Najděte všechny doplňkové zdroje pro tento kurz v naší kolekci na Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Obchodní případy využití **AI v byznysu**. Zvažte absolvování vzdělávací cesty [Úvod do AI pro obchodní uživatele](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn nebo [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), vyvinuté ve spolupráci s [INSEAD](https://www.insead.edu/). +* **Klasické strojové učení**, které je dobře popsáno v našem [kurikulu Strojové učení pro začátečníky](http://github.com/Microsoft/ML-for-Beginners). +* Praktické aplikace AI vytvořené pomocí **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Pro toto doporučujeme začít s moduly Microsoft Learn pro [počítačové vidění](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [zpracování přirozeného jazyka](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generativní AI s Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** a další. +* Specifické ML **cloudové frameworky**, jako jsou [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) nebo [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Zvažte využití vzdělávacích cest [Vytváření a provozování řešení strojového učení s Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) a [Vytváření a provozování řešení strojového učení s Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Konverzační AI** a **chatboti**. Existuje samostatná vzdělávací cesta [Vytváření konverzačních AI řešení](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) a můžete se také podívat na [tento blogový příspěvek](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) pro více detailů. +* **Hluboká matematika** za hlubokým učením. Pro toto doporučujeme knihu [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) od Iana Goodfellowa, Yoshuy Bengia a Aarona Courvilla, která je také dostupná online na [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Pro jemný úvod do témat _AI v cloudu_ můžete zvážit absolvování vzdělávací cesty [Začínáme s umělou inteligencí na Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Obsah + +| | Odkaz na lekci | PyTorch/Keras/TensorFlow | Laboratorní cvičení | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Nastavení kurzu](./lessons/0-course-setup/setup.md) | [Nastavení vývojového prostředí](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Úvod do AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Úvod a historie AI](./lessons/1-Intro/README.md) | - | - | +| II | **Symbolická AI** | +| 02 | [Reprezentace znalostí a expertní systémy](./lessons/2-Symbolic/README.md) | [Expertní systémy](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) /[Konceptuální graf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Úvod do neuronových sítí**](./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) | [Laboratorní cvičení](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Vícevrstvý perceptron a vytvoření vlastního frameworku](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratorní cvičení](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Úvod do frameworků (PyTorch/TensorFlow) a 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) | [Laboratorní cvičení](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Počítačové vidění**](./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)| [Prozkoumejte počítačové vidění na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Úvod do počítačového vidění. 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) | [Laboratorní cvičení](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvoluční neuronové sítě](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Architektury 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) | [Laboratorní cvičení](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Předtrénované sítě a přenosové učení](./lessons/4-ComputerVision/08-TransferLearning/README.md) a [Triky při trénování](./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 | [Autoenkodéry a 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 | [Generativní protivní sítě a přenos uměleckého stylu](./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 | [Detekce objektů](./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 | [Semantická segmentace. 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 | [**Zpracování přirozeného jazyka**](./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) | [Prozkoumejte zpracování přirozeného jazyka na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Reprezentace textu. 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 | [Semantické vektorové reprezentace. Word2Vec a 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 | [Jazykové modelování. Trénování vlastních reprezentací](./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 | [Rekurentní neuronové sítě](./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 | [Generativní rekurentní sítě](./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 | [Transformery. 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 | [Rozpoznávání pojmenovaných entit](./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 | [Velké jazykové modely, programování promptů a úlohy s málo příklady](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Další techniky AI** || | +| 21 | [Genetické algoritmy](./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 | [Hluboké posilované učení](./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 | [Multiagentní systémy](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etika AI** | | | +| 24 | [Etika AI a odpovědná AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principy odpovědné AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Doplňky** | | | +| 25 | [Multimodální sítě, CLIP a 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) | | + +## Každá lekce obsahuje + +* Materiály k předběžnému čtení +* Spustitelné Jupyter Notebooky, které jsou často specifické pro daný framework (**PyTorch** nebo **TensorFlow**). Notebooky obsahují také mnoho teoretického materiálu, takže pro pochopení tématu je nutné projít alespoň jednu verzi notebooku (buď PyTorch, nebo TensorFlow). +* **Lab** dostupné pro některá témata, které vám umožní vyzkoušet si aplikaci naučeného materiálu na konkrétní problém. +* Některé sekce obsahují odkazy na moduly [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), které pokrývají související témata. + +## Začínáme + +- Připravili jsme [lekci pro nastavení](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), která vám pomůže s nastavením vývojového prostředí. - Pro pedagogy jsme vytvořili také [lekci pro nastavení osnov](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Jak [spustit kód ve VSCode nebo Codespace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Postupujte podle těchto kroků: + +Forkněte repozitář: Klikněte na tlačítko "Fork" v pravém horním rohu této stránky. + +Klonujte repozitář: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Nezapomeňte si tento repozitář označit hvězdičkou (🌟), abyste ho později snadno našli. + +## Seznamte se s ostatními studenty + +Připojte se k našemu [oficiálnímu AI Discord serveru](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), kde se můžete setkat a propojit s ostatními studenty, kteří tento kurz absolvují, a získat podporu. + +Pokud máte zpětnou vazbu k produktu nebo otázky během vývoje, navštivte náš [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) + +## Kvízy +> **Poznámka k kvízům**: Všechny kvízy jsou obsaženy ve složce Quiz-app v etc\quiz-app. Jsou propojeny přímo z lekcí a aplikaci pro kvízy lze spustit lokálně nebo nasadit na Azure; postupujte podle pokynů ve složce `quiz-app`. Postupně jsou lokalizovány. +## Hledáme pomoc + +Máte návrhy nebo jste našli pravopisné či programové chyby? Vytvořte issue nebo pull request. + +## Speciální poděkování + +* **✍️ Hlavní autor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrátor sketchnotů:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Tvůrce kvízů:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Hlavní přispěvatelé:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Další kurikula + +Náš tým vytváří i další kurikula! Podívejte se na: + +- [Generativní AI pro začátečníky](https://aka.ms/genai-beginners) +- [Generativní AI pro začátečníky .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generativní AI s JavaScriptem](https://github.com/microsoft/generative-ai-with-javascript) +- [Generativní AI s Javou](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI pro začátečníky](https://aka.ms/ai-beginners) +- [Data Science pro začátečníky](https://aka.ms/datascience-beginners) +- [Strojové učení pro začátečníky](https://aka.ms/ml-beginners) +- [Kybernetická bezpečnost pro začátečníky](https://github.com/microsoft/Security-101) +- [Webový vývoj pro začátečníky](https://aka.ms/webdev-beginners) +- [IoT pro začátečníky](https://aka.ms/iot-beginners) +- [Vývoj XR pro začátečníky](https://github.com/microsoft/xr-development-for-beginners) +- [Ovládnutí GitHub Copilota pro agentní použití](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Ovládnutí GitHub Copilota pro vývojáře C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Vyberte si vlastní dobrodružství s Copilotem](https://github.com/microsoft/CopilotAdventures) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nenese odpovědnost za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/SECURITY.md b/translations/cs/SECURITY.md new file mode 100644 index 00000000..e3fa5769 --- /dev/null +++ b/translations/cs/SECURITY.md @@ -0,0 +1,49 @@ + +## Zabezpečení + +Microsoft bere bezpečnost svých softwarových produktů a služeb vážně, což zahrnuje všechny repozitáře zdrojového kódu spravované prostřednictvím našich organizací na GitHubu, mezi které patří [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) a [naše GitHub organizace](https://opensource.microsoft.com/). + +Pokud se domníváte, že jste objevili bezpečnostní zranitelnost v některém z repozitářů vlastněných Microsoftem, která odpovídá [definici bezpečnostní zranitelnosti podle Microsoftu](https://aka.ms/opensource/security/definition), nahlaste nám ji podle níže uvedených pokynů. + +## Hlášení bezpečnostních problémů + +**Prosím, nehlaste bezpečnostní zranitelnosti prostřednictvím veřejných GitHub issues.** + +Místo toho je nahlaste Microsoft Security Response Center (MSRC) na [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Pokud preferujete odeslání bez přihlášení, zašlete e-mail na [secure@microsoft.com](mailto:secure@microsoft.com). Pokud je to možné, zašifrujte svou zprávu pomocí našeho PGP klíče; stáhněte si jej ze stránky [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Odpověď byste měli obdržet do 24 hodin. Pokud z nějakého důvodu neobdržíte odpověď, prosím, kontaktujte nás znovu e-mailem, abyste se ujistili, že jsme obdrželi vaši původní zprávu. Další informace naleznete na [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Prosím, zahrňte níže uvedené požadované informace (pokud je to možné), abyste nám pomohli lépe pochopit povahu a rozsah možného problému: + + * Typ problému (např. přetečení bufferu, SQL injection, cross-site scripting atd.) + * Plné cesty ke zdrojovým souborům souvisejícím s projevem problému + * Umístění postiženého zdrojového kódu (tag/branch/commit nebo přímá URL) + * Jakákoliv speciální konfigurace potřebná k reprodukci problému + * Krok za krokem instrukce k reprodukci problému + * Proof-of-concept nebo exploit kód (pokud je to možné) + * Dopad problému, včetně toho, jak by útočník mohl problém zneužít + +Tyto informace nám pomohou rychleji zpracovat vaše hlášení. + +Pokud hlásíte problém v rámci programu odměn za chyby, kompletnější hlášení mohou přispět k vyšší odměně. Navštivte prosím stránku [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) pro více informací o našich aktivních programech. + +## Preferované jazyky + +Preferujeme, aby veškerá komunikace probíhala v angličtině. + +## Politika + +Microsoft se řídí principem [Koordinovaného zveřejňování zranitelností](https://aka.ms/opensource/security/cvd). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/CODE_OF_CONDUCT.md b/translations/cs/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..a84b2ffb --- /dev/null +++ b/translations/cs/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Kodex chování pro otevřený zdroj Microsoftu + +Tento projekt přijal [Kodex chování pro otevřený zdroj Microsoftu](https://opensource.microsoft.com/codeofconduct/). + +Zdroje: + +- [Kodex chování pro otevřený zdroj Microsoftu](https://opensource.microsoft.com/codeofconduct/) +- [Často kladené dotazy ke kodexu chování](https://opensource.microsoft.com/codeofconduct/faq/) +- Kontaktujte [opencode@microsoft.com](mailto:opencode@microsoft.com) s dotazy nebo obavami + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nenese odpovědnost za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/CONTRIBUTING.md b/translations/cs/etc/CONTRIBUTING.md new file mode 100644 index 00000000..2a22d08d --- /dev/null +++ b/translations/cs/etc/CONTRIBUTING.md @@ -0,0 +1,31 @@ + +# Přispívání + +Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje, abyste souhlasili s licenční smlouvou pro přispěvatele (CLA), která potvrzuje, že máte právo a skutečně udělujete práva k použití vašeho příspěvku. Podrobnosti naleznete na https://cla.microsoft.com. + +Když odešlete pull request, CLA-bot automaticky určí, zda je potřeba poskytnout CLA, a příslušně označí PR (např. štítkem, komentářem). Stačí postupovat podle pokynů, které vám bot poskytne. Tento proces budete muset provést pouze jednou pro všechny repozitáře, které používají naši CLA. + +Tento projekt přijal [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Další informace naleznete v [FAQ k pravidlům chování](https://opensource.microsoft.com/codeofconduct/faq/) +nebo kontaktujte [opencode@microsoft.com](mailto:opencode@microsoft.com) s případnými dalšími dotazy nebo komentáři. + +# Hledáme příspěvky + +Aktuálně aktivně hledáme příspěvky k následujícím tématům: + +- [ ] Napsat sekci o hlubokém posilovaném učení +- [ ] Vylepšit sekci + notebook o detekci objektů +- [ ] PyTorch Lightning (pro [tuto sekci](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Napsat sekci + příklady o rozpoznávání pojmenovaných entit +- [ ] Vytvořit příklady pro trénování vlastních embeddingů pro [tuto sekci](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/Mindmap.md b/translations/cs/etc/Mindmap.md new file mode 100644 index 00000000..f3a99584 --- /dev/null +++ b/translations/cs/etc/Mindmap.md @@ -0,0 +1,85 @@ + +# AI + +## [Úvod do AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definice AI + - Historie AI + - Přístupy k AI + - Top-down/Symbolické + - Bottom-up/Neuronové + - Evoluční + - Synergická / Emergentní AI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Symbolická AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Reprezentace znalostí + - [Expertní systémy](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) + - Sémantický web + +## [Neuronové sítě](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) + - [Vícevrstvé sítě](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Úvod do 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) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Počítačové vidění](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Na MS Learn + - [Základy AI: Prozkoumejte počítačové vidění](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Počítačové vidění s PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Počítačové vidění s TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Úvod do počítačového vidění. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvoluční sítě](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Architektury 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) + - [Tréninkové triky](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoenkodéry a VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generativní protivníkové sítě](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Přenos stylu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detekce objektů](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Zpracování přirozeného jazyka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Na MS Learn + - [Základy AI: Prozkoumejte NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP s PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP s TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Reprezentace textu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Sémantické vektory](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelování jazyka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurentní neuronové sítě](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generativní rekurentní sítě](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformery a BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Rozpoznávání pojmenovaných entit](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generování textu a GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Další techniky + - [Genetické algoritmy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Hluboké posilované učení](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Multi-agentní systémy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etika AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn o odpovědné AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extra + - [Multimodální sítě](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 + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/SUPPORT.md b/translations/cs/etc/SUPPORT.md new file mode 100644 index 00000000..e7255561 --- /dev/null +++ b/translations/cs/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Podpora + +## Jak nahlásit problémy a získat pomoc + +Tento projekt používá GitHub Issues ke sledování chyb a požadavků na funkce. Před nahlášením nového problému prosím prohledejte stávající problémy, abyste se vyhnuli duplicitám. Pro nové problémy nahlaste svou chybu nebo požadavek na funkci jako nový Issue. + +Pro pomoc a dotazy týkající se používání tohoto projektu využijte Diskusní fóra. + +## Podpora podle zásad společnosti Microsoft + +Podpora pro tento projekt je omezena na výše uvedené zdroje. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/TRANSLATIONS.md b/translations/cs/etc/TRANSLATIONS.md new file mode 100644 index 00000000..1fd7a7b5 --- /dev/null +++ b/translations/cs/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Přispějte překladem lekcí + +Uvítáme překlady lekcí v tomto kurzu! + +## Pokyny + +V každé složce lekce a složce úvodu lekce jsou složky, které obsahují přeložené soubory ve formátu Markdown. + +> Poznámka: prosím, nepřekládejte žádný kód v souborech s ukázkami kódu; jediné, co je třeba přeložit, jsou README, zadání a kvízy. Děkujeme! + +Přeložené soubory by měly dodržovat následující konvenci pojmenování: + +**README._[jazyk]_.md** + +kde _[jazyk]_ je dvoupísmenná zkratka jazyka podle standardu ISO 639-1 (např. `README.es.md` pro španělštinu a `README.nl.md` pro nizozemštinu). + +**assignment._[jazyk]_.md** + +Podobně jako README, prosím přeložte i zadání. + +**Kvízy** + +1. Přidejte svůj překlad do aplikace kvízů přidáním souboru zde: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, s odpovídající konvencí pojmenování (en.json, fr.json). **Prosím, nelokalizujte slova 'true' nebo 'false'. Děkujeme!** + +2. Přidejte kód svého jazyka do rozbalovací nabídky v souboru App.vue aplikace kvízů. + +3. Upravte [index.js soubor překladů](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) aplikace kvízů, abyste přidali svůj jazyk. + +4. Nakonec upravte VŠECHNY odkazy na kvízy ve svých přeložených README.md souborech tak, aby odkazovaly přímo na váš přeložený kvíz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 se změní na https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**DĚKUJEME** + +Vaše úsilí si opravdu vážíme! + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/etc/quiz-app/README.md b/translations/cs/etc/quiz-app/README.md new file mode 100644 index 00000000..f124efe0 --- /dev/null +++ b/translations/cs/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# Kvízy + +Tyto kvízy slouží jako přednáškové a popřednáškové kvízy pro AI kurikulum na https://aka.ms/ai-beginners + +## Přidání přeložené sady kvízů + +Přidejte překlad kvízu vytvořením odpovídajících struktur kvízů ve složkách `assets/translations`. Kanonické kvízy se nacházejí v `assets/translations/en`. Kvízy jsou rozděleny do několika skupin podle lekcí. Ujistěte se, že číslování odpovídá správné sekci kvízu. Celkem je v tomto kurikulu 40 kvízů, přičemž číslování začíná od 0. + +Po úpravě překladů upravte soubor index.js ve složce s překlady tak, aby importoval všechny soubory podle konvencí v `en`. + +Upravte soubor `index.js` v `assets/translations`, aby importoval nově přeložené soubory. + +Poté upravte rozbalovací nabídku v `App.vue` v této aplikaci, abyste přidali svůj jazyk. Odpovídající lokalizovanou zkratku přizpůsobte názvu složky pro váš jazyk. + +Nakonec upravte všechny odkazy na kvízy v přeložených lekcích, pokud existují, aby obsahovaly tuto lokalizaci jako parametr dotazu: například `?loc=fr`. + +## Nastavení projektu + +``` +npm install +``` + +### Kompilace a automatické načítání pro vývoj + +``` +npm run serve +``` + +### Kompilace a minimalizace pro produkci + +``` +npm run build +``` + +### Kontrola a oprava souborů + +``` +npm run lint +``` + +### Přizpůsobení konfigurace + +Viz [Konfigurační reference](https://cli.vuejs.org/config/). + +Poděkování: Díky původní verzi této aplikace pro kvízy: https://github.com/arpan45/simple-quiz-vue + +## Nasazení na Azure + +Zde je podrobný průvodce, který vám pomůže začít: + +1. Vytvořte fork GitHub repozitáře +Ujistěte se, že váš kód statické webové aplikace je ve vašem GitHub repozitáři. Vytvořte fork tohoto repozitáře. + +2. Vytvořte statickou webovou aplikaci na Azure +- Vytvořte si [Azure účet](http://azure.microsoft.com) +- Přejděte na [Azure portál](https://portal.azure.com) +- Klikněte na „Vytvořit prostředek“ a vyhledejte „Static Web App“. +- Klikněte na „Vytvořit“. + +3. Konfigurace statické webové aplikace +- Základy: + - Předplatné: Vyberte své předplatné Azure. + - Skupina prostředků: Vytvořte novou skupinu prostředků nebo použijte existující. + - Název: Zadejte název pro svou statickou webovou aplikaci. + - Region: Vyberte region nejbližší vašim uživatelům. + +- #### Podrobnosti nasazení: + - Zdroj: Vyberte „GitHub“. + - GitHub účet: Autorizujte Azure k přístupu k vašemu GitHub účtu. + - Organizace: Vyberte svou GitHub organizaci. + - Repozitář: Vyberte repozitář obsahující vaši statickou webovou aplikaci. + - Větev: Vyberte větev, ze které chcete nasazovat. + +- #### Podrobnosti sestavení: + - Předvolby sestavení: Vyberte framework, na kterém je vaše aplikace postavena (např. React, Angular, Vue, atd.). + - Umístění aplikace: Zadejte složku obsahující kód vaší aplikace (např. / pokud je v kořenovém adresáři). + - Umístění API: Pokud máte API, zadejte jeho umístění (volitelné). + - Umístění výstupu: Zadejte složku, kde je generován výstup sestavení (např. build nebo dist). + +4. Kontrola a vytvoření +Zkontrolujte své nastavení a klikněte na „Vytvořit“. Azure nastaví potřebné prostředky a vytvoří GitHub Actions workflow ve vašem repozitáři. + +5. GitHub Actions workflow +Azure automaticky vytvoří soubor GitHub Actions workflow ve vašem repozitáři (.github/workflows/azure-static-web-apps-.yml). Tento workflow bude zajišťovat proces sestavení a nasazení. + +6. Sledování nasazení +Přejděte na kartu „Actions“ ve vašem GitHub repozitáři. +Měli byste vidět běžící workflow. Tento workflow sestaví a nasadí vaši statickou webovou aplikaci na Azure. +Jakmile workflow dokončí, vaše aplikace bude dostupná na poskytnuté URL Azure. + +### Příklad souboru workflow + +Zde je příklad, jak může vypadat soubor GitHub Actions workflow: +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 +``` + +### Další zdroje +- [Dokumentace Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentace GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/0-course-setup/for-teachers.md b/translations/cs/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..3f4ff2ad --- /dev/null +++ b/translations/cs/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Pro pedagogy + +Chcete použít tento vzdělávací program ve své třídě? Klidně do toho! + +Ve skutečnosti ho můžete použít přímo na GitHubu pomocí GitHub Classroom. + +Abyste to mohli udělat, vytvořte si fork tohoto repozitáře. Budete potřebovat vytvořit repozitář pro každou lekci, takže budete muset extrahovat každou složku do samostatného repozitáře. Tímto způsobem může [GitHub Classroom](https://classroom.github.com/classrooms) zpracovat každou lekci zvlášť. + +Tyto [podrobné instrukce](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vám poskytnou představu, jak nastavit svou třídu. + +## Použití repozitáře tak, jak je + +Pokud chcete použít tento repozitář v jeho současné podobě, bez použití GitHub Classroom, je to také možné. Budete muset komunikovat se svými studenty, kterou lekci mají společně projít. + +V online formátu (Zoom, Teams nebo jiném) můžete vytvořit skupinové místnosti pro kvízy a mentorovat studenty, aby se připravili na učení. Poté pozvěte studenty ke kvízům a požádejte je, aby své odpovědi odeslali jako 'issues' v určitém čase. Totéž můžete udělat s úkoly, pokud chcete, aby studenti pracovali společně veřejně. + +Pokud preferujete více soukromý formát, požádejte své studenty, aby si forkli vzdělávací program, lekci po lekci, do svých vlastních soukromých repozitářů na GitHubu a dali vám přístup. Poté mohou dokončit kvízy a úkoly soukromě a odeslat je vám prostřednictvím issues na vašem třídním repozitáři. + +Existuje mnoho způsobů, jak to v online třídě zorganizovat. Dejte nám prosím vědět, co vám funguje nejlépe! + +## Prosíme o vaše názory + +Chceme, aby tento vzdělávací program fungoval pro vás a vaše studenty. Prosíme, dejte nám zpětnou vazbu na diskusních fórech! + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/0-course-setup/how-to-run.md b/translations/cs/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..9be98b74 --- /dev/null +++ b/translations/cs/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Jak spustit kód + +Tento kurz obsahuje mnoho spustitelných příkladů a cvičení, které budete chtít vyzkoušet. Abyste to mohli udělat, potřebujete možnost spouštět Python kód v Jupyter Noteboocích, které jsou součástí tohoto kurzu. Existuje několik možností, jak kód spustit: + +## Spuštění lokálně na vašem počítači + +Pro spuštění kódu lokálně na vašem počítači budete potřebovat nějakou verzi Pythonu. Osobně doporučuji nainstalovat **[miniconda](https://conda.io/en/latest/miniconda.html)** – jedná se o poměrně lehkou instalaci, která podporuje správce balíčků `conda` pro různé Python **virtuální prostředí**. + +Po instalaci minicondy je potřeba naklonovat repozitář a vytvořit virtuální prostředí, které bude použito pro tento kurz: + +```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 +``` + +### Použití Visual Studio Code s rozšířením Python + +Pravděpodobně nejlepší způsob, jak využít tento kurz, je otevřít ho v [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) s [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note**: Jakmile naklonujete a otevřete adresář ve VS Code, automaticky vám bude navrženo nainstalovat rozšíření pro Python. Budete také muset nainstalovat miniconda, jak je popsáno výše. + +> **Note**: Pokud vám VS Code navrhne znovu otevřít repozitář v kontejneru, je potřeba tuto možnost odmítnout a použít lokální instalaci Pythonu. + +### Použití Jupyteru v prohlížeči + +Jupyter prostředí můžete také používat přímo z prohlížeče na vašem počítači. Ve skutečnosti jak klasický Jupyter, tak Jupyter Hub poskytují velmi pohodlné vývojové prostředí s automatickým doplňováním, zvýrazněním kódu atd. + +Pro spuštění Jupyteru lokálně přejděte do adresáře kurzu a spusťte: + +```bash +jupyter notebook +``` +nebo +```bash +jupyterhub +``` +Poté můžete přejít k libovolnému souboru `.ipynb`, otevřít ho a začít pracovat. + +### Spuštění v kontejneru + +Alternativou k instalaci Pythonu může být spuštění kódu v kontejneru. Jelikož náš repozitář obsahuje speciální složku `.devcontainer`, která určuje, jak vytvořit kontejner pro tento repozitář, VS Code vám nabídne znovu otevřít kód v kontejneru. To bude vyžadovat instalaci Dockeru a je také složitější, takže tuto možnost doporučujeme zkušenějším uživatelům. + +## Spuštění v cloudu + +Pokud nechcete instalovat Python lokálně a máte přístup k nějakým cloudovým zdrojům, dobrou alternativou může být spuštění kódu v cloudu. Existuje několik způsobů, jak to udělat: + +* Použití **[GitHub Codespaces](https://github.com/features/codespaces)**, což je virtuální prostředí vytvořené pro vás na GitHubu, přístupné přes rozhraní prohlížeče VS Code. Pokud máte přístup ke Codespaces, stačí kliknout na tlačítko **Code** v repozitáři, spustit codespace a začít pracovat během chvilky. +* Použití **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) poskytuje zdarma výpočetní zdroje v cloudu pro uživatele, kteří chtějí vyzkoušet kód na GitHubu. Na úvodní stránce je tlačítko pro otevření repozitáře v Binderu – to vás rychle přesměruje na Binder, který vytvoří podkladový kontejner a bezproblémově spustí webové rozhraní Jupyteru. + +> **Note**: Aby se zabránilo zneužití, Binder má blokovaný přístup k některým webovým zdrojům. To může zabránit fungování některého kódu, který stahuje modely nebo datové sady z veřejného internetu. Možná budete muset najít nějaké alternativy. Také výpočetní zdroje poskytované Binderem jsou poměrně základní, takže trénování bude pomalé, zejména v pozdějších složitějších lekcích. + +## Spuštění v cloudu s GPU + +Některé z pozdějších lekcí v tomto kurzu by velmi těžily z podpory GPU, protože jinak bude trénování bolestivě pomalé. Existuje několik možností, které můžete využít, zejména pokud máte přístup k cloudu buď přes [Azure pro studenty](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), nebo přes vaši instituci: + +* Vytvořte [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) a připojte se k ní přes Jupyter. Poté můžete naklonovat repozitář přímo na stroj a začít se učit. NC-series VM mají podporu GPU. + +> **Note**: Některé předplatné, včetně Azure pro studenty, neposkytují podporu GPU automaticky. Možná budete muset požádat o další GPU jádra prostřednictvím technické podpory. + +* Vytvořte [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) a poté použijte funkci Notebook tam. [Toto video](https://azure-for-academics.github.io/quickstart/azureml-papers/) ukazuje, jak naklonovat repozitář do Azure ML notebooku a začít ho používat. + +Můžete také použít Google Colab, který nabízí určitou bezplatnou podporu GPU, a nahrát tam Jupyter Notebooky, abyste je mohli spouštět jeden po druhém. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/0-course-setup/setup.md b/translations/cs/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..530ccd20 --- /dev/null +++ b/translations/cs/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Začínáme s tímto kurikulem + +## Jste student? + +Začněte s následujícími zdroji: + +* [Stránka Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Na této stránce najdete zdroje pro začátečníky, studentské balíčky a dokonce i způsoby, jak získat voucher na certifikaci zdarma. Tuto stránku si určitě uložte do záložek a pravidelně ji kontrolujte, protože obsah měníme alespoň jednou měsíčně. +* [Microsoft Student Learn ambasadoři](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Připojte se ke globální komunitě studentských ambasadorů, což by mohl být váš vstup do Microsoftu. + +**Studenti**, existuje několik způsobů, jak toto kurikulum využít. Nejprve si můžete jednoduše přečíst text a prohlédnout si kód přímo na GitHubu. Pokud chcete spustit kód v některém z notebooků - [přečtěte si naše pokyny](./etc/how-to-run.md) a najděte další rady, jak na to, [v tomto blogovém příspěvku](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Pokyny, jak spustit kód v tomto kurikulu](./how-to-run.md) + +## Samostudium + +Pokud byste však chtěli kurz absolvovat jako projekt samostudia, doporučujeme, abyste si celý repozitář forknuli do svého GitHub účtu a cvičení dokončili sami nebo ve skupině: + +* Začněte přednáškovým kvízem. +* Přečtěte si úvodní text k přednášce. +* Pokud má přednáška další notebooky, projděte si je, čtěte a spouštějte kód. Pokud jsou k dispozici notebooky pro TensorFlow i PyTorch, můžete se zaměřit na jeden z nich - vyberte si svůj oblíbený framework. +* Notebooky často obsahují výzvy, které vyžadují, abyste kód trochu upravili a experimentovali. +* Vyplňte kvíz po přednášce. +* Pokud je k modulu připojena laboratoř - dokončete zadání. +* Navštivte [diskusní fórum](https://github.com/microsoft/AI-For-Beginners/discussions) a "učte se nahlas". + +> Pro další studium doporučujeme sledovat tyto [moduly a výukové cesty Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Učitelé**, [přidali jsme několik návrhů](/for-teachers.md), jak toto kurikulum využít. + +--- + +## Pedagogika + +Při tvorbě tohoto kurikula jsme se rozhodli pro dvě pedagogické zásady: zajistit, aby bylo **projektově orientované** a aby obsahovalo **časté kvízy**. + +Tím, že obsah odpovídá projektům, je proces pro studenty poutavější a zlepšuje se zapamatování konceptů. Nízkoprahový kvíz před hodinou nastaví studentovu pozornost na dané téma, zatímco druhý kvíz po hodině zajistí další upevnění znalostí. Toto kurikulum bylo navrženo tak, aby bylo flexibilní a zábavné, a lze jej absolvovat celé nebo po částech. Projekty začínají jednoduše a postupně se stávají složitějšími během 12týdenního cyklu. + +> **Poznámka ke kvízům**: Všechny kvízy jsou obsaženy [v této aplikaci](https://red-field-0a6ddfd03.1.azurestaticapps.net/), celkem 50 kvízů po třech otázkách. Jsou propojeny v rámci lekcí, ale aplikaci pro kvízy lze spustit lokálně; postupujte podle pokynů ve složce `etc/quiz-app`. + +## Offline přístup + +Tuto dokumentaci můžete spustit offline pomocí [Docsify](https://docsify.js.org/#/). Forkněte tento repozitář, [nainstalujte Docsify](https://docsify.js.org/#/quickstart) na svůj lokální počítač a poté v kořenové složce tohoto repozitáře zadejte `docsify serve`. Webová stránka bude spuštěna na portu 3000 na vašem localhostu: `localhost:3000`. PDF verze kurikula je k dispozici [na tomto odkazu](../../../../../../../../../etc/pdf/readme.pdf). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/1-Intro/README.md b/translations/cs/lessons/1-Intro/README.md new file mode 100644 index 00000000..7aac6a14 --- /dev/null +++ b/translations/cs/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +S postupem času se výpočetní zdroje staly levnějšími a dostupnost dat se zvýšila, což umožnilo přístupům založeným na neuronových sítích dosahovat skvělých výsledků v konkurenci s lidskými schopnostmi v mnoha oblastech, jako je počítačové vidění nebo porozumění řeči. V posledním desetiletí se termín Umělá inteligence často používá jako synonymum pro neuronové sítě, protože většina úspěchů AI, o kterých slyšíme, je založena právě na nich. + +Můžeme pozorovat, jak se přístupy měnily, například při tvorbě počítačového programu hrajícího šachy: + +* Rané šachové programy byly založeny na vyhledávání – program se explicitně snažil odhadnout možné tahy soupeře pro daný počet následujících tahů a vybral optimální tah na základě nejlepší pozice, kterou lze dosáhnout během několika tahů. To vedlo k vývoji tzv. [alpha-beta ořezávacího](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) vyhledávacího algoritmu. +* Strategie vyhledávání fungují dobře ke konci hry, kdy je vyhledávací prostor omezen malým počtem možných tahů. Na začátku hry je však vyhledávací prostor obrovský a algoritmus lze zlepšit učením z existujících zápasů mezi lidskými hráči. Následné experimenty využívaly tzv. [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning), kde program hledal případy v databázi znalostí, které jsou velmi podobné aktuální pozici ve hře. +* Moderní programy, které porážejí lidské hráče, jsou založeny na neuronových sítích a [posilovaném učení](https://en.wikipedia.org/wiki/Reinforcement_learning), kde se programy učí hrát výhradně tím, že dlouho hrají samy proti sobě a učí se ze svých vlastních chyb – podobně jako lidé, když se učí hrát šachy. Počítačový program však může odehrát mnohem více her za mnohem kratší dobu, a tím se učí mnohem rychleji. + +✅ Udělejte si malý průzkum o dalších hrách, které byly hrány AI. + +Podobně můžeme vidět, jak se přístup k vytváření „mluvících programů“ (které by mohly projít Turingovým testem) změnil: + +* Rané programy tohoto typu, jako například [Eliza](https://en.wikipedia.org/wiki/ELIZA), byly založeny na velmi jednoduchých gramatických pravidlech a přeformulování vstupní věty do otázky. +* Moderní asistenti, jako Cortana, Siri nebo Google Assistant, jsou hybridní systémy, které využívají neuronové sítě k převodu řeči na text a rozpoznání našeho záměru, a poté používají určité formy logického uvažování nebo explicitní algoritmy k provedení požadovaných akcí. +* V budoucnu můžeme očekávat kompletní model založený na neuronových sítích, který bude schopen samostatně zvládnout dialog. Nedávné rodiny neuronových sítí GPT a [Turing-NLG](https://turing.microsoft.com/) ukazují v této oblasti velký úspěch. + +> Obrázek od Dmitry Soshnikov, [fotografie](https://unsplash.com/photos/r8LmVbUKgns) od [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Nedávný výzkum v oblasti AI + +Obrovský nárůst výzkumu neuronových sítí začal kolem roku 2010, kdy se začaly objevovat velké veřejné datové sady. Obrovská sbírka obrázků nazvaná [ImageNet](https://en.wikipedia.org/wiki/ImageNet), která obsahuje přibližně 14 milionů anotovaných obrázků, dala vzniknout [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Přesnost ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +V roce 2012 byly [Konvoluční neuronové sítě](../4-ComputerVision/07-ConvNets/README.md) poprvé použity pro klasifikaci obrázků, což vedlo k výraznému snížení chybovosti klasifikace (z téměř 30 % na 16,4 %). V roce 2015 architektura ResNet od Microsoft Research [dosáhla úrovně přesnosti srovnatelné s člověkem](https://doi.org/10.1109/ICCV.2015.123). + +Od té doby neuronové sítě prokázaly velmi úspěšné chování v mnoha úlohách: + +--- + +Rok | Dosažení úrovně srovnatelné s člověkem +-----|-------- +2015 | [Klasifikace obrázků](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Rozpoznávání konverzační řeči](https://arxiv.org/abs/1610.05256) +2018 | [Automatický strojový překlad](https://arxiv.org/abs/1803.05567) (z čínštiny do angličtiny) +2020 | [Popisování obrázků](https://arxiv.org/abs/2009.13682) + +V posledních několika letech jsme byli svědky obrovských úspěchů s velkými jazykovými modely, jako jsou BERT a GPT-3. To se stalo především díky tomu, že je k dispozici velké množství obecných textových dat, která nám umožňují trénovat modely tak, aby zachytily strukturu a význam textů, předtrénovat je na obecných textových kolekcích a poté tyto modely specializovat na konkrétnější úkoly. O [zpracování přirozeného jazyka](../5-NLP/README.md) se dozvíme více později v tomto kurzu. + +## 🚀 Výzva + +Prozkoumejte internet a určete, kde je podle vás AI nejefektivněji využívána. Je to v mapovací aplikaci, nějaké službě převodu řeči na text nebo ve videohře? Zjistěte, jak byl tento systém vytvořen. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Přehled a samostudium + +Projděte si historii AI a ML přečtením [této lekce](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Vyberte si prvek ze sketchnotu na začátku této lekce nebo této a prozkoumejte jej podrobněji, abyste pochopili kulturní kontext, který ovlivnil jeho vývoj. + +**Úkol**: [Game Jam](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/1-Intro/assignment.md b/translations/cs/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..07b54114 --- /dev/null +++ b/translations/cs/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Hry jsou oblastí, která byla silně ovlivněna vývojem AI a ML. V tomto úkolu napište krátkou práci o hře, kterou máte rádi a která byla ovlivněna vývojem AI. Měla by to být dostatečně stará hra, aby byla ovlivněna několika typy počítačových zpracovatelských systémů. Dobrým příkladem je šachy nebo Go, ale podívejte se také na videohry jako Pong nebo Pac-Man. Napište esej, která pojednává o minulosti, současnosti a budoucnosti AI této hry. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/2-Symbolic/README.md b/translations/cs/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..c8667d73 --- /dev/null +++ b/translations/cs/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Reprezentace znalostí a expertní systémy + +![Shrnutí obsahu Symbolické AI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.cs.png) + +> Sketchnote od [Tomomi Imura](https://twitter.com/girlie_mac) + +Hledání umělé inteligence je založeno na snaze o získání znalostí, aby bylo možné chápat svět podobně jako lidé. Ale jak toho dosáhnout? + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +V počátcích AI byl populární přístup shora dolů k vytváření inteligentních systémů (diskutovaný v předchozí lekci). Myšlenka spočívala v extrakci znalostí od lidí do nějaké strojově čitelné podoby, kterou by bylo možné automaticky využít k řešení problémů. Tento přístup byl založen na dvou hlavních myšlenkách: + +* Reprezentace znalostí +* Usuzování + +## Reprezentace znalostí + +Jedním z důležitých konceptů v Symbolické AI jsou **znalosti**. Je důležité odlišit znalosti od *informací* nebo *dat*. Například můžeme říci, že knihy obsahují znalosti, protože jejich studiem se můžeme stát experty. Nicméně to, co knihy obsahují, se ve skutečnosti nazývá *data*, a čtením knih a integrací těchto dat do našeho modelu světa tato data přeměňujeme na znalosti. + +> ✅ **Znalosti** jsou něco, co máme v hlavě a co představuje naše pochopení světa. Jsou získávány aktivním procesem **učení**, který integruje informace, které přijímáme, do našeho aktivního modelu světa. + +Nejčastěji znalosti nedefinujeme striktně, ale porovnáváme je s jinými souvisejícími koncepty pomocí [DIKW pyramidy](https://en.wikipedia.org/wiki/DIKW_pyramid). Obsahuje následující koncepty: + +* **Data** jsou něco, co je reprezentováno na fyzických médiích, jako je psaný text nebo mluvená slova. Data existují nezávisle na lidech a mohou být mezi nimi předávána. +* **Informace** je způsob, jak interpretujeme data v naší hlavě. Například když slyšíme slovo *počítač*, máme nějaké pochopení, co to je. +* **Znalosti** jsou informace integrované do našeho modelu světa. Například jakmile se naučíme, co je počítač, začneme mít nějaké představy o tom, jak funguje, kolik stojí a k čemu se dá použít. Tato síť vzájemně propojených konceptů tvoří naše znalosti. +* **Moudrost** je ještě jedna úroveň našeho pochopení světa a představuje *meta-znalosti*, např. nějakou představu o tom, jak a kdy by měly být znalosti použity. + +*Obrázek [z Wikipedie](https://commons.wikimedia.org/w/index.php?curid=37705247), od Longlivetheux - Vlastní dílo, CC BY-SA 4.0* + +Problém **reprezentace znalostí** tedy spočívá v nalezení efektivního způsobu, jak reprezentovat znalosti uvnitř počítače ve formě dat, aby byly automaticky použitelné. To lze chápat jako spektrum: + +![Spektrum reprezentace znalostí](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.cs.png) + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +* Na levé straně jsou velmi jednoduché typy reprezentace znalostí, které mohou být efektivně použity počítači. Nejjednodušší je algoritmická reprezentace, kdy jsou znalosti reprezentovány počítačovým programem. To však není nejlepší způsob reprezentace znalostí, protože není flexibilní. Znalosti v naší hlavě jsou často nealgoritmické. +* Na pravé straně jsou reprezentace, jako je přirozený text. Ten je nejsilnější, ale nelze jej použít pro automatické usuzování. + +> ✅ Zamyslete se na chvíli nad tím, jak reprezentujete znalosti ve své hlavě a převádíte je na poznámky. Existuje konkrétní formát, který vám pomáhá při zapamatování? + +## Klasifikace počítačových reprezentací znalostí + +Různé metody reprezentace znalostí v počítači můžeme klasifikovat do následujících kategorií: + +* **Síťové reprezentace** jsou založeny na faktu, že máme síť vzájemně propojených konceptů v naší hlavě. Můžeme se pokusit reprodukovat stejné sítě jako graf uvnitř počítače - tzv. **sémantická síť**. + +1. **Trojičky objekt-atribut-hodnota** nebo **páry atribut-hodnota**. Protože graf může být reprezentován uvnitř počítače jako seznam uzlů a hran, můžeme sémantickou síť reprezentovat seznamem trojiček obsahujících objekty, atributy a hodnoty. Například vytvoříme následující trojičky o programovacích jazycích: + +Objekt | Atribut | Hodnota +-------|---------|-------- +Python | je | Netypovaný jazyk +Python | vynalezl | Guido van Rossum +Python | bloková syntaxe | odsazení +Netypovaný jazyk | nemá | definice typů + +> ✅ Zamyslete se, jak lze trojičky použít k reprezentaci jiných typů znalostí. + +2. **Hierarchické reprezentace** zdůrazňují fakt, že často vytváříme hierarchii objektů v naší hlavě. Například víme, že kanárek je pták, a všichni ptáci mají křídla. Také máme nějakou představu o tom, jakou barvu kanárek obvykle má a jaká je jeho rychlost letu. + + - **Reprezentace rámců** je založena na reprezentaci každého objektu nebo třídy objektů jako **rámce**, který obsahuje **sloty**. Sloty mají možné výchozí hodnoty, omezení hodnot nebo uložené procedury, které lze volat pro získání hodnoty slotu. Všechny rámce tvoří hierarchii podobnou hierarchii objektů v objektově orientovaných programovacích jazycích. + - **Scénáře** jsou speciální druh rámců, které reprezentují složité situace, jež se mohou rozvíjet v čase. + +**Python** + +Slot | Hodnota | Výchozí hodnota | Interval | +-----|---------|-----------------|----------| +Název | Python | | | +Je | Netypovaný jazyk | | | +Případ proměnné | | CamelCase | | +Délka programu | | | 5-5000 řádků | +Bloková syntaxe | Odsazení | | | + +3. **Procedurální reprezentace** jsou založeny na reprezentaci znalostí seznamem akcí, které mohou být provedeny, když nastane určitá podmínka. + - Produkční pravidla jsou if-then výroky, které nám umožňují vyvozovat závěry. Například lékař může mít pravidlo říkající, že **POKUD** má pacient vysokou horečku **NEBO** vysokou hladinu C-reaktivního proteinu v krevním testu **PAK** má zánět. Jakmile narazíme na jednu z podmínek, můžeme učinit závěr o zánětu a poté jej použít v dalším usuzování. + - Algoritmy mohou být považovány za další formu procedurální reprezentace, i když se téměř nikdy nepoužívají přímo v systémech založených na znalostech. + +4. **Logika** byla původně navržena Aristotelem jako způsob reprezentace univerzálních lidských znalostí. + - Predikátová logika jako matematická teorie je příliš bohatá na to, aby byla výpočetně použitelná, proto se obvykle používá její podmnožina, jako jsou Hornovy klauzule používané v Prologu. + - Popisná logika je rodina logických systémů používaných k reprezentaci a usuzování o hierarchiích objektů distribuovaných reprezentací znalostí, jako je *sémantický web*. + +## Expertní systémy + +Jedním z raných úspěchů symbolické AI byly tzv. **expertní systémy** - počítačové systémy navržené tak, aby fungovaly jako expert v nějaké omezené problémové oblasti. Byly založeny na **bázi znalostí** získané od jednoho nebo více lidských expertů a obsahovaly **inferenční stroj**, který prováděl určité usuzování na jejím základě. + +![Lidská architektura](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.cs.png) | ![Architektura systému založeného na znalostech](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.cs.png) +---------------------------------------------|------------------------------------------------ +Zjednodušená struktura lidského nervového systému | Architektura systému založeného na znalostech + +Expertní systémy jsou postaveny podobně jako lidský systém usuzování, který obsahuje **krátkodobou paměť** a **dlouhodobou paměť**. Podobně v systémech založených na znalostech rozlišujeme následující komponenty: + +* **Paměť problému**: obsahuje znalosti o právě řešeném problému, tj. teplotu nebo krevní tlak pacienta, zda má zánět nebo ne, atd. Tyto znalosti se také nazývají **statické znalosti**, protože obsahují snímek toho, co aktuálně víme o problému - tzv. *stav problému*. +* **Báze znalostí**: představuje dlouhodobé znalosti o problémové oblasti. Je manuálně získávána od lidských expertů a nemění se od konzultace ke konzultaci. Protože nám umožňuje navigovat z jednoho stavu problému do druhého, nazývá se také **dynamické znalosti**. +* **Inferenční stroj**: organizuje celý proces hledání v prostoru stavů problému, klade otázky uživateli, když je to nutné. Je také zodpovědný za nalezení správných pravidel, která mají být aplikována na každý stav. + +Jako příklad si vezměme následující expertní systém určování zvířete na základě jeho fyzických charakteristik: + +![AND-OR strom](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.cs.png) + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +Tento diagram se nazývá **AND-OR strom** a je grafickou reprezentací sady produkčních pravidel. Nakreslení stromu je užitečné na začátku získávání znalostí od experta. Pro reprezentaci znalostí uvnitř počítače je však pohodlnější použít pravidla: + +``` +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 +``` + +Můžete si všimnout, že každá podmínka na levé straně pravidla a akce jsou v podstatě trojičky objekt-atribut-hodnota (OAV). **Pracovní paměť** obsahuje sadu OAV trojiček, které odpovídají právě řešenému problému. **Pravidlový stroj** hledá pravidla, jejichž podmínka je splněna, a aplikuje je, čímž přidává další trojičku do pracovní paměti. + +> ✅ Nakreslete svůj vlastní AND-OR strom na téma, které vás zajímá! + +### Dopředné vs. zpětné usuzování + +Proces popsaný výše se nazývá **dopředné usuzování**. Začíná s nějakými počátečními daty o problému dostupnými v pracovní paměti a poté provádí následující smyčku usuzování: + +1. Pokud je cílový atribut přítomen v pracovní paměti - zastavte a dejte výsledek +2. Hledejte všechna pravidla, jejichž podmínka je aktuálně splněna - získáte **konfliktní množinu** pravidel. +3. Proveďte **řešení konfliktů** - vyberte jedno pravidlo, které bude provedeno v tomto kroku. Mohou existovat různé strategie řešení konfliktů: + - Vyberte první použitelné pravidlo v bázi znalostí + - Vyberte náhodné pravidlo + - Vyberte *specifičtější* pravidlo, tj. to, které splňuje nejvíce podmínek na "levé straně" (LHS) +4. Aplikujte vybrané pravidlo a vložte nový kus znalostí do stavu problému +5. Opakujte od kroku 1. + +Nicméně v některých případech můžeme chtít začít s prázdnými znalostmi o problému a klást otázky, které nám pomohou dojít k závěru. Například při lékařské diagnostice obvykle neprovádíme všechny lékařské analýzy předem, než začneme diagnostikovat pacienta. Spíše chceme provádět analýzy, když je třeba učinit rozhodnutí. + +Tento proces lze modelovat pomocí **zpětného usuzování**. Je řízen **cílem** - hodnotou atributu, kterou hledáme: + +1. Vyberte všechna pravidla, která nám mohou dát hodnotu cíle (tj. s cílem na RHS ("pravé straně")) - konfliktní množina +1. Pokud pro tento atribut neexistují žádná pravidla nebo existuje pravidlo říkající, že bychom měli hodnotu zeptat uživatele - zeptejte se na ni, jinak: +1. Použijte strategii řešení konfliktů k výběru jednoho pravidla, které použijeme jako *hypotézu* - pokusíme se ji dokázat +1. Rekurzivně opakujte proces pro všechny atributy na LHS pravidla, pokoušejte se je dokázat jako cíle +1. Pokud proces v jakémkoli bodě selže - použijte jiné pravidlo v kroku 3. + +> ✅ V jakých situacích je vhodnější dopředné usuzování? A co zpětné usuzování? + +### Implementace expertních systémů + +Expertní systémy lze implementovat různými nástroji: + +* Programování přímo v nějakém vyšším programovacím jazyce. To není nejlepší nápad, protože hlavní výhodou systému založeného na znalostech je, že znalosti jsou odděleny od usuzování, a potenciálně by měl být expert na problémovou oblast schopen psát pravidla bez pochopení detailů procesu usuzování. +* Použití **shellu expertních systémů**, tj. systému speciálně navrženého k naplnění znalostmi pomocí nějakého jazyka reprezentace znalostí. + +## ✍️ Cvičení: Usuzování o zvířatech + +Podívejte se na [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pro příklad implementace expertního systému s dopředným a zpětným usuzováním. +> **Poznámka**: Tento příklad je poměrně jednoduchý a pouze naznačuje, jak vypadá expertní systém. Jakmile začnete vytvářet takový systém, zaznamenáte určité *inteligentní* chování až po dosažení určitého počtu pravidel, přibližně 200+. V určitém bodě se pravidla stanou příliš složitými na to, abyste je všechny udrželi v paměti, a právě tehdy se můžete začít ptát, proč systém přijímá určitá rozhodnutí. Nicméně důležitou vlastností znalostních systémů je, že vždy můžete *vysvětlit*, jak bylo kterékoliv rozhodnutí učiněno. +## Ontologie a Sémantický web + +Na konci 20. století vznikla iniciativa využít reprezentaci znalostí k anotaci internetových zdrojů, aby bylo možné najít zdroje odpovídající velmi specifickým dotazům. Tento záměr byl nazván **Sémantický web** a opíral se o několik konceptů: + +- Speciální reprezentaci znalostí založenou na **[popisné logice](https://en.wikipedia.org/wiki/Description_logic)** (DL). Ta je podobná rámcové reprezentaci znalostí, protože vytváří hierarchii objektů s vlastnostmi, ale má formální logickou sémantiku a umožňuje odvozování. Existuje celá rodina DL, které vyvažují mezi expresivitou a algoritmickou složitostí odvozování. +- Distribuovanou reprezentaci znalostí, kde jsou všechny koncepty reprezentovány globálním URI identifikátorem, což umožňuje vytvářet hierarchie znalostí napříč internetem. +- Rodinu jazyků založených na XML pro popis znalostí: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Základním konceptem v Sémantickém webu je koncept **ontologie**. Ten označuje explicitní specifikaci problémové domény pomocí formální reprezentace znalostí. Nejjednodušší ontologie může být jen hierarchie objektů v problémové doméně, ale složitější ontologie zahrnují pravidla, která lze použít pro odvozování. + +V Sémantickém webu jsou všechny reprezentace založeny na trojicích. Každý objekt a každá relace jsou jednoznačně identifikovány URI. Například pokud chceme uvést fakt, že tento AI Curriculum vytvořil Dmitry Soshnikov 1. ledna 2022, můžeme použít následující trojice: + + + +``` +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 +``` + +> ✅ Zde `http://www.example.com/terms/creation-date` a `http://purl.org/dc/elements/1.1/creator` jsou známé a univerzálně přijímané URI pro vyjádření konceptů *tvůrce* a *datum vytvoření*. + +V složitějším případě, pokud chceme definovat seznam tvůrců, můžeme použít některé datové struktury definované v RDF. + + + +> Diagramy výše od [Dmitry Soshnikov](http://soshnikov.com) + +Pokrok ve vytváření Sémantického webu byl do jisté míry zpomalen úspěchem vyhledávačů a technik zpracování přirozeného jazyka, které umožňují extrahovat strukturovaná data z textu. Nicméně v některých oblastech stále existují významné snahy o udržování ontologií a znalostních bází. Několik projektů, které stojí za zmínku: + +* [WikiData](https://wikidata.org/) je sbírka strojově čitelných znalostních bází spojených s Wikipedií. Většina dat je těžena z *InfoBoxů* Wikipedie, což jsou strukturované části obsahu na stránkách Wikipedie. Můžete [dotazovat](https://query.wikidata.org/) WikiData pomocí SPARQL, speciálního dotazovacího jazyka pro Sémantický web. Zde je ukázkový dotaz, který zobrazuje nejčastější barvy očí mezi lidmi: + +```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/) je další projekt podobný WikiData. + +> ✅ Pokud si chcete vyzkoušet vytváření vlastních ontologií nebo otevírání existujících, existuje skvělý vizuální editor ontologií nazvaný [Protégé](https://protege.stanford.edu/). Stáhněte si ho nebo ho použijte online. + + + +*Webový editor Protégé otevřený s ontologií rodiny Romanovců. Screenshot od Dmitry Soshnikov* + +## ✍️ Cvičení: Ontologie rodiny + +Podívejte se na [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) pro příklad použití technik Sémantického webu k odvozování rodinných vztahů. Vezmeme rodokmen reprezentovaný v běžném formátu GEDCOM a ontologii rodinných vztahů a vytvoříme graf všech rodinných vztahů pro danou skupinu jednotlivců. + +## Microsoft Concept Graph + +Ve většině případů jsou ontologie pečlivě vytvářeny ručně. Je však také možné **těžit** ontologie z nestrukturovaných dat, například z textů v přirozeném jazyce. + +Jedním z takových pokusů byl projekt Microsoft Research, který vedl k vytvoření [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Jedná se o rozsáhlou sbírku entit seskupených pomocí vztahu dědičnosti `is-a`. Umožňuje odpovídat na otázky jako "Co je Microsoft?" - odpověď by mohla znít například "společnost s pravděpodobností 0,87 a značka s pravděpodobností 0,75". + +Graf je dostupný buď jako REST API, nebo jako velký stažitelný textový soubor, který uvádí všechny páry entit. + +## ✍️ Cvičení: Graf konceptů + +Vyzkoušejte notebook [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb), abyste viděli, jak můžeme použít Microsoft Concept Graph ke kategorizaci zpravodajských článků. + +## Závěr + +Dnes je AI často považována za synonymum pro *strojové učení* nebo *neuronové sítě*. Nicméně člověk také vykazuje explicitní uvažování, což je něco, co neuronové sítě aktuálně nezvládají. V reálných projektech se explicitní uvažování stále používá k plnění úkolů, které vyžadují vysvětlení nebo schopnost kontrolovaně měnit chování systému. + +## 🚀 Výzva + +V notebooku Ontologie rodiny spojeném s touto lekcí máte možnost experimentovat s dalšími rodinnými vztahy. Pokuste se objevit nové spojení mezi lidmi v rodokmenu. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Přehled a samostudium + +Proveďte výzkum na internetu a objevte oblasti, kde se lidé snažili kvantifikovat a kodifikovat znalosti. Podívejte se na Bloomovu taxonomii a vraťte se v historii, abyste zjistili, jak se lidé snažili porozumět světu. Prozkoumejte práci Linnaea na vytvoření taxonomie organismů a sledujte, jak Dmitrij Mendělejev vytvořil způsob popisu a seskupování chemických prvků. Jaké další zajímavé příklady můžete najít? + +**Úkol**: [Vytvořte ontologii](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nenese odpovědnost za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/2-Symbolic/assignment.md b/translations/cs/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..88ac764a --- /dev/null +++ b/translations/cs/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Vytvoření ontologie + +Vytvoření znalostní báze spočívá v kategorizaci modelu, který reprezentuje fakta o určitém tématu. Vyberte si téma – například osobu, místo nebo věc – a poté vytvořte model tohoto tématu. Použijte některé z technik a strategií tvorby modelů popsaných v této lekci. Příkladem by mohlo být vytvoření ontologie obývacího pokoje s nábytkem, osvětlením a podobně. Jak se obývací pokoj liší od kuchyně? Koupelny? Jak poznáte, že jde o obývací pokoj a ne jídelnu? Použijte [Protégé](https://protege.stanford.edu/) k vytvoření své ontologie. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..2d2b02a5 --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Úvod do neuronových sítí: Perceptron + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Jedním z prvních pokusů o implementaci něčeho podobného moderní neuronové síti provedl Frank Rosenblatt z Cornell Aeronautical Laboratory v roce 1957. Jednalo se o hardwarovou implementaci nazvanou "Mark-1", která byla navržena k rozpoznávání primitivních geometrických tvarů, jako jsou trojúhelníky, čtverce a kruhy. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Obrázky [z Wikipedie](https://en.wikipedia.org/wiki/Perceptron) + +Vstupní obraz byl reprezentován maticí 20x20 fotobuněk, takže neuronová síť měla 400 vstupů a jeden binární výstup. Jednoduchá síť obsahovala jeden neuron, který se také nazývá **jednotka logického prahu**. Váhy neuronové sítě fungovaly jako potenciometry, které bylo nutné manuálně upravit během fáze učení. + +> ✅ Potenciometr je zařízení, které umožňuje uživateli upravit odpor v obvodu. + +> The New York Times tehdy o perceptronu napsal: *zárodek elektronického počítače, od kterého [námořnictvo] očekává, že bude schopen chodit, mluvit, vidět, psát, reprodukovat se a být si vědom své existence.* + +## Model perceptronu + +Předpokládejme, že máme N vlastností v našem modelu, v takovém případě by vstupní vektor byl vektor o velikosti N. Perceptron je model **binární klasifikace**, tj. dokáže rozlišit mezi dvěma třídami vstupních dat. Předpokládáme, že pro každý vstupní vektor x bude výstup našeho perceptronu buď +1, nebo -1, v závislosti na třídě. Výstup bude vypočítán podle vzorce: + +y(x) = f(wTx) + +kde f je aktivační funkce typu schod. + + + + +## Trénování perceptronu + +Abychom perceptron natrénovali, musíme najít vektor vah w, který klasifikuje většinu hodnot správně, tj. vede k nejmenší **chybě**. Tato chyba E je definována pomocí **kritéria perceptronu** následujícím způsobem: + +E(w) = -∑wTxiti + +kde: + +* součet se bere přes ty body trénovacích dat i, které vedou k nesprávné klasifikaci +* xi je vstupní data a ti je buď -1 nebo +1 pro negativní a pozitivní příklady. + +Toto kritérium je považováno za funkci vah w, kterou musíme minimalizovat. Často se používá metoda nazvaná **gradientní sestup**, při které začneme s nějakými počátečními váhami w(0) a poté v každém kroku aktualizujeme váhy podle vzorce: + +w(t+1) = w(t) - η∇E(w) + +Zde η je tzv. **rychlost učení** a ∇E(w) označuje **gradient** E. Po výpočtu gradientu získáme: + +w(t+1) = w(t) + ∑ηxiti + +Algoritmus v Pythonu vypadá takto: + +```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 +``` + +## Závěr + +V této lekci jste se naučili o perceptronu, což je model binární klasifikace, a jak jej natrénovat pomocí vektoru vah. + +## 🚀 Výzva + +Pokud si chcete zkusit vytvořit vlastní perceptron, zkuste [tento lab na Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), který využívá [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Přehled & Samostudium + +Chcete-li vidět, jak můžeme použít perceptron k řešení jednoduchého problému i reálných problémů, a pokračovat v učení, podívejte se na notebook [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Zde je zajímavý [článek o perceptronech](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Úkol](lab/README.md) + +V této lekci jsme implementovali perceptron pro úlohu binární klasifikace a použili jsme jej k rozlišení mezi dvěma ručně psanými číslicemi. V tomto labu máte za úkol vyřešit problém klasifikace číslic kompletně, tj. určit, která číslice nejpravděpodobněji odpovídá danému obrázku. + +* [Instrukce](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..a2244c8b --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Více-třídní klasifikace s perceptronem + +Laboratorní úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Pomocí kódu, který jsme vyvinuli v této lekci pro binární klasifikaci ručně psaných číslic MNIST, vytvořte více-třídní klasifikátor, který bude schopen rozpoznat jakékoli číslo. Vypočítejte přesnost klasifikace na trénovacím a testovacím datasetu a zobrazte matici záměn. + +## Tipy + +1. Pro každou číslici vytvořte dataset pro binární klasifikátor "tato číslice vs. všechny ostatní číslice" +1. Natrénujte 10 různých perceptronů pro binární klasifikaci (jeden pro každou číslici) +1. Definujte funkci, která bude klasifikovat vstupní číslici + +> **Tip**: Pokud zkombinujeme váhy všech 10 perceptronů do jedné matice, měli bychom být schopni aplikovat všech 10 perceptronů na vstupní číslice pomocí jedné maticové násobení. Nejpravděpodobnější číslici pak lze najít jednoduše použitím operace `argmax` na výstupu. + +## Výchozí notebook + +Začněte laboratorní úlohu otevřením [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..7203f7f8 --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Úvod do neuronových sítí. Vícevrstvý perceptron + +V předchozí části jste se seznámili s nejjednodušším modelem neuronové sítě – jednovrstvým perceptronem, což je lineární model pro dvoutřídovou klasifikaci. + +V této části rozšíříme tento model na flexibilnější rámec, který nám umožní: + +* provádět **vícetřídovou klasifikaci** kromě dvoutřídové +* řešit **regresní úlohy** kromě klasifikace +* oddělovat třídy, které nejsou lineárně separovatelné + +Také vyvineme vlastní modulární rámec v Pythonu, který nám umožní vytvářet různé architektury neuronových sítí. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizace strojového učení + +Začněme formalizací problému strojového učení. Předpokládejme, že máme trénovací dataset **X** s příslušnými štítky **Y**, a potřebujeme vytvořit model *f*, který bude poskytovat co nejpřesnější predikce. Kvalita predikcí se měří pomocí **ztrátové funkce** ℒ. Často se používají následující ztrátové funkce: + +* Pro regresní úlohy, kdy potřebujeme předpovědět číslo, můžeme použít **absolutní chybu** ∑i|f(x(i))-y(i)| nebo **kvadratickou chybu** ∑i(f(x(i))-y(i))2 +* Pro klasifikaci používáme **0-1 ztrátu** (což je v podstatě totéž jako **přesnost** modelu) nebo **logistickou ztrátu**. + +Pro jednovrstvý perceptron byla funkce *f* definována jako lineární funkce *f(x)=wx+b* (kde *w* je matice vah, *x* je vektor vstupních vlastností a *b* je vektor biasu). U různých architektur neuronových sítí může mít tato funkce složitější formu. + +> V případě klasifikace je často žádoucí získat pravděpodobnosti odpovídajících tříd jako výstup sítě. K převodu libovolných čísel na pravděpodobnosti (např. k normalizaci výstupu) často používáme funkci **softmax** σ, a funkce *f* se stává *f(x)=σ(wx+b)*. + +V definici *f* výše se *w* a *b* nazývají **parametry** θ=⟨*w,b*⟩. Na základě datasetu ⟨**X**,**Y**⟩ můžeme vypočítat celkovou chybu na celém datasetu jako funkci parametrů θ. + +> ✅ **Cílem trénování neuronové sítě je minimalizovat chybu změnou parametrů θ** + +## Optimalizace pomocí gradientního sestupu + +Existuje známá metoda optimalizace funkcí nazvaná **gradientní sestup**. Myšlenka spočívá v tom, že můžeme vypočítat derivaci (v multidimenzionálním případě nazývanou **gradient**) ztrátové funkce vzhledem k parametrům a měnit parametry tak, aby se chyba snižovala. To lze formalizovat následovně: + +* Inicializujte parametry náhodnými hodnotami w(0), b(0) +* Opakujte následující krok mnohokrát: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Během trénování by měly být optimalizační kroky vypočítávány s ohledem na celý dataset (pamatujte, že ztráta se počítá jako součet přes všechny trénovací vzorky). V praxi však bereme malé části datasetu nazývané **minibatch** a počítáme gradienty na základě podmnožiny dat. Protože podmnožina je pokaždé vybírána náhodně, tato metoda se nazývá **stochastický gradientní sestup** (SGD). + +## Vícevrstvé perceptrony a zpětné šíření + +Jednovrstvá síť, jak jsme viděli výše, je schopna klasifikovat lineárně separovatelné třídy. Pro vytvoření bohatšího modelu můžeme kombinovat několik vrstev sítě. Matematicky by to znamenalo, že funkce *f* bude mít složitější formu a bude vypočítávána v několika krocích: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Zde je α **nelineární aktivační funkce**, σ je funkce softmax a parametry jsou θ=<*w1,b1,w2,b2*>. + +Algoritmus gradientního sestupu zůstane stejný, ale výpočet gradientů bude složitější. Na základě pravidla řetězové derivace můžeme vypočítat derivace jako: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Pravidlo řetězové derivace se používá k výpočtu derivací ztrátové funkce vzhledem k parametrům. + +Všimněte si, že levá část všech těchto výrazů je stejná, a proto můžeme efektivně vypočítat derivace počínaje ztrátovou funkcí a postupovat "zpětně" skrz výpočetní graf. Proto se metoda trénování vícevrstvého perceptronu nazývá **zpětné šíření** nebo 'backprop'. + +výpočetní graf + +> TODO: citace obrázku + +> ✅ Zpětné šíření probereme mnohem podrobněji v našem příkladovém notebooku. + +## Závěr + +V této lekci jsme vytvořili vlastní knihovnu neuronových sítí a použili ji pro jednoduchý dvourozměrný klasifikační úkol. + +## 🚀 Výzva + +V přiloženém notebooku implementujete vlastní rámec pro vytváření a trénování vícevrstvých perceptronů. Budete moci podrobně vidět, jak moderní neuronové sítě fungují. + +Pokračujte do notebooku [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) a projděte si ho. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Přehled & Samostudium + +Zpětné šíření je běžný algoritmus používaný v AI a ML, stojí za to ho [studovat podrobněji](https://wikipedia.org/wiki/Backpropagation). + +## [Úkol](lab/README.md) + +V tomto laboratorním cvičení máte za úkol použít rámec, který jste vytvořili v této lekci, k řešení klasifikace ručně psaných číslic MNIST. + +* [Instrukce](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Upozornění**: +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nezodpovídáme za jakékoli nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..17461f8d --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Klasifikace MNIST s naším vlastním frameworkem + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Vyřešte problém klasifikace ručně psaných číslic MNIST pomocí perceptronu s 1, 2 a 3 vrstvami. Použijte framework pro neuronové sítě, který jsme vyvinuli během lekce. + +## Výchozí notebook + +Začněte laboratoř otevřením [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Otázky + +Na základě této laboratoře se pokuste odpovědět na následující otázky: + +- Ovlivňuje aktivační funkce mezi vrstvami výkon sítě? +- Potřebujeme pro tento úkol síť s 2 nebo 3 vrstvami? +- Narazili jste na nějaké problémy při trénování sítě? Zejména při zvyšování počtu vrstev. +- Jak se chovají váhy sítě během trénování? Můžete vykreslit maximální absolutní hodnotu vah v závislosti na epoše, abyste pochopili vztah. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..a00afa72 --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Frameworky pro neuronové sítě + +Jak jsme se již naučili, abychom mohli efektivně trénovat neuronové sítě, musíme udělat dvě věci: + +* Pracovat s tensory, např. násobit, sčítat a počítat některé funkce, jako je sigmoid nebo softmax +* Počítat gradienty všech výrazů, abychom mohli provádět optimalizaci pomocí gradientního sestupu + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Zatímco knihovna `numpy` zvládne první část, potřebujeme nějaký mechanismus pro výpočet gradientů. V [našem frameworku](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), který jsme vytvořili v předchozí sekci, jsme museli ručně programovat všechny derivace funkcí uvnitř metody `backward`, která provádí zpětnou propagaci. Ideálně by nám framework měl umožnit počítat gradienty *jakéhokoliv výrazu*, který můžeme definovat. + +Další důležitou věcí je schopnost provádět výpočty na GPU nebo jiných specializovaných výpočetních jednotkách, jako je [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Trénování hlubokých neuronových sítí vyžaduje *obrovské množství* výpočtů, a možnost paralelizovat tyto výpočty na GPU je velmi důležitá. + +> ✅ Termín 'paralelizovat' znamená rozdělit výpočty mezi více zařízení. + +V současnosti jsou nejpopulárnějšími frameworky pro neuronové sítě: [TensorFlow](http://TensorFlow.org) a [PyTorch](https://pytorch.org/). Oba poskytují nízkoúrovňové API pro práci s tensory na CPU i GPU. Nad těmito nízkoúrovňovými API existují také vysokoúrovňová API, nazývaná [Keras](https://keras.io/) a [PyTorch Lightning](https://pytorchlightning.ai/). + +Nízkoúrovňové API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +Vysokoúrovňové API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Nízkoúrovňová API** v obou frameworcích umožňují vytvářet tzv. **výpočetní grafy**. Tento graf definuje, jak vypočítat výstup (obvykle ztrátovou funkci) s danými vstupními parametry a může být odeslán k výpočtu na GPU, pokud je k dispozici. Existují funkce pro diferenciaci tohoto výpočetního grafu a výpočet gradientů, které lze následně použít k optimalizaci parametrů modelu. + +**Vysokoúrovňová API** považují neuronové sítě za **sekvenci vrstev** a usnadňují konstrukci většiny neuronových sítí. Trénování modelu obvykle vyžaduje přípravu dat a následné zavolání funkce `fit`, která provede potřebné operace. + +Vysokoúrovňová API umožňují velmi rychle sestavit typické neuronové sítě, aniž byste se museli starat o mnoho detailů. Na druhou stranu nízkoúrovňová API poskytují mnohem větší kontrolu nad procesem trénování, a proto se často používají ve výzkumu, když pracujete s novými architekturami neuronových sítí. + +Je také důležité pochopit, že můžete používat obě API společně, např. můžete vyvinout vlastní architekturu vrstvy s použitím nízkoúrovňového API a poté ji použít uvnitř větší sítě vytvořené a trénované pomocí vysokoúrovňového API. Nebo můžete definovat síť pomocí vysokoúrovňového API jako sekvenci vrstev a poté použít vlastní nízkoúrovňovou trénovací smyčku pro optimalizaci. Obě API používají stejné základní koncepty a jsou navržena tak, aby spolu dobře fungovala. + +## Učení + +V tomto kurzu nabízíme většinu obsahu jak pro PyTorch, tak pro TensorFlow. Můžete si vybrat preferovaný framework a projít pouze odpovídající notebooky. Pokud si nejste jisti, který framework zvolit, přečtěte si některé diskuse na internetu na téma **PyTorch vs. TensorFlow**. Můžete se také podívat na oba frameworky, abyste získali lepší představu. + +Kde je to možné, použijeme pro jednoduchost vysokoúrovňová API. Nicméně věříme, že je důležité pochopit, jak neuronové sítě fungují od základů, a proto začínáme prací s nízkoúrovňovým API a tensory. Pokud však chcete začít rychle a nechcete trávit příliš mnoho času učením těchto detailů, můžete tyto části přeskočit a přejít rovnou k notebookům s vysokoúrovňovým API. + +## ✍️ Cvičení: Frameworky + +Pokračujte ve svém učení v následujících noteboocích: + +Nízkoúrovňové API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +Vysokoúrovňové API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Po zvládnutí frameworků si zopakujme pojem přeučení. + +# Přeučení + +Přeučení je extrémně důležitý koncept ve strojovém učení a je velmi důležité jej správně pochopit! + +Zvažte následující problém aproximace 5 bodů (reprezentovaných `x` na grafech níže): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.cs.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.cs.jpg) +-------------------------|-------------------------- +**Lineární model, 2 parametry** | **Nelineární model, 7 parametrů** +Chyba na trénovacích datech = 5.3 | Chyba na trénovacích datech = 0 +Chyba na validačních datech = 5.1 | Chyba na validačních datech = 20 + +* Na levé straně vidíme dobrou aproximaci přímkou. Protože počet parametrů je přiměřený, model správně zachycuje rozložení bodů. +* Na pravé straně je model příliš výkonný. Protože máme pouze 5 bodů a model má 7 parametrů, může se přizpůsobit tak, aby prošel všemi body, což způsobí, že chyba na trénovacích datech bude 0. To však brání modelu pochopit správný vzor v datech, a proto je chyba na validačních datech velmi vysoká. + +Je velmi důležité najít správnou rovnováhu mezi složitostí modelu (počtem parametrů) a počtem trénovacích vzorků. + +## Proč dochází k přeučení + + * Nedostatek trénovacích dat + * Příliš výkonný model + * Příliš mnoho šumu ve vstupních datech + +## Jak detekovat přeučení + +Jak můžete vidět z grafu výše, přeučení lze detekovat velmi nízkou chybou na trénovacích datech a vysokou chybou na validačních datech. Během trénování obvykle vidíme, že chyby na trénovacích i validačních datech začínají klesat, ale v určitém bodě může chyba na validačních datech přestat klesat a začít růst. To bude známka přeučení a indikátor, že bychom měli pravděpodobně trénování v tomto bodě zastavit (nebo alespoň uložit aktuální stav modelu). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.cs.png) + +## Jak zabránit přeučení + +Pokud zjistíte, že dochází k přeučení, můžete udělat následující: + + * Zvýšit množství trénovacích dat + * Snížit složitost modelu + * Použít nějakou [regularizační techniku](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), jako je [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), kterou si později probereme. + +## Přeučení a kompromis mezi zkreslením a rozptylem + +Přeučení je ve skutečnosti případ obecnějšího problému ve statistice nazývaného [kompromis mezi zkreslením a rozptylem](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Pokud vezmeme v úvahu možné zdroje chyb v našem modelu, můžeme rozlišit dva typy chyb: + +* **Chyby způsobené zkreslením** jsou způsobeny tím, že náš algoritmus nedokáže správně zachytit vztah mezi trénovacími daty. Může to být důsledek toho, že náš model není dostatečně výkonný (**podtrénování**). +* **Chyby způsobené rozptylem**, které jsou způsobeny tím, že model aproximuje šum ve vstupních datech místo smysluplného vztahu (**přeučení**). + +Během trénování se chyba způsobená zkreslením snižuje (jak se model učí aproximovat data) a chyba způsobená rozptylem roste. Je důležité zastavit trénování - buď manuálně (když detekujeme přeučení), nebo automaticky (zavedením regularizace) - aby se zabránilo přeučení. + +## Závěr + +V této lekci jste se dozvěděli o rozdílech mezi různými API pro dva nejpopulárnější AI frameworky, TensorFlow a PyTorch. Kromě toho jste se naučili o velmi důležitém tématu, přeučení. + +## 🚀 Výzva + +V přiložených noteboocích najdete na konci 'úkoly'; projděte si notebooky a splňte úkoly. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Přehled a samostudium + +Proveďte výzkum na následující témata: + +- TensorFlow +- PyTorch +- Přeučení + +Zeptejte se sami sebe na následující otázky: + +- Jaký je rozdíl mezi TensorFlow a PyTorch? +- Jaký je rozdíl mezi přeučením a podtrénováním? + +## [Zadání](lab/README.md) + +V tomto laboratorním cvičení máte za úkol vyřešit dva klasifikační problémy pomocí jednovrstvých a vícevrstvých plně propojených sítí s využitím PyTorch nebo TensorFlow. + +* [Instrukce](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..7dbd1eea --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Klasifikace s PyTorch/TensorFlow + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Vyřešte dva klasifikační problémy pomocí jedno- a vícevrstvých plně propojených sítí s využitím PyTorch nebo TensorFlow: + +1. **[Klasifikace kosatců](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - příklad problému s tabulkovými vstupními daty, který lze řešit klasickým strojovým učením. Vaším cílem bude klasifikovat kosatce do 3 tříd na základě 4 číselných parametrů. +1. **MNIST** klasifikace ručně psaných číslic, kterou jsme již viděli. + +Vyzkoušejte různé architektury sítí, abyste dosáhli co nejlepší přesnosti. + +## Výchozí notebook + +Začněte laboratoř otevřením [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/3-NeuralNetworks/README.md b/translations/cs/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..07a7740b --- /dev/null +++ b/translations/cs/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Úvod do neuronových sítí + +![Shrnutí obsahu Úvodu do neuronových sítí v kresbě](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.cs.png) + +Jak jsme si řekli v úvodu, jedním ze způsobů, jak dosáhnout inteligence, je trénovat **počítačový model** nebo **umělý mozek**. Od poloviny 20. století vědci zkoušeli různé matematické modely, až se v posledních letech ukázalo, že tento směr je mimořádně úspěšný. Tyto matematické modely mozku se nazývají **neuronové sítě**. + +> Neuronové sítě se někdy nazývají *Umělé neuronové sítě* (Artificial Neural Networks, ANNs), aby bylo jasné, že mluvíme o modelech, nikoli o skutečných sítích neuronů. + +## Strojové učení + +Neuronové sítě jsou součástí širší disciplíny nazvané **Strojové učení**, jejímž cílem je využívat data k trénování počítačových modelů, které dokážou řešit problémy. Strojové učení tvoří velkou část umělé inteligence, nicméně v tomto kurzu se klasickým strojovým učením nezabýváme. + +> Navštivte náš samostatný **[Strojové učení pro začátečníky](http://github.com/microsoft/ml-for-beginners)** kurz, kde se dozvíte více o klasickém strojovém učení. + +Ve strojovém učení předpokládáme, že máme nějakou datovou sadu příkladů **X** a odpovídající výstupní hodnoty **Y**. Příklady jsou často N-dimenzionální vektory, které se skládají z **atributů**, a výstupy se nazývají **štítky**. + +Budeme se zabývat dvěma nejběžnějšími problémy strojového učení: + +* **Klasifikace**, kde je potřeba zařadit vstupní objekt do dvou nebo více tříd. +* **Regrese**, kde je potřeba předpovědět číselnou hodnotu pro každý z vstupních vzorků. + +> Při reprezentaci vstupů a výstupů jako tenzorů je vstupní datová sada matice o velikosti M×N, kde M je počet vzorků a N je počet atributů. Výstupní štítky Y jsou vektor o velikosti M. + +V tomto kurzu se zaměříme pouze na modely neuronových sítí. + +## Model neuronu + +Z biologie víme, že náš mozek se skládá z nervových buněk, z nichž každá má několik "vstupů" (axony) a jeden výstup (dendrit). Axony a dendrity mohou vést elektrické signály a spojení mezi axony a dendrity mohou vykazovat různé stupně vodivosti (řízené neuromediátory). + +![Model neuronu](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.cs.jpg) | ![Model neuronu](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.cs.png) +----|---- +Skutečný neuron *([Obrázek](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) z Wikipedie)* | Umělý neuron *(Obrázek od autora)* + +Nejjednodušší matematický model neuronu tedy obsahuje několik vstupů X1, ..., XN a jeden výstup Y, a řadu vah W1, ..., WN. Výstup se vypočítá jako: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +kde f je nějaká nelineární **aktivační funkce**. + +> Rané modely neuronu byly popsány v klasickém článku [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) od Warrena McCullocka a Waltera Pittse v roce 1943. Donald Hebb ve své knize "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" navrhl způsob, jak tyto sítě trénovat. + +## V této sekci + +V této sekci se naučíme: +* [Perceptron](03-Perceptron/README.md), jeden z nejstarších modelů neuronových sítí pro klasifikaci do dvou tříd +* [Vícevrstvé sítě](04-OwnFramework/README.md) s přiloženým notebookem [jak vytvořit vlastní framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworky neuronových sítí](05-Frameworks/README.md), s těmito notebooky: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) a [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Přeučení](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/cs/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..4b0b4e1d --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Úvod do počítačového vidění + +[Počítačové vidění](https://wikipedia.org/wiki/Computer_vision) je obor, jehož cílem je umožnit počítačům získat pokročilé porozumění digitálním obrazům. Toto je poměrně široká definice, protože *porozumění* může znamenat mnoho různých věcí, včetně nalezení objektu na obrázku (**detekce objektů**), pochopení, co se děje (**detekce událostí**), popisu obrázku textem nebo rekonstrukce scény ve 3D. Existují také speciální úkoly související s lidskými obrazy: odhad věku a emocí, detekce a identifikace obličeje, odhad 3D pozice a další. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Jedním z nejjednodušších úkolů počítačového vidění je **klasifikace obrázků**. + +Počítačové vidění je často považováno za odvětví AI. V současnosti je většina úkolů počítačového vidění řešena pomocí neuronových sítí. V této sekci se dozvíme více o speciálním typu neuronových sítí používaných pro počítačové vidění, [konvolučních neuronových sítích](../07-ConvNets/README.md). + +Nicméně, než předáte obrázek neuronové síti, v mnoha případech má smysl použít některé algoritmické techniky k vylepšení obrázku. + +Existuje několik knihoven v Pythonu dostupných pro zpracování obrázků: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** lze použít pro čtení/zápis různých formátů obrázků. Podporuje také ffmpeg, užitečný nástroj pro převod video snímků na obrázky. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (známý také jako PIL) je o něco výkonnější a podporuje také některé manipulace s obrázky, jako je morfování, úpravy palety a další. +* **[OpenCV](https://opencv.org/)** je výkonná knihovna pro zpracování obrázků napsaná v C++, která se stala *de facto* standardem pro zpracování obrázků. Má pohodlné rozhraní pro Python. +* **[dlib](http://dlib.net/)** je knihovna v C++, která implementuje mnoho algoritmů strojového učení, včetně některých algoritmů počítačového vidění. Má také rozhraní pro Python a lze ji použít pro náročné úkoly, jako je detekce obličeje a detekce klíčových bodů na obličeji. + +## OpenCV + +[OpenCV](https://opencv.org/) je považováno za *de facto* standard pro zpracování obrázků. Obsahuje mnoho užitečných algoritmů implementovaných v C++. OpenCV můžete volat i z Pythonu. + +Dobré místo pro učení OpenCV je [tento kurz Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). V našem kurzu není cílem naučit se OpenCV, ale ukázat vám některé příklady, kdy jej lze použít a jak. + +### Načítání obrázků + +Obrázky v Pythonu lze pohodlně reprezentovat pomocí NumPy polí. Například černobílé obrázky o velikosti 320x200 pixelů by byly uloženy v poli 200x320 a barevné obrázky stejné velikosti by měly tvar 200x320x3 (pro 3 barevné kanály). K načtení obrázku můžete použít následující kód: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradičně OpenCV používá kódování BGR (modrá-zelená-červená) pro barevné obrázky, zatímco ostatní nástroje v Pythonu používají tradičnější RGB (červená-zelená-modrá). Aby obrázek vypadal správně, je třeba jej převést do barevného prostoru RGB, buď výměnou rozměrů v poli NumPy, nebo voláním funkce OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Stejnou funkci `cvtColor` lze použít k provádění dalších transformací barevného prostoru, jako je převod obrázku na černobílý nebo do barevného prostoru HSV (odstín-sytost-hodnota). + +OpenCV můžete také použít k načítání videa snímek po snímku – příklad je uveden v cvičení [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Zpracování obrázků + +Než obrázek předáte neuronové síti, můžete chtít provést několik kroků předzpracování. OpenCV dokáže mnoho věcí, včetně: + +* **Změny velikosti** obrázku pomocí `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Rozmazání** obrázku pomocí `im = cv2.medianBlur(im,3)` nebo `im = cv2.GaussianBlur(im, (3,3), 0)` +* Změna **jasu a kontrastu** obrázku může být provedena manipulací s poli NumPy, jak je popsáno [v této poznámce na Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Použití [práhování](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) voláním funkcí `cv2.threshold`/`cv2.adaptiveThreshold`, což je často vhodnější než úprava jasu nebo kontrastu. +* Použití různých [transformací](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) na obrázek: + - **[Afinní transformace](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** mohou být užitečné, pokud potřebujete kombinovat rotaci, změnu velikosti a zkosení obrázku a znáte zdrojovou a cílovou polohu tří bodů na obrázku. Afinní transformace zachovávají rovnoběžné čáry rovnoběžné. + - **[Perspektivní transformace](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** mohou být užitečné, když znáte zdrojové a cílové pozice 4 bodů na obrázku. Například pokud pořídíte fotografii obdélníkového dokumentu pomocí kamery smartphonu z určitého úhlu a chcete vytvořit obdélníkový obrázek samotného dokumentu. +* Pochopení pohybu uvnitř obrázku pomocí **[optického toku](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Příklady použití počítačového vidění + +V našem [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) uvádíme některé příklady, kdy lze počítačové vidění použít k provádění konkrétních úkolů: + +* **Předzpracování fotografie Braillovy knihy**. Zaměřujeme se na to, jak můžeme použít práhování, detekci prvků, perspektivní transformaci a manipulace s NumPy k oddělení jednotlivých Braillových symbolů pro další klasifikaci neuronovou sítí. + +![Braillův obrázek](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.cs.jpeg) | ![Předzpracovaný Braillův obrázek](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.cs.png) | ![Braillovy symboly](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.cs.png) +----|-----|----- + +> Obrázek z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekce pohybu ve videu pomocí rozdílu snímků**. Pokud je kamera pevná, pak by snímky z kamerového záznamu měly být velmi podobné. Protože snímky jsou reprezentovány jako pole, pouhým odečtením těchto polí pro dva po sobě jdoucí snímky získáme rozdíl pixelů, který by měl být nízký pro statické snímky a vyšší, pokud je v obraze výrazný pohyb. + +![Obrázek video snímků a rozdílů snímků](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.cs.png) + +> Obrázek z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekce pohybu pomocí optického toku**. [Optický tok](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nám umožňuje pochopit, jak se jednotlivé pixely na video snímcích pohybují. Existují dva typy optického toku: + + - **Hustý optický tok** vypočítává vektorové pole, které ukazuje, kam se každý pixel pohybuje. + - **Řídký optický tok** je založen na výběru některých výrazných prvků na obrázku (např. hran) a sestavení jejich trajektorie snímek po snímku. + +![Obrázek optického toku](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.cs.png) + +> Obrázek z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Příkladové notebooky: OpenCV [vyzkoušejte OpenCV v akci](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Pojďme provést několik experimentů s OpenCV prozkoumáním [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Závěr + +Někdy lze relativně složité úkoly, jako je detekce pohybu nebo detekce špičky prstu, vyřešit čistě pomocí počítačového vidění. Proto je velmi užitečné znát základní techniky počítačového vidění a co knihovny jako OpenCV dokážou. + +## 🚀 Výzva + +Podívejte se na [toto 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) z AI show, abyste se dozvěděli o projektu Cortic Tigers a o tom, jak vytvořili řešení založené na blocích pro demokratizaci úkolů počítačového vidění prostřednictvím robota. Proveďte průzkum dalších podobných projektů, které pomáhají novým studentům vstoupit do tohoto oboru. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Přehled & Samostudium + +Přečtěte si více o optickém toku [v tomto skvělém tutoriálu](https://learnopencv.com/optical-flow-in-opencv/). + +## [Úkol](lab/README.md) + +V tomto cvičení natočíte video s jednoduchými gesty a vaším cílem bude extrahovat pohyby nahoru/dolů/vlevo/vpravo pomocí optického toku. + +Snímek pohybu dlaně + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/cs/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..dd2d0a11 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Detekce pohybů pomocí optického toku + +Laboratorní úkol z [kurikula AI pro začátečníky](https://aka.ms/ai-beginners). + +## Úkol + +Podívejte se na [toto video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), ve kterém se dlaň osoby pohybuje doleva/doprava/nahoru/dolů na stabilním pozadí. + +**Vaším cílem** bude použít optický tok k určení, které části videa obsahují pohyby nahoru/dolů/doleva/doprava. + +**Rozšířený cíl** by byl skutečně sledovat pohyb dlaně/prstu pomocí tónu pleti, jak je popsáno [v tomto blogovém příspěvku](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) nebo [zde](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Výchozí notebook + +Začněte laboratoř otevřením [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Závěr + +Někdy lze relativně složité úkoly, jako je detekce pohybu nebo detekce špičky prstu, vyřešit čistě pomocí počítačového vidění. Proto je velmi užitečné vědět, co knihovny jako OpenCV dokážou. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/cs/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..30dc6987 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Dobře známé architektury CNN + +### VGG-16 + +VGG-16 je síť, která v roce 2014 dosáhla 92,7% přesnosti v klasifikaci ImageNet top-5. Má následující strukturu vrstev: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.cs.jpg) + +Jak můžete vidět, VGG využívá tradiční pyramidovou architekturu, což je sekvence vrstev konvoluce a pooling. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.cs.jpg) + +> Obrázek z [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 je rodina modelů navržená Microsoft Research v roce 2015. Hlavní myšlenkou ResNet je použití **reziduálních bloků**: + + + +> Obrázek z [tohoto článku](https://arxiv.org/pdf/1512.03385.pdf) + +Důvodem použití identity pass-through je, aby naše vrstva předpovídala **rozdíl** mezi výsledkem předchozí vrstvy a výstupem reziduálního bloku - odtud název *reziduální*. Tyto bloky se mnohem snáze trénují a je možné vytvořit sítě s několika stovkami těchto bloků (nejběžnější varianty jsou ResNet-52, ResNet-101 a ResNet-152). + +Tuto síť si také můžete představit jako schopnou přizpůsobit svou složitost datové sadě. Na začátku, když začínáte síť trénovat, jsou hodnoty vah malé a většina signálu prochází vrstvami identity. Jak trénink pokračuje a váhy se zvětšují, význam parametrů sítě roste a síť se přizpůsobuje tak, aby poskytla potřebnou expresivní sílu pro správnou klasifikaci tréninkových obrázků. + +### Google Inception + +Architektura Google Inception posouvá tuto myšlenku o krok dál a buduje každou vrstvu sítě jako kombinaci několika různých cest: + + + +> Obrázek z [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Zde je třeba zdůraznit roli konvolucí 1x1, protože na první pohled nedávají smysl. Proč bychom měli procházet obrázek filtrem 1x1? Musíte si však uvědomit, že konvoluční filtry pracují také s několika hloubkovými kanály (původně - RGB barvy, v následných vrstvách - kanály pro různé filtry) a konvoluce 1x1 se používá k míchání těchto vstupních kanálů pomocí různých trénovatelných vah. Může být také považována za downsampling (pooling) přes dimenzi kanálů. + +Zde je [dobrý blogový příspěvek](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) na toto téma a [původní článek](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet je rodina modelů s redukovanou velikostí, vhodná pro mobilní zařízení. Použijte je, pokud máte omezené zdroje a můžete obětovat trochu přesnosti. Hlavní myšlenkou je tzv. **hloubkově separovatelná konvoluce**, která umožňuje reprezentovat konvoluční filtry jako kompozici prostorových konvolucí a konvoluce 1x1 přes hloubkové kanály. To výrazně snižuje počet parametrů, což činí síť menší a také snadněji trénovatelnou s menším množstvím dat. + +Zde je [dobrý blogový příspěvek o MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Závěr + +V této kapitole jste se naučili hlavní koncept za neuronovými sítěmi pro počítačové vidění - konvolučními sítěmi. Architektury používané v reálném světě pro klasifikaci obrázků, detekci objektů a dokonce i generování obrázků jsou všechny založeny na CNN, jen s více vrstvami a některými dalšími tréninkovými triky. + +## 🚀 Výzva + +V přiložených noteboocích jsou poznámky na konci o tom, jak dosáhnout vyšší přesnosti. Udělejte několik experimentů a zjistěte, zda můžete dosáhnout vyšší přesnosti. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Přehled & Samostudium + +I když se CNN nejčastěji používají pro úlohy počítačového vidění, obecně jsou dobré pro extrakci vzorů s pevnou velikostí. Například pokud pracujeme se zvuky, můžeme také chtít použít CNN k hledání specifických vzorů v audio signálu - v takovém případě by filtry byly jednorozměrné (a tato CNN by se nazývala 1D-CNN). Také se někdy používá 3D-CNN k extrakci funkcí v vícerozměrném prostoru, například určitých událostí, které se odehrávají na videu - CNN může zachytit určité vzory změn funkcí v průběhu času. Udělejte si přehled a samostudium o dalších úlohách, které lze s CNN provádět. + +## [Úkol](lab/README.md) + +V tomto laboratorním cvičení máte za úkol klasifikovat různé plemena koček a psů. Tyto obrázky jsou složitější než dataset MNIST, mají vyšší rozměry a je zde více než 10 tříd. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nenese odpovědnost za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/cs/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..6867c8a8 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konvoluční neuronové sítě + +Už jsme viděli, že neuronové sítě jsou poměrně dobré při práci s obrázky, a dokonce i jednovrstvý perceptron dokáže rozpoznat ručně psané číslice z datasetu MNIST s přiměřenou přesností. Dataset MNIST je však velmi specifický – všechna čísla jsou vycentrovaná uvnitř obrázku, což úlohu zjednodušuje. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +V reálném světě chceme být schopni rozpoznat objekty na obrázku bez ohledu na jejich přesnou polohu. Počítačové vidění se liší od obecné klasifikace, protože když se snažíme najít určitý objekt na obrázku, prohledáváme obraz a hledáme specifické **vzory** a jejich kombinace. Například při hledání kočky bychom mohli nejprve hledat horizontální linie, které mohou tvořit vousky, a poté určitá kombinace vousků nám může říct, že se jedná o obrázek kočky. Relativní poloha a přítomnost určitých vzorů jsou důležité, nikoli jejich přesná poloha na obrázku. + +K extrakci vzorů použijeme pojem **konvolučních filtrů**. Jak víte, obrázek je reprezentován jako 2D matice nebo 3D tenzor s barevnou hloubkou. Aplikace filtru znamená, že vezmeme relativně malou matici **jádra filtru** a pro každý pixel v původním obrázku vypočítáme vážený průměr s okolními body. Můžeme si to představit jako malé okno, které se posouvá po celém obrázku a průměruje všechny pixely podle vah v matici jádra filtru. + +![Vertikální filtr hran](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.cs.png) | ![Horizontální filtr hran](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.cs.png) +----|---- + +> Obrázek od Dmitry Soshnikov + +Například pokud aplikujeme 3x3 vertikální a horizontální filtry hran na číslice z MNIST, získáme zvýraznění (např. vysoké hodnoty) tam, kde jsou vertikální a horizontální hrany v původním obrázku. Tyto dva filtry tedy mohou být použity k "hledání" hran. Podobně můžeme navrhnout různé filtry pro hledání jiných nízkoúrovňových vzorů: + +> Obrázek [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Nicméně, zatímco můžeme navrhnout filtry pro extrakci některých vzorů ručně, můžeme také navrhnout síť tak, aby se vzory učila automaticky. To je jedna z hlavních myšlenek za CNN. + +## Hlavní myšlenky za CNN + +Fungování CNN je založeno na následujících důležitých myšlenkách: + +* Konvoluční filtry dokážou extrahovat vzory +* Síť můžeme navrhnout tak, aby se filtry učily automaticky +* Stejný přístup můžeme použít k hledání vzorů ve vysokoúrovňových prvcích, nejen v původním obrázku. Extrakce vlastností v CNN tedy funguje na hierarchii vlastností, počínaje nízkoúrovňovými kombinacemi pixelů až po vysokoúrovňové kombinace částí obrázku. + +![Hierarchická extrakce vlastností](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.cs.png) + +> Obrázek z [práce Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), založený na [jejich výzkumu](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Cvičení: Konvoluční neuronové sítě + +Pokračujme v průzkumu, jak konvoluční neuronové sítě fungují a jak můžeme dosáhnout trénovatelných filtrů, prostřednictvím následujících notebooků: + +* [Konvoluční neuronové sítě - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvoluční neuronové sítě - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Pyramidová architektura + +Většina CNN používaných pro zpracování obrázků následuje tzv. pyramidovou architekturu. První konvoluční vrstva aplikovaná na původní obrázky obvykle obsahuje relativně malý počet filtrů (8-16), které odpovídají různým kombinacím pixelů, jako jsou horizontální/vertikální linie nebo tahy. Na další úrovni snižujeme prostorovou dimenzi sítě a zvyšujeme počet filtrů, což odpovídá většímu počtu možných kombinací jednoduchých vlastností. S každou vrstvou, jak se blížíme k finálnímu klasifikátoru, se prostorové rozměry obrázku zmenšují a počet filtrů roste. + +Jako příklad se podívejme na architekturu VGG-16, sítě, která dosáhla 92,7% přesnosti v top-5 klasifikaci ImageNet v roce 2014: + +![Vrstvy ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.cs.jpg) + +![Pyramida ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.cs.jpg) + +> Obrázek z [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) + +## Nejznámější architektury CNN + +[Pokračujte ve studiu nejznámějších architektur CNN](CNN_Architectures.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/cs/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..756dc885 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Klasifikace obličejů domácích mazlíčků + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Představte si, že potřebujete vyvinout aplikaci pro školku domácích mazlíčků, která by katalogizovala všechna zvířata. Jednou z úžasných funkcí takové aplikace by bylo automatické rozpoznání plemene z fotografie. Toho lze úspěšně dosáhnout pomocí neuronových sítí. + +Vaším úkolem je natrénovat konvoluční neuronovou síť, která bude klasifikovat různá plemena koček a psů pomocí datasetu **Pet Faces**. + +## Dataset + +Použijeme dataset **Pet Faces**, který je odvozen z datasetu domácích mazlíčků [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Obsahuje 35 různých plemen psů a koček. + +![Dataset, se kterým budeme pracovat](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.cs.png) + +Pro stažení datasetu použijte tento úryvek kódu: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Výchozí notebook + +Začněte laboratoř otevřením [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Závěr + +Vyřešili jste poměrně složitý problém klasifikace obrázků od základů! Bylo zde mnoho tříd, a přesto jste byli schopni dosáhnout rozumné přesnosti! Má také smysl měřit top-k přesnost, protože je snadné zaměnit některé třídy, které nejsou jasně odlišitelné ani pro lidské oko. + +**Prohlášení**: +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..554eef92 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Předtrénované sítě a transfer learning + +Trénování CNN může zabrat hodně času a vyžaduje velké množství dat. Nicméně většina času je strávena učením nejlepších nízkoúrovňových filtrů, které síť může použít k extrakci vzorů z obrázků. Vyvstává přirozená otázka – můžeme použít neuronovou síť natrénovanou na jednom datasetu a přizpůsobit ji k klasifikaci jiných obrázků bez nutnosti kompletního trénovacího procesu? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Tento přístup se nazývá **transfer learning**, protože přenášíme určité znalosti z jednoho modelu neuronové sítě na jiný. V transfer learningu obvykle začínáme s předtrénovaným modelem, který byl natrénován na nějakém velkém datasetu obrázků, jako je například **ImageNet**. Tyto modely už dokážou dobře extrahovat různé rysy z obecných obrázků, a v mnoha případech stačí postavit klasifikátor na vrcholu těchto extrahovaných rysů, aby bylo dosaženo dobrého výsledku. + +> ✅ Transfer learning je termín, který najdete i v jiných akademických oborech, například ve vzdělávání. Odkazuje na proces přenosu znalostí z jedné oblasti do jiné. + +## Předtrénované modely jako extraktory rysů + +Konvoluční sítě, o kterých jsme mluvili v předchozí sekci, obsahují řadu vrstev, z nichž každá má za úkol extrahovat určité rysy z obrázku, počínaje nízkoúrovňovými kombinacemi pixelů (například horizontální/vertikální čáry nebo tahy), až po vyšší úrovně kombinací rysů, odpovídající věcem jako oko nebo plamen. Pokud natrénujeme CNN na dostatečně velkém datasetu obecných a různorodých obrázků, síť by měla být schopna naučit se extrahovat tyto běžné rysy. + +Keras i PyTorch obsahují funkce pro snadné načtení předtrénovaných vah neuronových sítí pro některé běžné architektury, z nichž většina byla natrénována na obrázcích z ImageNetu. Nejčastěji používané jsou popsány na stránce [CNN Architectures](../07-ConvNets/CNN_Architectures.md) z předchozí lekce. Zejména můžete zvážit použití jednoho z následujících: + +* **VGG-16/VGG-19**, což jsou relativně jednoduché modely, které stále poskytují dobrou přesnost. Často je dobré začít s VGG jako první pokus, abyste viděli, jak transfer learning funguje. +* **ResNet** je rodina modelů navržená Microsoft Research v roce 2015. Mají více vrstev, a proto vyžadují více zdrojů. +* **MobileNet** je rodina modelů s menší velikostí, vhodná pro mobilní zařízení. Použijte je, pokud máte omezené zdroje a můžete obětovat trochu přesnosti. + +Zde jsou ukázkové rysy extrahované z obrázku kočky pomocí sítě VGG-16: + +![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.cs.png) + +## Dataset Kočky vs. Psi + +V tomto příkladu použijeme dataset [Kočky a Psi](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), který je velmi blízký reálnému scénáři klasifikace obrázků. + +## ✍️ Cvičení: Transfer Learning + +Podívejme se na transfer learning v akci v odpovídajících noteboocích: + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Vizualizace Adversarial Cat + +Předtrénovaná neuronová síť obsahuje různé vzory uvnitř svého *mozku*, včetně představ o **ideální kočce** (stejně jako ideálním psovi, ideální zebře atd.). Bylo by zajímavé nějak **vizualizovat tento obrázek**. Nicméně to není jednoduché, protože vzory jsou rozprostřeny po celých vahách sítě a také organizovány v hierarchické struktuře. + +Jedním z přístupů, které můžeme použít, je začít s náhodným obrázkem a poté se pokusit pomocí techniky **optimalizace gradientního sestupu** upravit tento obrázek tak, aby síť začala myslet, že je to kočka. + +![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.cs.png) + +Pokud to však uděláme, dostaneme něco velmi podobného náhodnému šumu. To je proto, že *existuje mnoho způsobů, jak síť přimět myslet si, že vstupní obrázek je kočka*, včetně některých, které vizuálně nedávají smysl. Zatímco tyto obrázky obsahují mnoho vzorů typických pro kočku, nic je nenutí být vizuálně rozlišitelné. + +Pro zlepšení výsledku můžeme do ztrátové funkce přidat další termín, který se nazývá **variation loss**. Je to metrika, která ukazuje, jak podobné jsou sousední pixely obrázku. Minimalizace variation loss činí obrázek hladším a zbavuje se šumu – tím odhaluje vizuálně přitažlivější vzory. Zde je příklad takových "ideálních" obrázků, které jsou klasifikovány jako kočka a zebra s vysokou pravděpodobností: + +![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.cs.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.cs.png) +-----|----- + *Ideální kočka* | *Ideální zebra* + +Podobný přístup lze použít k provádění tzv. **adversarial attacks** na neuronovou síť. Představme si, že chceme oklamat neuronovou síť a přimět ji, aby psa považovala za kočku. Pokud vezmeme obrázek psa, který je sítí rozpoznán jako pes, můžeme jej trochu upravit pomocí optimalizace gradientního sestupu, dokud síť nezačne klasifikovat obrázek jako kočku: + +![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.cs.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.cs.png) +-----|----- +*Původní obrázek psa* | *Obrázek psa klasifikovaný jako kočka* + +Podívejte se na kód pro reprodukci výše uvedených výsledků v následujícím notebooku: + +* [Ideal and Adversarial Cat - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Závěr + +Pomocí transfer learningu můžete rychle sestavit klasifikátor pro úlohu klasifikace vlastních objektů a dosáhnout vysoké přesnosti. Vidíte, že složitější úlohy, které nyní řešíme, vyžadují vyšší výpočetní výkon a nelze je snadno řešit na CPU. V další jednotce se pokusíme použít lehčí implementaci k natrénování stejného modelu s nižšími výpočetními zdroji, což povede jen k mírně nižší přesnosti. + +## 🚀 Výzva + +V doprovodných noteboocích jsou poznámky na konci o tom, jak transfer knowledge nejlépe funguje s poněkud podobnými trénovacími daty (například nový typ zvířete). Proveďte experimenty s úplně novými typy obrázků, abyste zjistili, jak dobře nebo špatně vaše modely transfer knowledge fungují. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Přehled & Samostudium + +Projděte si [TrainingTricks.md](TrainingTricks.md), abyste si prohloubili znalosti o dalších způsobech trénování modelů. + +## [Úkol](lab/README.md) + +V tomto labu použijeme reálný dataset [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) domácích mazlíčků s 35 plemeny koček a psů a vytvoříme klasifikátor pomocí transfer learningu. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..87b82f23 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Triky pro trénování hlubokého učení + +Jak se neuronové sítě stávají hlubšími, proces jejich trénování se stává stále náročnějším. Jedním z hlavních problémů jsou tzv. [mizící gradienty](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) nebo [explodující gradienty](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Tento článek](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) poskytuje dobrý úvod do těchto problémů. + +Aby bylo trénování hlubokých sítí efektivnější, existuje několik technik, které lze použít. + +## Udržování hodnot v rozumném intervalu + +Aby byly numerické výpočty stabilnější, chceme zajistit, že všechny hodnoty v naší neuronové síti budou v rozumném měřítku, obvykle [-1..1] nebo [0..1]. Není to příliš přísný požadavek, ale povaha výpočtů s plovoucí desetinnou čárkou je taková, že hodnoty různých velikostí nelze přesně manipulovat společně. Například pokud sečteme 10-10 a 1010, pravděpodobně dostaneme 1010, protože menší hodnota bude „převedena“ na stejný řád jako větší, a tím se ztratí mantisa. + +Většina aktivačních funkcí má nelinearity kolem [-1..1], a proto má smysl škálovat všechna vstupní data do intervalu [-1..1] nebo [0..1]. + +## Inicializace počátečních vah + +Ideálně chceme, aby hodnoty zůstaly ve stejném rozsahu po průchodu vrstvami sítě. Proto je důležité inicializovat váhy tak, aby zachovaly rozložení hodnot. + +Normální rozložení **N(0,1)** není dobrý nápad, protože pokud máme *n* vstupů, standardní odchylka výstupu bude *n*, a hodnoty pravděpodobně vyskočí z intervalu [0..1]. + +Často se používají následující inicializace: + + * Rovnoměrné rozložení -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** zaručuje, že pro vstupy s nulovou střední hodnotou a standardní odchylkou 1 zůstane stejná střední hodnota/standardní odchylka + * **N(0,√2/(n_in+n_out))** -- tzv. **Xavierova inicializace** (`glorot`), která pomáhá udržet signály v rozsahu během předního i zpětného šíření + +## Normalizace batchů + +I při správné inicializaci vah se mohou váhy během trénování stát libovolně velkými nebo malými, což vyvede signály z požadovaného rozsahu. Signály můžeme vrátit zpět pomocí jedné z technik **normalizace**. Zatímco existuje několik z nich (normalizace vah, normalizace vrstev), nejčastěji používaná je normalizace batchů. + +Myšlenka **normalizace batchů** spočívá v tom, že vezmeme v úvahu všechny hodnoty napříč minibatchem a provedeme normalizaci (tj. odečteme střední hodnotu a vydělíme standardní odchylkou) na základě těchto hodnot. Je implementována jako vrstva sítě, která provádí tuto normalizaci po aplikaci vah, ale před aktivační funkcí. Výsledkem je pravděpodobně vyšší konečná přesnost a rychlejší trénování. + +Zde je [původní článek](https://arxiv.org/pdf/1502.03167.pdf) o normalizaci batchů, [vysvětlení na Wikipedii](https://en.wikipedia.org/wiki/Batch_normalization) a [dobrý úvodní blogový příspěvek](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (a jeden [v ruštině](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** je zajímavá technika, která během trénování odstraňuje určité procento náhodných neuronů. Je také implementována jako vrstva s jedním parametrem (procento neuronů k odstranění, obvykle 10%-50%), a během trénování nuluje náhodné prvky vstupního vektoru, než je předá do další vrstvy. + +I když to může znít jako zvláštní nápad, můžete vidět efekt dropout na trénování klasifikátoru číslic MNIST v notebooku [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Zrychluje trénování a umožňuje dosáhnout vyšší přesnosti v méně epochách. + +Tento efekt lze vysvětlit několika způsoby: + + * Může být považován za náhodný šokový faktor pro model, který vyvede optimalizaci z lokálního minima + * Může být považován za *implicitní průměrování modelu*, protože můžeme říci, že během dropout trénujeme mírně odlišný model + +> *Někteří lidé říkají, že když se opilý člověk snaží něco naučit, zapamatuje si to lépe následující ráno ve srovnání se střízlivým člověkem, protože mozek s některými nefunkčními neurony se snaží lépe přizpůsobit a pochopit význam. Nikdy jsme sami netestovali, zda je to pravda.* + +## Prevence přeučení + +Jedním z velmi důležitých aspektů hlubokého učení je schopnost zabránit [přeučení](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). I když může být lákavé použít velmi výkonný model neuronové sítě, měli bychom vždy vyvážit počet parametrů modelu s počtem trénovacích vzorků. + +> Ujistěte se, že rozumíte konceptu [přeučení](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), který jsme představili dříve! + +Existuje několik způsobů, jak zabránit přeučení: + + * Předčasné zastavení -- průběžné sledování chyby na validační sadě a zastavení trénování, když validační chyba začne růst. + * Explicitní úbytek vah / Regularizace -- přidání dodatečné penalizace do ztrátové funkce za vysoké absolutní hodnoty vah, což zabraňuje modelu dosáhnout velmi nestabilních výsledků + * Průměrování modelu -- trénování několika modelů a následné průměrování výsledků. To pomáhá minimalizovat rozptyl. + * Dropout (Implicitní průměrování modelu) + +## Optimalizátory / Trénovací algoritmy + +Dalším důležitým aspektem trénování je výběr dobrého trénovacího algoritmu. Zatímco klasický **gradientní sestup** je rozumnou volbou, může být někdy příliš pomalý nebo způsobovat jiné problémy. + +V hlubokém učení používáme **Stochastický gradientní sestup** (SGD), což je gradientní sestup aplikovaný na minibatche, náhodně vybrané z trénovací sady. Váhy se upravují podle tohoto vzorce: + +wt+1 = wt - η∇ℒ + +### Momentum + +V **momentum SGD** uchováváme část gradientu z předchozích kroků. Je to podobné jako když se pohybujeme někam s setrvačností, a dostaneme ránu jiným směrem, naše trajektorie se nezmění okamžitě, ale zachová část původního pohybu. Zde zavádíme další vektor v, který reprezentuje *rychlost*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Parametr γ zde určuje, do jaké míry bereme setrvačnost v úvahu: γ=0 odpovídá klasickému SGD; γ=1 je čistá pohybová rovnice. + +### Adam, Adagrad, atd. + +Protože v každé vrstvě násobíme signály nějakou maticí Wi, v závislosti na ||Wi|| může gradient buď mizet a být blízko 0, nebo růst neomezeně. To je podstata problému Explodujících/Mizících Gradientů. + +Jedním z řešení tohoto problému je použít pouze směr gradientu ve vzorci a ignorovat absolutní hodnotu, tj. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), kde ||∇ℒ|| = √∑(∇ℒ)2 + +Tento algoritmus se nazývá **Adagrad**. Další algoritmy, které používají stejnou myšlenku: **RMSProp**, **Adam** + +> **Adam** je považován za velmi efektivní algoritmus pro mnoho aplikací, takže pokud si nejste jisti, který použít - použijte Adam. + +### Ořezávání gradientu + +Ořezávání gradientu je rozšíření výše uvedené myšlenky. Když ||∇ℒ|| ≤ θ, uvažujeme původní gradient při optimalizaci vah, a když ||∇ℒ|| > θ - dělíme gradient jeho normou. Zde je θ parametr, ve většině případů můžeme vzít θ=1 nebo θ=10. + +### Úbytek rychlosti učení + +Úspěch trénování často závisí na parametru rychlosti učení η. Je logické předpokládat, že větší hodnoty η vedou k rychlejšímu trénování, což je něco, co obvykle chceme na začátku trénování, a poté menší hodnoty η umožňují jemné doladění sítě. Proto ve většině případů chceme během trénování snižovat η. + +To lze provést násobením η nějakým číslem (např. 0,98) po každé epoše trénování, nebo použitím složitějšího **plánu rychlosti učení**. + +## Různé architektury sítí + +Výběr správné architektury sítě pro váš problém může být složitý. Obvykle bychom zvolili architekturu, která se osvědčila pro náš konkrétní úkol (nebo podobný). Zde je [dobrý přehled](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) architektur neuronových sítí pro počítačové vidění. + +> Je důležité zvolit architekturu, která bude dostatečně výkonná pro počet trénovacích vzorků, které máme. Výběr příliš výkonného modelu může vést k [přeučení](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Dalším dobrým způsobem by bylo použít architekturu, která se automaticky přizpůsobí požadované složitosti. Do určité míry jsou architektury **ResNet** a **Inception** samopřizpůsobivé. [Více o architekturách pro počítačové vidění](../07-ConvNets/CNN_Architectures.md). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..c1066914 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Klasifikace Oxfordských mazlíčků pomocí transferového učení + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Představte si, že potřebujete vyvinout aplikaci pro školku pro mazlíčky, která by katalogizovala všechna zvířata. Jednou z úžasných funkcí takové aplikace by bylo automatické rozpoznání plemene z fotografie. V tomto úkolu použijeme transferové učení k klasifikaci reálných obrázků mazlíčků z datasetu [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Dataset + +Použijeme původní dataset [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), který obsahuje 35 různých plemen psů a koček. + +Pro stažení datasetu použijte tento kód: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Spuštění notebooku + +Začněte laboratorní úkol otevřením [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Shrnutí + +Transferové učení a předtrénované sítě nám umožňují relativně snadno řešit reálné problémy klasifikace obrázků. Nicméně předtrénované sítě fungují dobře na obrázcích podobného typu, a pokud začneme klasifikovat velmi odlišné obrázky (např. lékařské snímky), pravděpodobně dosáhneme mnohem horších výsledků. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/cs/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..cbe5d7b3 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoenkodéry + +Při trénování CNN je jedním z problémů potřeba velkého množství označených dat. V případě klasifikace obrázků je nutné rozdělit obrázky do různých tříd, což vyžaduje manuální úsilí. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Můžeme však chtít použít surová (neoznačená) data pro trénování CNN extraktorů funkcí, což se nazývá **self-supervised learning**. Místo štítků použijeme trénovací obrázky jako vstup i výstup sítě. Hlavní myšlenkou **autoenkodéru** je, že budeme mít **enkodér síť**, která převede vstupní obrázek do nějakého **latentního prostoru** (obvykle je to jen vektor menší velikosti), a poté **dekodér síť**, jejímž cílem bude rekonstruovat původní obrázek. + +> ✅ [Autoenkodér](https://wikipedia.org/wiki/Autoencoder) je "typ umělé neuronové sítě používané k učení efektivního kódování neoznačených dat." + +Protože trénujeme autoenkodér, aby zachytil co nejvíce informací z původního obrázku pro přesnou rekonstrukci, síť se snaží najít nejlepší **embedding** vstupních obrázků, aby zachytila jejich význam. + +![Schéma Autoenkodéru](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.cs.jpg) + +> Obrázek z [blogu Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scénáře použití Autoenkodérů + +Ačkoli samotná rekonstrukce původních obrázků nemusí být užitečná, existuje několik scénářů, kde jsou autoenkodéry obzvláště užitečné: + +* **Snížení dimenze obrázků pro vizualizaci** nebo **trénování embeddingů obrázků**. Autoenkodéry obvykle poskytují lepší výsledky než PCA, protože berou v úvahu prostorovou povahu obrázků a hierarchické funkce. +* **Odstraňování šumu**, tj. odstranění šumu z obrázku. Protože šum obsahuje mnoho zbytečných informací, autoenkodér nemůže vše vměstnat do relativně malého latentního prostoru, a tak zachytí pouze důležité části obrázku. Při trénování odstraňovačů šumu začínáme s původními obrázky a používáme obrázky s uměle přidaným šumem jako vstup pro autoenkodér. +* **Super-rezoluce**, zvýšení rozlišení obrázku. Začínáme s obrázky ve vysokém rozlišení a používáme obrázky s nižším rozlišením jako vstup pro autoenkodér. +* **Generativní modely**. Jakmile autoenkodér vytrénujeme, dekodér může být použit k vytvoření nových objektů na základě náhodných latentních vektorů. + +## Variabilní Autoenkodéry (VAE) + +Tradiční autoenkodéry nějakým způsobem snižují dimenzi vstupních dat a zjišťují důležité vlastnosti vstupních obrázků. Latentní vektory však často nedávají příliš smysl. Jinými slovy, pokud vezmeme dataset MNIST jako příklad, zjistit, které číslice odpovídají různým latentním vektorům, není snadný úkol, protože blízké latentní vektory nemusí nutně odpovídat stejným číslicím. + +Na druhou stranu, pro trénování *generativních* modelů je lepší mít nějaké porozumění latentnímu prostoru. Tato myšlenka nás vede k **variabilnímu autoenkodéru** (VAE). + +VAE je autoenkodér, který se učí předpovídat *statistické rozdělení* latentních parametrů, tzv. **latentní rozdělení**. Například můžeme chtít, aby latentní vektory byly normálně rozdělené s nějakým průměrem zmean a standardní odchylkou zsigma (průměr i standardní odchylka jsou vektory nějaké dimenze d). Enkodér ve VAE se učí předpovídat tyto parametry a dekodér poté vezme náhodný vektor z tohoto rozdělení k rekonstrukci objektu. + +Shrnutí: + + * Ze vstupního vektoru předpovídáme `z_mean` a `z_log_sigma` (místo předpovídání samotné standardní odchylky předpovídáme její logaritmus) + * Vzorkujeme vektor `sample` z rozdělení N(zmean,exp(zlog\_sigma)) + * Dekodér se snaží dekódovat původní obrázek pomocí `sample` jako vstupního vektoru + + + +> Obrázek z [tohoto blogového příspěvku](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) od Isaaka Dykemana + +Variabilní autoenkodéry používají komplexní ztrátovou funkci, která se skládá ze dvou částí: + +* **Ztráta rekonstrukce** je ztrátová funkce, která ukazuje, jak blízko je rekonstruovaný obrázek cíli (může to být Mean Squared Error, nebo MSE). Je to stejná ztrátová funkce jako u běžných autoenkodérů. +* **KL ztráta**, která zajišťuje, že rozdělení latentních proměnných zůstává blízko normálnímu rozdělení. Je založena na pojmu [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - metrice pro odhad podobnosti dvou statistických rozdělení. + +Jednou z důležitých výhod VAE je, že umožňují relativně snadno generovat nové obrázky, protože víme, z jakého rozdělení vzorkovat latentní vektory. Například pokud trénujeme VAE s 2D latentním vektorem na MNIST, můžeme poté měnit komponenty latentního vektoru, abychom získali různé číslice: + +vaemnist + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +Pozorujte, jak se obrázky prolínají, když začneme získávat latentní vektory z různých částí prostoru latentních parametrů. Tento prostor můžeme také vizualizovat ve 2D: + +vaemnist cluster + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Cvičení: Autoenkodéry + +Zjistěte více o autoenkodérech v těchto odpovídajících noteboocích: + +* [Autoenkodéry v TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoenkodéry v PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Vlastnosti Autoenkodérů + +* **Specifické pro data** - fungují dobře pouze s typem obrázků, na kterých byly trénovány. Například pokud trénujeme síť pro super-rezoluce na květinách, nebude dobře fungovat na portrétech. Je to proto, že síť může vytvořit obrázek ve vyšším rozlišení tím, že vezme jemné detaily z funkcí naučených z trénovacího datasetu. +* **Ztrátové** - rekonstruovaný obrázek není stejný jako původní obrázek. Povaha ztráty je definována *ztrátovou funkcí* použitou během trénování. +* Fungují na **neoznačených datech** + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Závěr + +V této lekci jste se naučili o různých typech autoenkodérů dostupných pro vědce v oblasti AI. Naučili jste se, jak je vytvořit a jak je použít k rekonstrukci obrázků. Také jste se naučili o VAE a jak je použít k generování nových obrázků. + +## 🚀 Výzva + +V této lekci jste se naučili používat autoenkodéry pro obrázky. Ale mohou být také použity pro hudbu! Podívejte se na projekt Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), který používá autoenkodéry k učení rekonstrukce hudby. Udělejte několik [experimentů](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) s touto knihovnou a zjistěte, co můžete vytvořit. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Přehled & Samostudium + +Pro referenci si přečtěte více o autoenkodérech v těchto zdrojích: + +* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blogový příspěvek na NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/) +* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Úkol + +Na konci [tohoto notebooku s TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) najdete 'úkol' - použijte jej jako svůj domácí úkol. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/10-GANs/README.md b/translations/cs/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..b21457a5 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generativní adversariální sítě + +V předchozí části jsme se naučili o **generativních modelech**: modelech, které dokážou generovat nové obrázky podobné těm v trénovacím datasetu. VAE byl dobrým příkladem generativního modelu. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Nicméně, pokud se pokusíme generovat něco opravdu smysluplného, například malbu v rozumném rozlišení, pomocí VAE, zjistíme, že trénování neprobíhá dobře. Pro tento případ bychom se měli naučit o jiné architektuře, která je specificky zaměřená na generativní modely - **Generativní adversariální sítě**, neboli GANs. + +Hlavní myšlenkou GAN je mít dvě neuronové sítě, které se budou trénovat proti sobě: + + + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Malý slovníček: +> * **Generátor** je síť, která vezme nějaký náhodný vektor a jako výsledek vytvoří obrázek. +> * **Diskriminátor** je síť, která vezme obrázek a měla by určit, zda se jedná o skutečný obrázek (z trénovacího datasetu), nebo zda byl vytvořen generátorem. V podstatě jde o klasifikátor obrázků. + +### Diskriminátor + +Architektura diskriminátoru se neliší od běžné klasifikační sítě pro obrázky. V nejjednodušším případě může být plně propojeným klasifikátorem, ale pravděpodobněji půjde o [konvoluční síť](../07-ConvNets/README.md). + +> ✅ GAN založený na konvolučních sítích se nazývá [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Diskriminátor CNN se skládá z následujících vrstev: několik konvolucí+poolingů (s klesající prostorovou velikostí) a jedné nebo více plně propojených vrstev pro získání "vektorů vlastností", konečný binární klasifikátor. + +> ✅ 'Pooling' v tomto kontextu je technika, která zmenšuje velikost obrázku. "Poolingové vrstvy snižují rozměry dat kombinováním výstupů neuronových clusterů na jedné vrstvě do jednoho neuronu na další vrstvě." - [zdroj](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generátor + +Generátor je o něco složitější. Můžete si ho představit jako obrácený diskriminátor. Začíná latentním vektorem (namísto vektoru vlastností), má plně propojenou vrstvu, která ho převede na požadovanou velikost/tvar, následovanou dekonvolucemi+zvětšováním. To je podobné *dekodéru* části [autoenkodéru](../09-Autoencoders/README.md). + +> ✅ Protože konvoluční vrstva je implementována jako lineární filtr procházející obrázkem, dekonvoluce je v podstatě podobná konvoluci a může být implementována pomocí stejné logiky vrstvy. + + + +> Obrázek od [Dmitry Soshnikov](http://soshnikov.com) + +### Trénování GAN + +GANs se nazývají **adversariální**, protože mezi generátorem a diskriminátorem probíhá neustálá soutěž. Během této soutěže se oba generátor i diskriminátor zlepšují, takže síť se učí vytvářet stále lepší obrázky. + +Trénování probíhá ve dvou fázích: + +* **Trénování diskriminátoru**. Tento úkol je poměrně přímočarý: generujeme dávku obrázků pomocí generátoru, označíme je 0, což znamená falešný obrázek, a vezmeme dávku obrázků z vstupního datasetu (s označením 1, skutečný obrázek). Získáme nějakou *ztrátu diskriminátoru* a provedeme zpětné šíření. +* **Trénování generátoru**. To je o něco složitější, protože neznáme očekávaný výstup generátoru přímo. Vezmeme celou GAN síť skládající se z generátoru následovaného diskriminátorem, nakrmíme ji nějakými náhodnými vektory a očekáváme výsledek 1 (odpovídající skutečným obrázkům). Poté zmrazíme parametry diskriminátoru (nechceme, aby se v tomto kroku trénoval) a provedeme zpětné šíření. + +Během tohoto procesu ztráty generátoru i diskriminátoru neklesají výrazně. V ideální situaci by měly oscilovat, což odpovídá zlepšování výkonu obou sítí. + +## ✍️ Cvičení: GANs + +* [GAN Notebook v TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook v PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problémy s trénováním GAN + +GANs jsou známé tím, že jsou obzvláště obtížné na trénování. Zde je několik problémů: + +* **Kolaps módu**. Tento termín znamená, že generátor se naučí vytvářet jeden úspěšný obrázek, který oklame diskriminátor, a ne různé obrázky. +* **Citlivost na hyperparametry**. Často můžete vidět, že GAN vůbec nekonverguje, a pak náhle snížení rychlosti učení vede ke konvergenci. +* Udržení **rovnováhy** mezi generátorem a diskriminátorem. V mnoha případech může ztráta diskriminátoru relativně rychle klesnout na nulu, což vede k tomu, že generátor už nemůže dále trénovat. Abychom tomu předešli, můžeme zkusit nastavit různé rychlosti učení pro generátor a diskriminátor nebo přeskočit trénování diskriminátoru, pokud je ztráta již příliš nízká. +* Trénování na **vysoké rozlišení**. Tento problém odráží stejný problém jako u autoenkodérů, který je vyvolán tím, že rekonstrukce příliš mnoha vrstev konvoluční sítě vede k artefaktům. Tento problém se obvykle řeší tzv. **progresivním růstem**, kdy se nejprve několik vrstev trénuje na obrázcích s nízkým rozlišením, a poté se vrstvy "odblokují" nebo přidají. Dalším řešením by bylo přidání dalších spojení mezi vrstvami a trénování několika rozlišení najednou - podrobnosti viz tento [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048). + +## Přenos stylu + +GANs jsou skvělým způsobem, jak generovat umělecké obrázky. Další zajímavou technikou je tzv. **přenos stylu**, který vezme jeden **obrázek obsahu** a překreslí ho v jiném stylu, aplikováním filtrů z **obrázku stylu**. + +Jak to funguje: +* Začneme s náhodným šumovým obrázkem (nebo s obrázkem obsahu, ale pro lepší pochopení je jednodušší začít s náhodným šumem). +* Naším cílem bude vytvořit takový obrázek, který bude blízký jak obrázku obsahu, tak obrázku stylu. To bude určeno dvěma funkcemi ztráty: + - **Ztráta obsahu** se vypočítává na základě vlastností extrahovaných CNN na některých vrstvách z aktuálního obrázku a obrázku obsahu. + - **Ztráta stylu** se vypočítává mezi aktuálním obrázkem a obrázkem stylu chytrým způsobem pomocí Gramových matic (více podrobností v [příkladovém notebooku](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Aby byl obrázek hladší a odstranil šum, zavádíme také **ztrátu variace**, která vypočítává průměrnou vzdálenost mezi sousedními pixely. +* Hlavní optimalizační smyčka upravuje aktuální obrázek pomocí gradientního sestupu (nebo jiného optimalizačního algoritmu) tak, aby minimalizovala celkovou ztrátu, která je váženým součtem všech tří ztrát. + +## ✍️ Příklad: [Přenos stylu](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Závěr + +V této lekci jste se naučili o GANs a jak je trénovat. Také jste se dozvěděli o speciálních výzvách, kterým tento typ neuronové sítě může čelit, a o některých strategiích, jak je překonat. + +## 🚀 Výzva + +Projděte si [notebook Přenos stylu](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) s použitím vlastních obrázků. + +## Přehled & Samostudium + +Pro referenci si přečtěte více o GANs v těchto zdrojích: + +* 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* architektura GAN, kterou stojí za to zvážit +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Zadání + +Znovu si projděte jeden ze dvou notebooků spojených s touto lekcí a znovu natrénujte GAN na vlastních obrázcích. Co dokážete vytvořit? + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..547c2c3e --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Detekce objektů + +Modely klasifikace obrázků, se kterými jsme se dosud zabývali, přijímaly obrázek a produkovaly kategorický výsledek, například třídu 'číslo' v problému MNIST. Nicméně v mnoha případech nechceme jen vědět, že obrázek zobrazuje objekty – chceme být schopni určit jejich přesnou polohu. To je přesně smysl **detekce objektů**. + +## [Kvíz před lekcí](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detekce objektů](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.cs.png) + +> Obrázek z [webu YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Naivní přístup k detekci objektů + +Předpokládejme, že chceme najít kočku na obrázku. Velmi naivní přístup k detekci objektů by byl následující: + +1. Rozdělíme obrázek na množství dlaždic. +2. Provedeme klasifikaci obrázků na každé dlaždici. +3. Dlaždice, které vykazují dostatečně vysokou aktivaci, můžeme považovat za obsahující hledaný objekt. + +![Naivní detekce objektů](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.cs.png) + +> *Obrázek z [cvičebního notebooku](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Tento přístup však není ideální, protože algoritmu umožňuje určit ohraničující rámeček objektu jen velmi nepřesně. Pro přesnější určení polohy musíme použít nějakou formu **regrese**, která předpovídá souřadnice ohraničujících rámečků – a k tomu potřebujeme specifické datové sady. + +## Regrese pro detekci objektů + +[Tento blogový příspěvek](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) nabízí skvělý úvod do detekce tvarů. + +## Datové sady pro detekci objektů + +Můžete narazit na následující datové sady pro tento úkol: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) – 20 tříd +* [COCO](http://cocodataset.org/#home) – Common Objects in Context. 80 tříd, ohraničující rámečky a segmentační masky + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.cs.jpg) + +## Metriky detekce objektů + +### Průnik přes sjednocení (Intersection over Union) + +Zatímco u klasifikace obrázků je snadné měřit, jak dobře algoritmus funguje, u detekce objektů musíme měřit jak správnost třídy, tak přesnost určené polohy ohraničujícího rámečku. Pro druhé zmíněné používáme tzv. **Průnik přes sjednocení** (IoU), který měří, jak dobře se dva rámečky (nebo dvě libovolné oblasti) překrývají. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.cs.png) + +> *Obrázek 2 z [tohoto skvělého blogového příspěvku o IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Princip je jednoduchý – rozdělíme plochu průniku dvou obrazců plochou jejich sjednocení. Pro dvě identické oblasti bude IoU rovno 1, zatímco pro zcela nesouvisející oblasti bude rovno 0. Jinak se bude pohybovat mezi 0 a 1. Typicky zvažujeme pouze ty ohraničující rámečky, pro které je IoU nad určitou hodnotou. + +### Průměrná přesnost (Average Precision) + +Předpokládejme, že chceme měřit, jak dobře je rozpoznána daná třída objektů $C$. K měření používáme metriky **Průměrné přesnosti**, která se vypočítává následovně: + +1. Zvažte křivku přesnosti a odvolání (Precision-Recall), která ukazuje přesnost v závislosti na hodnotě prahové detekce (od 0 do 1). +2. V závislosti na prahu získáme více či méně detekovaných objektů na obrázku a různé hodnoty přesnosti a odvolání. +3. Křivka bude vypadat takto: + + + +> *Obrázek z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Průměrná přesnost pro danou třídu $C$ je plocha pod touto křivkou. Přesněji řečeno, osa odvolání je obvykle rozdělena na 10 částí a přesnost je průměrována přes všechny tyto body: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP a IoU + +Zvažujeme pouze ty detekce, pro které je IoU nad určitou hodnotou. Například v datové sadě PASCAL VOC je obvykle $\mbox{IoU Threshold} = 0.5$, zatímco v COCO se AP měří pro různé hodnoty $\mbox{IoU Threshold}$. + + + +> *Obrázek z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Průměrná přesnost napříč třídami – mAP + +Hlavní metrika pro detekci objektů se nazývá **Průměrná přesnost napříč třídami**, nebo **mAP**. Jedná se o hodnotu průměrné přesnosti, průměrovanou přes všechny třídy objektů, a někdy také přes $\mbox{IoU Threshold}$. Podrobnější popis procesu výpočtu **mAP** najdete +[v tomto blogovém příspěvku](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), a také [zde s ukázkami kódu](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Různé přístupy k detekci objektů + +Existují dvě hlavní třídy algoritmů detekce objektů: + +* **Sítě pro návrh regionů** (R-CNN, Fast R-CNN, Faster R-CNN). Hlavní myšlenkou je generovat **regiony zájmu** (ROI) a spustit CNN nad nimi, hledající maximální aktivaci. Je to trochu podobné naivnímu přístupu, s výjimkou toho, že ROI jsou generovány chytřejším způsobem. Jednou z hlavních nevýhod těchto metod je, že jsou pomalé, protože je potřeba mnoho průchodů klasifikátoru CNN nad obrázkem. +* **Jednopasové** (YOLO, SSD, RetinaNet) metody. V těchto architekturách navrhujeme síť tak, aby předpovídala jak třídy, tak ROI v jednom průchodu. + +### R-CNN: Region-Based CNN + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) používá [Selektivní vyhledávání](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) k vytvoření hierarchické struktury regionů ROI, které jsou následně zpracovány extraktory funkcí CNN a klasifikátory SVM k určení třídy objektu, a lineární regresí k určení souřadnic *ohraničujícího rámečku*. [Oficiální článek](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.cs.png) + +> *Obrázek z van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.cs.png) + +> *Obrázky z [tohoto blogu](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Fast R-CNN + +Tento přístup je podobný R-CNN, ale regiony jsou definovány po aplikaci konvolučních vrstev. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.cs.png) + +> Obrázek z [oficiálního článku](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 + +Hlavní myšlenkou tohoto přístupu je použití neuronové sítě k předpovědi ROI – tzv. *Sítě pro návrh regionů*. [Článek](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.cs.png) + +> Obrázek z [oficiálního článku](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Region-Based Fully Convolutional Network + +Tento algoritmus je ještě rychlejší než Faster R-CNN. Hlavní myšlenka je následující: + +1. Extrahujeme funkce pomocí ResNet-101. +2. Funkce jsou zpracovány pomocí **Mapy skóre citlivé na polohu**. Každý objekt z $C$ tříd je rozdělen na $k\times k$ regiony a trénujeme na předpověď částí objektů. +3. Pro každou část z $k\times k$ regionů všechny sítě hlasují pro třídy objektů a třída objektu s maximálním počtem hlasů je vybrána. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.cs.png) + +> Obrázek z [oficiálního článku](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO je algoritmus pro detekci v reálném čase s jedním průchodem. Hlavní myšlenka je následující: + + * Obrázek je rozdělen na $S\times S$ regiony. + * Pro každý region **CNN** předpovídá $n$ možných objektů, souřadnice *ohraničujícího rámečku* a *důvěru*=*pravděpodobnost* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.cs.png) + +> Obrázek z [oficiálního článku](https://arxiv.org/abs/1506.02640) + +### Další algoritmy + +* RetinaNet: [oficiální článek](https://arxiv.org/abs/1708.02002) + - [Implementace v PyTorch](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementace v Keras](https://github.com/fizyr/keras-retinanet) + - [Detekce objektů pomocí RetinaNet](https://keras.io/examples/vision/retinanet/) v ukázkách Keras +* SSD (Single Shot Detector): [oficiální článek](https://arxiv.org/abs/1512.02325) + +## ✍️ Cvičení: Detekce objektů + +Pokračujte ve svém učení v následujícím notebooku: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Závěr + +V této lekci jste se rychle seznámili s různými způsoby, jak lze detekci objektů provádět! + +## 🚀 Výzva + +Projděte si tyto články a notebooky o YOLO a vyzkoušejte je sami: + +* [Skvělý blogový příspěvek](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) popisující YOLO + * [Oficiální web](https://pjreddie.com/darknet/yolo/) + * Yolo: [Implementace v Keras](https://github.com/experiencor/keras-yolo2), [krok za krokem notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Implementace v Keras](https://github.com/experiencor/keras-yolo2), [krok za krokem notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Kvíz po lekci](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Přehled & Samostudium + +* [Detekce objektů](https://tjmachinelearning.com/lectures/1718/obj/) od Nikhila Sardany +* [Dobrý přehled algoritmů detekce objektů](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Přehled algoritmů hlubokého učení pro detekci objektů](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Úvod do základních algoritmů detekce objektů krok za krokem](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementace Faster R-CNN v Pythonu pro detekci objektů](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Úkol: Detekce objektů](lab/README.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..2f359495 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Detekce hlav pomocí Hollywood Heads Dataset + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Počítání počtu lidí na záznamu z kamerového systému je důležitý úkol, který nám umožní odhadnout počet návštěvníků v obchodech, rušné hodiny v restauracích apod. Abychom tento úkol vyřešili, musíme být schopni detekovat lidské hlavy z různých úhlů. Pro natrénování modelu detekce objektů na detekci lidských hlav můžeme použít [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## Dataset + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) obsahuje 369 846 lidských hlav anotovaných ve 224 740 filmových snímcích z hollywoodských filmů. Je poskytován ve formátu [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), kde pro každý obrázek existuje také XML soubor s popisem, který vypadá takto: + +```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 + + +``` + +V tomto datasetu existuje pouze jedna třída objektů `head`, a pro každou hlavu získáte souřadnice ohraničujícího boxu. XML soubory můžete parsovat pomocí Python knihoven, nebo použít [tuto knihovnu](https://pypi.org/project/pascal-voc/) pro práci přímo s formátem PASCAL VOC. + +## Trénování detekce objektů + +Model detekce objektů můžete natrénovat jedním z následujících způsobů: + +* Použitím [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) a jeho Python API pro programatické trénování modelu v cloudu. Custom Vision nebude schopný použít více než několik stovek obrázků pro trénování modelu, takže možná budete muset dataset omezit. +* Použitím příkladu z [Keras tutorialu](https://keras.io/examples/vision/retinanet/) pro natrénování modelu RetunaNet. +* Použitím vestavěného modulu [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) v knihovně torchvision. + +## Závěr + +Detekce objektů je úkol, který je často vyžadován v průmyslu. I když existují služby, které lze použít k provádění detekce objektů (například [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)), je důležité pochopit, jak detekce objektů funguje, a být schopný natrénovat vlastní modely. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/cs/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..bbac4104 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentace + +Dříve jsme se naučili o detekci objektů, která nám umožňuje lokalizovat objekty na obrázku předpovědí jejich *ohraničujících rámečků*. Pro některé úkoly však nepotřebujeme pouze ohraničující rámečky, ale také přesnější lokalizaci objektů. Tento úkol se nazývá **segmentace**. + +## [Kvíz před lekcí](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentaci lze chápat jako **klasifikaci pixelů**, kde pro **každý** pixel obrázku musíme předpovědět jeho třídu (*pozadí* je jednou z tříd). Existují dva hlavní algoritmy segmentace: + +* **Sémantická segmentace** určuje pouze třídu pixelu a nerozlišuje mezi různými objekty stejné třídy. +* **Instance segmentace** rozděluje třídy na různé instance. + +Například u instance segmentace jsou tyto ovce různé objekty, ale u sémantické segmentace jsou všechny ovce reprezentovány jednou třídou. + + + +> Obrázek z [tohoto blogového příspěvku](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existují různé neuronové architektury pro segmentaci, ale všechny mají stejnou strukturu. Svým způsobem je to podobné autoenkodéru, o kterém jste se již učili, ale místo rekonstrukce původního obrázku je naším cílem vytvořit **masku**. Segmentační síť má tedy následující části: + +* **Encoder** extrahuje rysy z vstupního obrázku. +* **Decoder** transformuje tyto rysy do **obrázku masky**, který má stejnou velikost a počet kanálů odpovídající počtu tříd. + + + +> Obrázek z [této publikace](https://arxiv.org/pdf/2001.05566.pdf) + +Zvláštní zmínku si zaslouží ztrátová funkce používaná pro segmentaci. Při použití klasických autoenkodérů musíme měřit podobnost mezi dvěma obrázky, a k tomu můžeme použít střední kvadratickou chybu (MSE). U segmentace každý pixel v cílovém obrázku masky reprezentuje číslo třídy (one-hot-encoded ve třetím rozměru), takže musíme použít ztrátové funkce specifické pro klasifikaci - ztrátu křížové entropie, průměrovanou přes všechny pixely. Pokud je maska binární, používá se **binární ztráta křížové entropie** (BCE). + +> ✅ One-hot encoding je způsob, jak zakódovat štítek třídy do vektoru o délce odpovídající počtu tříd. Podívejte se na [tento článek](https://datagy.io/sklearn-one-hot-encode/) o této technice. + +## Segmentace v lékařském zobrazování + +V této lekci uvidíme segmentaci v praxi tím, že budeme trénovat síť na rozpoznávání lidských névů (známých také jako mateřská znaménka) na lékařských snímcích. Budeme používat PH2 databázi dermoskopických snímků jako zdroj obrázků. Tato sada dat obsahuje 200 obrázků tří tříd: typický névus, atypický névus a melanom. Všechny obrázky také obsahují odpovídající **masku**, která vymezuje névus. + +> ✅ Tato technika je obzvláště vhodná pro tento typ lékařského zobrazování, ale jaké další reálné aplikace si dokážete představit? + +navi + +> Obrázek z PH2 databáze + +Natrénujeme model, který bude segmentovat jakýkoli névus od jeho pozadí. + +## ✍️ Cvičení: Sémantická segmentace + +Otevřete níže uvedené notebooky, abyste se dozvěděli více o různých architekturách sémantické segmentace, procvičili si práci s nimi a viděli je v akci. + +* [Sémantická segmentace v Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Sémantická segmentace v TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Kvíz po lekci](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Závěr + +Segmentace je velmi silná technika pro klasifikaci obrázků, která jde nad rámec ohraničujících rámečků až na úroveň klasifikace pixelů. Tato technika se používá v lékařském zobrazování a dalších aplikacích. + +## 🚀 Výzva + +Segmentace těla je jen jedním z běžných úkolů, které můžeme provádět s obrázky lidí. Další důležité úkoly zahrnují **detekci kostry** a **detekci póz**. Vyzkoušejte knihovnu [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), abyste viděli, jak lze detekci póz využít. + +## Přehled a samostudium + +Tento [článek na Wikipedii](https://wikipedia.org/wiki/Image_segmentation) nabízí dobrý přehled různých aplikací této techniky. Zjistěte více o podoblastech Instance segmentace a Panoptické segmentace v této oblasti. + +## [Úkol](lab/README.md) + +V této laboratoři zkuste **segmentaci lidského těla** pomocí [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/cs/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..49a3e809 --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentace lidského těla + +Laboratorní úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +Při tvorbě videí, například v předpovědích počasí, často potřebujeme vystřihnout obraz člověka z kamery a umístit jej na jiné záběry. To se obvykle provádí pomocí technik **chroma key**, kdy je člověk natáčen před jednobarevným pozadím, které je následně odstraněno. V této laboratorní úloze vytrénujeme model neuronové sítě, který dokáže vystřihnout siluetu člověka. + +## Datová sada + +Budeme používat [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. Stáhněte si datovou sadu ručně z Kaggle. + +## Výchozí notebook + +Začněte laboratorní úlohu otevřením [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Závěr + +Segmentace těla je jen jedním z běžných úkolů, které můžeme provádět s obrázky lidí. Mezi další důležité úkoly patří **detekce kostry** a **detekce póz**. Podívejte se na knihovnu [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), abyste zjistili, jak lze tyto úkoly implementovat. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/4-ComputerVision/README.md b/translations/cs/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..51800bbd --- /dev/null +++ b/translations/cs/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Počítačové vidění + +![Shrnutí obsahu Počítačového vidění ve formě kresby](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.cs.png) + +V této sekci se naučíme: + +* [Úvod do počítačového vidění a OpenCV](06-IntroCV/README.md) +* [Konvoluční neuronové sítě](07-ConvNets/README.md) +* [Předtrénované sítě a přenosové učení](08-TransferLearning/README.md) +* [Autoenkodéry](09-Autoencoders/README.md) +* [Generativní protivníkové sítě](10-GANs/README.md) +* [Detekce objektů](11-ObjectDetection/README.md) +* [Sémantická segmentace](12-Segmentation/README.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/13-TextRep/README.md b/translations/cs/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..0ab73bc3 --- /dev/null +++ b/translations/cs/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Reprezentace textu jako tenzorů + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Klasifikace textu + +V první části této sekce se zaměříme na úkol **klasifikace textu**. Použijeme dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), který obsahuje zpravodajské články, například: + +* Kategorie: Věda/Technika +* Titulek: Ky. společnost získala grant na studium peptidů (AP) +* Text: AP - Společnost založená výzkumníkem chemie na Univerzitě v Louisville získala grant na vývoj... + +Naším cílem bude klasifikovat zpravodajský článek do jedné z kategorií na základě textu. + +## Reprezentace textu + +Pokud chceme řešit úkoly z oblasti zpracování přirozeného jazyka (NLP) pomocí neuronových sítí, potřebujeme způsob, jak reprezentovat text jako tenzory. Počítače již reprezentují textové znaky jako čísla, která mapují na fonty na obrazovce, pomocí kódování, jako je ASCII nebo UTF-8. + +Obrázek zobrazující diagram mapující znak na ASCII a binární reprezentaci + +> [Zdroj obrázku](https://www.seobility.net/en/wiki/ASCII) + +Jako lidé rozumíme, co každý znak **znamená**, a jak všechny znaky dohromady tvoří slova ve větě. Počítače však samy o sobě takové porozumění nemají a neuronová síť se musí význam naučit během trénování. + +Proto můžeme použít různé přístupy při reprezentaci textu: + +* **Reprezentace na úrovni znaků**, kdy reprezentujeme text tak, že každý znak považujeme za číslo. Pokud máme *C* různých znaků v našem textovém korpusu, slovo *Hello* by bylo reprezentováno jako tenzor o rozměrech 5x*C*. Každé písmeno by odpovídalo sloupci tenzoru v one-hot kódování. +* **Reprezentace na úrovni slov**, kdy vytvoříme **slovník** všech slov v našem textu a poté reprezentujeme slova pomocí one-hot kódování. Tento přístup je o něco lepší, protože jednotlivá písmena sama o sobě nemají velký význam, a použitím vyšších sémantických konceptů - slov - úkol pro neuronovou síť zjednodušíme. Nicméně, vzhledem k velké velikosti slovníku musíme pracovat s vysoce dimenzionálními řídkými tenzory. + +Bez ohledu na zvolenou reprezentaci musíme nejprve převést text na sekvenci **tokenů**, přičemž token může být znak, slovo nebo někdy i část slova. Poté token převedeme na číslo, obvykle pomocí **slovníku**, a toto číslo lze do neuronové sítě předat pomocí one-hot kódování. + +## N-Gramy + +V přirozeném jazyce lze přesný význam slov určit pouze v kontextu. Například významy *neuronová síť* a *rybářská síť* jsou zcela odlišné. Jedním ze způsobů, jak toto zohlednit, je vytvořit model založený na dvojicích slov a považovat dvojice slov za samostatné tokeny slovníku. Tímto způsobem bude věta *Rád chodím na ryby* reprezentována následující sekvencí tokenů: *Rád chodím*, *chodím na*, *na ryby*. Problémem tohoto přístupu je, že velikost slovníku výrazně narůstá a kombinace jako *na ryby* a *na nákupy* jsou reprezentovány různými tokeny, které nesdílejí žádnou sémantickou podobnost, přestože obsahují stejné sloveso. + +V některých případech můžeme zvážit použití tri-gramů – kombinací tří slov. Tento přístup se proto často nazývá **n-gramy**. Dává také smysl používat n-gramy s reprezentací na úrovni znaků, kdy n-gramy přibližně odpovídají různým slabikám. + +## Bag-of-Words a TF/IDF + +Při řešení úkolů, jako je klasifikace textu, potřebujeme být schopni reprezentovat text jako jeden vektor pevné velikosti, který použijeme jako vstup pro konečný hustý klasifikátor. Jedním z nejjednodušších způsobů, jak to udělat, je kombinovat všechny jednotlivé reprezentace slov, například jejich sečtením. Pokud sečteme one-hot kódování každého slova, získáme vektor frekvencí, který ukazuje, kolikrát se každé slovo v textu objevuje. Taková reprezentace textu se nazývá **bag-of-words** (BoW). + + + +> Obrázek od autora + +BoW v podstatě reprezentuje, která slova se v textu objevují a v jakém množství, což může být dobrým ukazatelem toho, o čem text je. Například zpravodajský článek o politice pravděpodobně obsahuje slova jako *prezident* a *země*, zatímco vědecká publikace by mohla obsahovat slova jako *urychlovač*, *objeveno* atd. Frekvence slov tedy v mnoha případech mohou být dobrým indikátorem obsahu textu. + +Problémem BoW je, že určitá běžná slova, jako *a*, *je* atd., se objevují ve většině textů a mají nejvyšší frekvence, čímž zastírají slova, která jsou skutečně důležitá. Můžeme snížit důležitost těchto slov tím, že vezmeme v úvahu frekvenci, s jakou se slova objevují v celé kolekci dokumentů. To je hlavní myšlenka přístupu TF/IDF, který je podrobněji popsán v přiložených poznámkových blocích k této lekci. + +Nicméně žádný z těchto přístupů nedokáže plně zohlednit **sémantiku** textu. K tomu potřebujeme výkonnější modely neuronových sítí, o kterých budeme diskutovat později v této sekci. + +## ✍️ Cvičení: Reprezentace textu + +Pokračujte ve svém učení v následujících poznámkových blocích: + +* [Reprezentace textu s PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Reprezentace textu s TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Závěr + +Doposud jsme studovali techniky, které mohou přidat váhu frekvencím různých slov. Tyto techniky však nejsou schopny reprezentovat význam nebo pořadí. Jak slavný lingvista J. R. Firth řekl v roce 1935: "Úplný význam slova je vždy kontextový a žádná studie významu oddělená od kontextu nemůže být brána vážně." Později v kurzu se naučíme, jak zachytit kontextové informace z textu pomocí jazykového modelování. + +## 🚀 Výzva + +Vyzkoušejte další cvičení s použitím bag-of-words a různých datových modelů. Můžete se inspirovat touto [soutěží na Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Přehled a samostudium + +Procvičte si své dovednosti s technikami vkládání textu a bag-of-words na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Úkol: Poznámkové bloky](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/13-TextRep/assignment.md b/translations/cs/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..d27c996c --- /dev/null +++ b/translations/cs/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Zadání: Notebooky + +Pomocí notebooků připojených k této lekci (ať už ve verzi PyTorch nebo TensorFlow) je spusťte znovu s vlastním datasetem, například s datasetem z Kaggle, použitým s uvedením zdroje. Přepište notebook tak, aby zdůrazňoval vaše vlastní zjištění. Vyzkoušejte některé inovativní datasety, které by mohly být překvapivé, například [tento o pozorování UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) od NUFORC. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/14-Embeddings/README.md b/translations/cs/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..4fedda08 --- /dev/null +++ b/translations/cs/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Vnoření + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Při trénování klasifikátorů založených na BoW nebo TF/IDF jsme pracovali s vysoce dimenzionálními vektory bag-of-words o délce `vocab_size` a explicitně jsme převáděli nízko-dimenzionální poziční reprezentace na řídké jednohotové reprezentace. Tato jednohotová reprezentace však není paměťově efektivní. Navíc je každé slovo považováno za nezávislé na ostatních, tj. jednohotové vektory nevyjadřují žádnou sémantickou podobnost mezi slovy. + +Myšlenka **vnoření** spočívá v reprezentaci slov pomocí nízko-dimenzionálních hustých vektorů, které nějakým způsobem odrážejí sémantický význam slova. Později si povíme, jak vytvořit smysluplná vnoření slov, ale prozatím si vnoření představme jako způsob snížení dimenzionality vektoru slova. + +Vrstva vnoření tedy přijme slovo jako vstup a vytvoří výstupní vektor o specifikované velikosti `embedding_size`. Svým způsobem je velmi podobná vrstvě `Linear`, ale místo jednohotového vektoru bude schopna přijmout číslo slova jako vstup, což nám umožní vyhnout se vytváření velkých jednohotových vektorů. + +Použitím vrstvy vnoření jako první vrstvy v naší síti klasifikátoru můžeme přejít od modelu bag-of-words k modelu **embedding bag**, kde nejprve převedeme každé slovo v našem textu na odpovídající vnoření a poté vypočítáme nějakou agregační funkci přes všechna tato vnoření, jako je `sum`, `average` nebo `max`. + +![Obrázek ukazující klasifikátor s vnořením pro pět slov v sekvenci.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.cs.png) + +> Obrázek od autora + +## ✍️ Cvičení: Vnoření + +Pokračujte ve svém učení v následujících noteboocích: +* [Vnoření s PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Vnoření s TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Sémantická vnoření: Word2Vec + +Zatímco vrstva vnoření se naučila mapovat slova na vektorovou reprezentaci, tato reprezentace nemusela nutně mít velký sémantický význam. Bylo by skvělé naučit se vektorovou reprezentaci takovou, že podobná slova nebo synonyma odpovídají vektorům, které jsou si blízké z hlediska nějaké vektorové vzdálenosti (např. Euklidovské vzdálenosti). + +K tomu potřebujeme předtrénovat náš model vnoření na velké sbírce textů specifickým způsobem. Jedním ze způsobů trénování sémantických vnoření je metoda [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Ta je založena na dvou hlavních architekturách, které se používají k vytvoření distribuované reprezentace slov: + + - **Kontinuální bag-of-words** (CBoW) — v této architektuře trénujeme model, aby předpověděl slovo na základě okolního kontextu. Daný ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ má za cíl model předpovědět $W_0$ z $(W_{-2},W_{-1},W_1,W_2)$. + - **Kontinuální skip-gram** je opakem CBoW. Model používá okolní okno kontextových slov k předpovědi aktuálního slova. + +CBoW je rychlejší, zatímco skip-gram je pomalejší, ale lépe reprezentuje méně častá slova. + +![Obrázek ukazující algoritmy CBoW a Skip-Gram pro převod slov na vektory.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.cs.png) + +> Obrázek z [tohoto článku](https://arxiv.org/pdf/1301.3781.pdf) + +Předtrénovaná vnoření Word2Vec (stejně jako jiné podobné modely, například GloVe) mohou být také použita místo vrstvy vnoření v neuronových sítích. Musíme se však vypořádat se slovníky, protože slovník použitý k předtrénování Word2Vec/GloVe se pravděpodobně liší od slovníku v našem textovém korpusu. Podívejte se na výše uvedené notebooky, abyste zjistili, jak tento problém vyřešit. + +## Kontextová vnoření + +Jedním z klíčových omezení tradičních předtrénovaných reprezentací vnoření, jako je Word2Vec, je problém rozlišení významu slov. Zatímco předtrénovaná vnoření mohou zachytit část významu slov v kontextu, každý možný význam slova je zakódován do stejného vnoření. To může způsobit problémy v následných modelech, protože mnoho slov, jako například slovo 'play', má různé významy v závislosti na kontextu, ve kterém jsou použity. + +Například slovo 'play' v těchto dvou větách má zcela odlišný význam: + +- Šel jsem na **hru** do divadla. +- John si chce **hrát** se svými přáteli. + +Předtrénovaná vnoření výše reprezentují oba tyto významy slova 'play' ve stejném vnoření. Abychom toto omezení překonali, musíme vytvořit vnoření založená na **jazykovém modelu**, který je trénován na velkém korpusu textů a *ví*, jak mohou být slova spojována v různých kontextech. Diskuse o kontextových vnořeních přesahuje rámec tohoto tutoriálu, ale vrátíme se k nim při probírání jazykových modelů později v kurzu. + +## Závěr + +V této lekci jste se naučili, jak vytvořit a používat vrstvy vnoření v TensorFlow a Pytorch, aby lépe odrážely sémantické významy slov. + +## 🚀 Výzva + +Word2Vec byl použit pro některé zajímavé aplikace, včetně generování textů písní a poezie. Podívejte se na [tento článek](https://www.politetype.com/blog/word2vec-color-poems), který popisuje, jak autor použil Word2Vec k generování poezie. Podívejte se také na [toto video od Dana Shiffmanna](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), kde najdete jiný výklad této techniky. Poté zkuste tyto techniky aplikovat na svůj vlastní textový korpus, možná získaný z Kaggle. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Přehled & Samostudium + +Projděte si tento článek o Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Úkol: Notebooky](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/14-Embeddings/assignment.md b/translations/cs/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..687a3672 --- /dev/null +++ b/translations/cs/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Zadání: Notebooky + +Pomocí notebooků připojených k této lekci (buď ve verzi PyTorch, nebo TensorFlow) je spusťte znovu s použitím vlastního datasetu, například z Kaggle, s uvedením zdroje. Přepište notebook tak, aby zdůrazňoval vaše vlastní zjištění. Vyzkoušejte jiný typ datasetu a zdokumentujte svá zjištění, například pomocí textů, jako jsou [tyto texty písní Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/15-LanguageModeling/README.md b/translations/cs/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..3289a358 --- /dev/null +++ b/translations/cs/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Jazykové modelování + +Sémantické vektory, jako Word2Vec a GloVe, jsou ve skutečnosti prvním krokem k **jazykovému modelování** – vytváření modelů, které nějakým způsobem *rozumí* (nebo *reprezentují*) podstatu jazyka. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Hlavní myšlenkou jazykového modelování je jejich trénování na neoznačených datových sadách neřízeným způsobem. To je důležité, protože máme k dispozici obrovské množství neoznačeného textu, zatímco množství označeného textu bude vždy omezeno úsilím, které můžeme věnovat jeho označování. Nejčastěji můžeme vytvářet jazykové modely, které dokážou **předpovídat chybějící slova** v textu, protože je snadné náhodně vynechat slovo v textu a použít ho jako trénovací vzorek. + +## Trénování vektorů + +V našich předchozích příkladech jsme používali předem natrénované sémantické vektory, ale je zajímavé vidět, jak lze tyto vektory natrénovat. Existuje několik možných přístupů, které lze použít: + +* **Jazykové modelování pomocí N-Gramů**, kdy předpovídáme token na základě N předchozích tokenů (N-gram). +* **Continuous Bag-of-Words** (CBoW), kdy předpovídáme prostřední token $W_0$ v sekvenci tokenů $W_{-N}$, ..., $W_N$. +* **Skip-gram**, kde předpovídáme sadu sousedních tokenů {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} na základě prostředního tokenu $W_0$. + +![obrázek z článku o převodu slov na vektory](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.cs.png) + +> Obrázek z [tohoto článku](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Ukázkové notebooky: Trénování modelu CBoW + +Pokračujte ve svém učení v následujících noteboocích: + +* [Trénování CBoW Word2Vec pomocí TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Trénování CBoW Word2Vec pomocí PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Závěr + +V předchozí lekci jsme viděli, že vektory slov fungují jako kouzlo! Nyní víme, že trénování vektorů slov není příliš složitý úkol, a měli bychom být schopni natrénovat vlastní vektory slov pro text specifický pro danou oblast, pokud to bude potřeba. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Přehled & Samostudium + +* [Oficiální tutoriál PyTorch o jazykovém modelování](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Oficiální tutoriál TensorFlow o trénování modelu Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Použití frameworku **gensim** k trénování nejběžněji používaných vektorů v několika řádcích kódu je popsáno [v této dokumentaci](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Úkol: Natrénujte model Skip-Gram](lab/README.md) + +V laboratoři vás vyzýváme, abyste upravili kód z této lekce a natrénovali model Skip-Gram místo CBoW. [Přečtěte si podrobnosti](lab/README.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/cs/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..573293f5 --- /dev/null +++ b/translations/cs/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Trénink Skip-Gram modelu + +Laboratorní úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +V této laboratorní úloze vás vyzýváme k natrénování Word2Vec modelu pomocí techniky Skip-Gram. Natrénujte síť s embeddingem, která bude předpovídat sousední slova v $N$-tokenovém Skip-Gram okně. Můžete použít [kód z této lekce](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) a mírně jej upravit. + +## Dataset + +Můžete použít jakoukoli knihu. Na [Project Gutenberg](https://www.gutenberg.org/) najdete spoustu volně dostupných textů, například zde je přímý odkaz na [Alenčiny příhody v říši divů](https://www.gutenberg.org/files/11/11-0.txt) od Lewise Carrolla. Nebo můžete použít Shakespearovy hry, které můžete získat pomocí následujícího kódu: + +```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') +``` + +## Prozkoumejte! + +Pokud máte čas a chcete se ponořit hlouběji do tématu, zkuste prozkoumat několik věcí: + +* Jak velikost embeddingu ovlivňuje výsledky? +* Jak různé styly textu ovlivňují výsledek? +* Vezměte několik velmi odlišných typů slov a jejich synonym, získejte jejich vektorové reprezentace, aplikujte PCA pro redukci dimenzí na 2 a vykreslete je v 2D prostoru. Vidíte nějaké vzory? + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/16-RNN/README.md b/translations/cs/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..8c33cee2 --- /dev/null +++ b/translations/cs/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rekurentní neuronové sítě + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +V předchozích sekcích jsme používali bohaté sémantické reprezentace textu a jednoduchý lineární klasifikátor nad embeddingy. Tato architektura zachycuje agregovaný význam slov ve větě, ale nezohledňuje **pořadí** slov, protože operace agregace nad embeddingy tuto informaci z původního textu odstranila. Protože tyto modely nedokážou modelovat pořadí slov, nemohou řešit složitější nebo nejednoznačné úkoly, jako je generování textu nebo odpovídání na otázky. + +Abychom zachytili význam sekvence textu, musíme použít jinou architekturu neuronové sítě, která se nazývá **rekurentní neuronová síť** (RNN). V RNN procházíme větou sítí po jednom symbolu a síť produkuje určitý **stav**, který následně předáváme zpět do sítě spolu s dalším symbolem. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.cs.png) + +> Obrázek od autora + +Pro danou vstupní sekvenci tokenů X0,...,Xn vytvoří RNN sekvenci bloků neuronové sítě a trénuje tuto sekvenci end-to-end pomocí zpětné propagace. Každý blok sítě přijímá dvojici (Xi,Si) jako vstup a produkuje Si+1 jako výsledek. Konečný stav Sn (nebo výstup Yn) jde do lineárního klasifikátoru, který produkuje výsledek. Všechny bloky sítě sdílejí stejné váhy a jsou trénovány end-to-end během jedné zpětné propagace. + +Protože stavové vektory S0,...,Sn procházejí sítí, je schopna se naučit sekvenční závislosti mezi slovy. Například když se někde v sekvenci objeví slovo *not*, může se naučit negovat určité prvky ve stavovém vektoru, což vede k negaci. + +> ✅ Protože váhy všech bloků RNN na obrázku výše jsou sdílené, stejný obrázek lze reprezentovat jako jeden blok (vpravo) s rekurentní zpětnou vazbou, která předává výstupní stav sítě zpět na vstup. + +## Anatomie RNN buňky + +Podívejme se, jak je organizována jednoduchá RNN buňka. Přijímá předchozí stav Si-1 a aktuální symbol Xi jako vstupy a musí produkovat výstupní stav Si (a někdy nás také zajímá jiný výstup Yi, jako v případě generativních sítí). + +Jednoduchá RNN buňka obsahuje dvě váhové matice: jedna transformuje vstupní symbol (nazvěme ji W) a druhá transformuje vstupní stav (H). V tomto případě je výstup sítě vypočítán jako σ(W×Xi+H×Si-1+b), kde σ je aktivační funkce a b je dodatečný bias. + +Anatomie RNN buňky + +> Obrázek od autora + +V mnoha případech jsou vstupní tokeny před vstupem do RNN prohnány embedding vrstvou, aby se snížila dimenzionalita. V tomto případě, pokud je dimenze vstupních vektorů *emb_size* a stavového vektoru *hid_size*, velikost W je *emb_size*×*hid_size* a velikost H je *hid_size*×*hid_size*. + +## Long Short Term Memory (LSTM) + +Jedním z hlavních problémů klasických RNN je tzv. problém **mizících gradientů**. Protože RNN jsou trénovány end-to-end během jedné zpětné propagace, mají potíže s propagací chyby do prvních vrstev sítě, a tím pádem se síť nemůže naučit vztahy mezi vzdálenými tokeny. Jedním ze způsobů, jak tento problém obejít, je zavedení **explicitního řízení stavu** pomocí tzv. **bran**. Existují dvě známé architektury tohoto typu: **Long Short Term Memory** (LSTM) a **Gated Relay Unit** (GRU). + +![Obrázek ukazující příklad buňky LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Zdroj obrázku TBD + +LSTM síť je organizována podobně jako RNN, ale existují dva stavy, které se předávají z vrstvy do vrstvy: aktuální stav C a skrytý vektor H. V každé jednotce je skrytý vektor Hi spojen s vstupem Xi a společně kontrolují, co se stane se stavem C prostřednictvím **bran**. Každá brána je neuronová síť se sigmoidní aktivací (výstup v rozmezí [0,1]), kterou lze chápat jako bitovou masku při násobení stavovým vektorem. Existují následující brány (zleva doprava na obrázku výše): + +* **Zapomínací brána** bere skrytý vektor a určuje, které komponenty vektoru C je třeba zapomenout a které předat dál. +* **Vstupní brána** bere určité informace ze vstupního a skrytého vektoru a vkládá je do stavu. +* **Výstupní brána** transformuje stav přes lineární vrstvu s *tanh* aktivací a poté vybírá některé jeho komponenty pomocí skrytého vektoru Hi, aby vytvořila nový stav Ci+1. + +Komponenty stavu C lze chápat jako určité příznaky, které lze zapínat a vypínat. Například když v sekvenci narazíme na jméno *Alice*, můžeme předpokládat, že se jedná o ženskou postavu, a nastavit příznak ve stavu, že máme ve větě ženské podstatné jméno. Když dále narazíme na frázi *and Tom*, nastavíme příznak, že máme množné číslo. Manipulací se stavem tak můžeme údajně sledovat gramatické vlastnosti částí věty. + +> ✅ Skvělým zdrojem pro pochopení vnitřního fungování LSTM je tento výborný článek [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) od Christophera Olaha. + +## Bidirekcionální a vícevrstvé RNN + +Diskutovali jsme o rekurentních sítích, které fungují jedním směrem, od začátku sekvence do konce. To vypadá přirozeně, protože to připomíná způsob, jakým čteme a posloucháme řeč. Nicméně, protože v mnoha praktických případech máme náhodný přístup ke vstupní sekvenci, může mít smysl spustit rekurentní výpočet v obou směrech. Takové sítě se nazývají **bidirekcionální** RNN. Při práci s bidirekcionální sítí bychom potřebovali dva skryté stavové vektory, jeden pro každý směr. + +Rekurentní síť, ať už jednosměrná nebo bidirekcionální, zachycuje určité vzory v sekvenci a může je uložit do stavového vektoru nebo předat do výstupu. Stejně jako u konvolučních sítí můžeme na první vrstvu postavit další rekurentní vrstvu, která zachytí vzory vyšší úrovně a staví na vzorech nižší úrovně extrahovaných první vrstvou. To nás přivádí k pojmu **vícevrstvé RNN**, která se skládá ze dvou nebo více rekurentních sítí, kde výstup předchozí vrstvy je předán jako vstup do další vrstvy. + +![Obrázek ukazující vícevrstvou LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.cs.jpg) + +*Obrázek z [tohoto skvělého článku](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) od Fernanda Lópeze* + +## ✍️ Cvičení: Embeddingy + +Pokračujte ve studiu v následujících noteboocích: + +* [RNNs s PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs s TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Závěr + +V této jednotce jsme viděli, že RNN lze použít pro klasifikaci sekvencí, ale ve skutečnosti zvládnou mnohem více úkolů, jako je generování textu, strojový překlad a další. Těmto úkolům se budeme věnovat v další jednotce. + +## 🚀 Výzva + +Projděte si literaturu o LSTM a zvažte jejich aplikace: + +- [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) + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Recenze a samostudium + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) od Christophera Olaha. + +## [Úkol: Notebooks](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/16-RNN/assignment.md b/translations/cs/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..a8b0fa80 --- /dev/null +++ b/translations/cs/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Zadání: Notebooky + +Pomocí notebooků připojených k této lekci (buď verze pro PyTorch, nebo TensorFlow) je spusťte znovu s použitím vlastního datasetu, například z Kaggle, s uvedením zdroje. Přepište notebook tak, aby zdůrazňoval vaše vlastní zjištění. Vyzkoušejte jiný typ datasetu a zdokumentujte svá zjištění, například pomocí textu jako [tento dataset z Kaggle soutěže o tweety o počasí](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/cs/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..b0525857 --- /dev/null +++ b/translations/cs/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generativní sítě + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rekurentní neuronové sítě (RNN) a jejich varianty s bránovými buňkami, jako jsou Long Short Term Memory Cells (LSTM) a Gated Recurrent Units (GRU), poskytují mechanismus pro modelování jazyka, protože se dokážou naučit pořadí slov a předpovídat další slovo v sekvenci. To nám umožňuje používat RNN pro **generativní úlohy**, jako je generování běžného textu, strojový překlad nebo dokonce popisování obrázků. + +> ✅ Zamyslete se nad všemi situacemi, kdy jste využili generativní úlohy, například při doplňování textu během psaní. Prozkoumejte své oblíbené aplikace a zjistěte, zda využívají RNN. + +V architektuře RNN, kterou jsme probírali v předchozí kapitole, každá jednotka RNN produkovala další skrytý stav jako výstup. Můžeme však také přidat další výstup ke každé rekurentní jednotce, což nám umožní generovat **sekvenci** (která má stejnou délku jako původní sekvence). Navíc můžeme použít RNN jednotky, které nepřijímají vstup na každém kroku, ale pouze počáteční stavový vektor, a poté generují sekvenci výstupů. + +To umožňuje různé neuronové architektury, jak je znázorněno na obrázku níže: + +![Obrázek ukazující běžné vzory rekurentních neuronových sítí.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.cs.jpg) + +> Obrázek z blogového příspěvku [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) od [Andreje Karpatyho](http://karpathy.github.io/) + +* **One-to-one** je tradiční neuronová síť s jedním vstupem a jedním výstupem. +* **One-to-many** je generativní architektura, která přijímá jednu vstupní hodnotu a generuje sekvenci výstupních hodnot. Například pokud chceme trénovat síť pro **popisování obrázků**, která by vytvořila textový popis obrázku, můžeme jako vstup použít obrázek, zpracovat jej pomocí CNN pro získání skrytého stavu a poté nechat rekurentní řetězec generovat popis slovo po slovu. +* **Many-to-one** odpovídá architekturám RNN, které jsme popsali v předchozí kapitole, například klasifikace textu. +* **Many-to-many**, nebo **sekvence na sekvenci**, odpovídá úlohám, jako je **strojový překlad**, kde první RNN shromáždí všechny informace ze vstupní sekvence do skrytého stavu a další řetězec RNN tento stav rozvine do výstupní sekvence. + +V této kapitole se zaměříme na jednoduché generativní modely, které nám pomohou generovat text. Pro zjednodušení použijeme tokenizaci na úrovni znaků. + +Budeme trénovat tuto RNN, aby generovala text krok za krokem. Na každém kroku vezmeme sekvenci znaků o délce `nchars` a požádáme síť, aby pro každý vstupní znak vygenerovala další výstupní znak: + +![Obrázek ukazující příklad generování slova 'HELLO' pomocí RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.cs.png) + +Při generování textu (během inferencí) začneme s nějakým **podnětem**, který je předán přes RNN buňky pro vytvoření mezistavu, a poté z tohoto stavu začíná generování. Generujeme jeden znak po druhém a předáváme stav a vygenerovaný znak další RNN buňce, aby vygenerovala další znak, dokud nevygenerujeme dostatek znaků. + + + +> Obrázek od autora + +## ✍️ Cvičení: Generativní sítě + +Pokračujte ve svém učení v následujících noteboocích: + +* [Generativní sítě s PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generativní sítě s TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Měkké generování textu a teplota + +Výstup každé RNN buňky je pravděpodobnostní rozdělení znaků. Pokud bychom vždy vybrali znak s nejvyšší pravděpodobností jako další znak v generovaném textu, text by se často mohl "zacyklit" mezi stejnými sekvencemi znaků znovu a znovu, jako v tomto příkladu: + +``` +today of the second the company and a second the company ... +``` + +Pokud se však podíváme na pravděpodobnostní rozdělení pro další znak, může se stát, že rozdíl mezi několika nejvyššími pravděpodobnostmi není velký, např. jeden znak může mít pravděpodobnost 0,2, jiný 0,19 atd. Například při hledání dalšího znaku v sekvenci '*play*' může být dalším znakem stejně dobře mezera nebo **e** (jako ve slově *player*). + +To nás vede k závěru, že není vždy "spravedlivé" vybrat znak s nejvyšší pravděpodobností, protože výběr druhého nejvyššího může stále vést k smysluplnému textu. Je moudřejší **vzorkovat** znaky z pravděpodobnostního rozdělení daného výstupem sítě. Můžeme také použít parametr **teplota**, který vyhladí pravděpodobnostní rozdělení, pokud chceme přidat více náhodnosti, nebo jej udělat strmějším, pokud chceme více dodržovat znaky s nejvyšší pravděpodobností. + +Prozkoumejte, jak je toto měkké generování textu implementováno v noteboocích uvedených výše. + +## Závěr + +Ačkoli generování textu může být užitečné samo o sobě, hlavní přínosy přicházejí ze schopnosti generovat text pomocí RNN z nějakého počátečního vektorového znaku. Například generování textu se používá jako součást strojového překladu (sekvence na sekvenci, v tomto případě se stavový vektor z *enkodéru* používá k vytvoření nebo *dekódování* přeložené zprávy) nebo generování textového popisu obrázku (v tomto případě pochází vektor znaků z extraktoru CNN). + +## 🚀 Výzva + +Absolvujte některé lekce na Microsoft Learn na toto téma: + +* Generování textu s [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) + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Přehled a samostudium + +Zde jsou některé články pro rozšíření vašich znalostí: + +* Různé přístupy k generování textu pomocí Markovova řetězce, LSTM a GPT-2: [blogový příspěvek](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Ukázka generování textu v [dokumentaci Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Úkol](lab/README.md) + +Viděli jsme, jak generovat text znak po znaku. V laboratoři budete zkoumat generování textu na úrovni slov. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vzniklé v důsledku použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/cs/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..ed55b5e2 --- /dev/null +++ b/translations/cs/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generování textu na úrovni slov pomocí RNN + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +V tomto laboratorním úkolu je vaším cílem vzít libovolnou knihu a použít ji jako dataset pro trénování generátoru textu na úrovni slov. + +## Dataset + +Můžete použít jakoukoli knihu. Na [Project Gutenberg](https://www.gutenberg.org/) najdete mnoho volně dostupných textů, například zde je přímý odkaz na [Alenčiny příhody v říši divů](https://www.gutenberg.org/files/11/11-0.txt)) od Lewise Carrolla. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/18-Transformers/README.md b/translations/cs/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..f9e4a88c --- /dev/null +++ b/translations/cs/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mechanismy pozornosti a transformery + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Jedním z nejdůležitějších problémů v oblasti NLP je **strojový překlad**, což je klíčový úkol, na kterém stojí nástroje jako Google Překladač. V této sekci se zaměříme na strojový překlad, nebo obecněji na jakýkoli úkol typu *sekvence na sekvenci* (také nazývaný **převod vět**). + +U RNN je sekvence na sekvenci implementována dvěma rekurentními sítěmi, kde jedna síť, **enkodér**, zkomprimuje vstupní sekvenci do skrytého stavu, zatímco druhá síť, **dekodér**, tento skrytý stav rozvine do přeloženého výsledku. Tento přístup má však několik problémů: + +* Konečný stav enkodéru má problém si zapamatovat začátek věty, což způsobuje nízkou kvalitu modelu u dlouhých vět. +* Všechna slova v sekvenci mají stejný vliv na výsledek. Ve skutečnosti však konkrétní slova ve vstupní sekvenci často mají větší vliv na výstupní sekvenci než jiná. + +**Mechanismy pozornosti** poskytují způsob, jak vážit kontextuální vliv každého vstupního vektoru na každou výstupní predikci RNN. To se implementuje vytvořením zkratek mezi mezistavy vstupní RNN a výstupní RNN. Tímto způsobem při generování výstupního symbolu yt zohledníme všechny skryté stavy vstupu hi s různými váhovými koeficienty αt,i. + +![Obrázek ukazující model enkodér/dekodér s aditivní vrstvou pozornosti](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.cs.png) + +> Model enkodér-dekodér s aditivním mechanismem pozornosti podle [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citováno z [tohoto blogového příspěvku](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matice pozornosti {αi,j} by reprezentovala míru, jakou určitá vstupní slova ovlivňují generování konkrétního slova ve výstupní sekvenci. Níže je příklad takové matice: + +![Obrázek ukazující příklad zarovnání nalezeného RNNsearch-50, převzato z Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.cs.png) + +> Obrázek z [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Obr. 3) + +Mechanismy pozornosti jsou zodpovědné za velkou část současného nebo téměř současného stavu techniky v NLP. Přidání pozornosti však výrazně zvyšuje počet parametrů modelu, což vedlo k problémům se škálováním u RNN. Klíčovým omezením škálování RNN je, že rekurentní povaha modelů ztěžuje dávkování a paralelizaci tréninku. V RNN musí být každý prvek sekvence zpracován v sekvenčním pořadí, což znamená, že jej nelze snadno paralelizovat. + +![Enkodér Dekodér s Pozorností](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Obrázek z [Google Blogu](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Přijetí mechanismů pozornosti v kombinaci s tímto omezením vedlo k vytvoření současných špičkových modelů Transformer, které dnes známe a používáme, jako jsou BERT a Open-GPT3. + +## Modely Transformer + +Jednou z hlavních myšlenek za transformery je vyhnout se sekvenční povaze RNN a vytvořit model, který je paralelizovatelný během tréninku. Toho je dosaženo implementací dvou myšlenek: + +* poziční kódování +* použití mechanismu self-attention k zachycení vzorců namísto RNN (nebo CNN) (proto se článek, který představuje transformery, nazývá *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Poziční kódování/vkládání + +Myšlenka pozičního kódování je následující. +1. Při použití RNN je relativní pozice tokenů reprezentována počtem kroků, a proto nemusí být explicitně reprezentována. +2. Jakmile však přejdeme k pozornosti, potřebujeme znát relativní pozice tokenů v rámci sekvence. +3. Abychom získali poziční kódování, rozšíříme naši sekvenci tokenů o sekvenci pozic tokenů v sekvenci (tj. sekvenci čísel 0,1, ...). +4. Poté smícháme pozici tokenu s vektorovým vkládáním tokenu. K transformaci pozice (celého čísla) na vektor můžeme použít různé přístupy: + +* Trénovatelné vkládání, podobné vkládání tokenů. Toto je přístup, který zde zvažujeme. Použijeme vrstvy vkládání na tokeny i jejich pozice, což vede k vektorům vkládání stejné dimenze, které poté sečteme. +* Fixní funkce pozičního kódování, jak bylo navrženo v původním článku. + + + +> Obrázek od autora + +Výsledkem pozičního vkládání je, že vkládáme jak původní token, tak jeho pozici v rámci sekvence. + +### Multi-Head Self-Attention + +Dále potřebujeme zachytit určité vzorce v rámci naší sekvence. K tomu transformery používají mechanismus **self-attention**, což je v podstatě pozornost aplikovaná na stejnou sekvenci jako vstup a výstup. Aplikace self-attention nám umožňuje zohlednit **kontext** v rámci věty a vidět, která slova jsou vzájemně propojená. Například nám umožňuje vidět, na která slova odkazují zájmena jako *to*, a také zohlednit kontext: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.cs.png) + +> Obrázek z [Google Blogu](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +V transformerech používáme **Multi-Head Attention**, abychom síti dali schopnost zachytit několik různých typů závislostí, např. dlouhodobé vs. krátkodobé vztahy mezi slovy, koreference vs. něco jiného atd. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) obsahuje více podrobností o implementaci vrstev transformeru. + +### Pozornost Enkodér-Dekodér + +V transformerech se pozornost používá na dvou místech: + +* K zachycení vzorců ve vstupním textu pomocí self-attention +* K provedení sekvenčního překladu - jedná se o vrstvu pozornosti mezi enkodérem a dekodérem. + +Pozornost enkodér-dekodér je velmi podobná mechanismu pozornosti používanému v RNN, jak bylo popsáno na začátku této sekce. Tento animovaný diagram vysvětluje roli pozornosti enkodér-dekodér. + +![Animovaný GIF ukazující, jak jsou prováděna hodnocení v modelech transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Protože každá vstupní pozice je mapována nezávisle na každou výstupní pozici, transformery mohou lépe paralelizovat než RNN, což umožňuje mnohem větší a expresivnější jazykové modely. Každá hlava pozornosti může být použita k učení různých vztahů mezi slovy, což zlepšuje následné úkoly zpracování přirozeného jazyka. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) je velmi velká vícevrstvá síť transformerů s 12 vrstvami pro *BERT-base* a 24 pro *BERT-large*. Model je nejprve předtrénován na velkém korpusu textových dat (WikiPedia + knihy) pomocí nesupervizovaného tréninku (predikce maskovaných slov ve větě). Během předtrénování model absorbuje významné úrovně porozumění jazyku, které lze následně využít s jinými datovými sadami pomocí doladění. Tento proces se nazývá **transfer learning**. + +![obrázek z http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.cs.png) + +> Obrázek [zdroj](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Cvičení: Transformery + +Pokračujte ve svém učení v následujících noteboocích: + +* [Transformery v PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformery v TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Závěr + +V této lekci jste se naučili o Transformerech a Mechanismech pozornosti, což jsou klíčové nástroje v NLP. Existuje mnoho variant architektur Transformer, včetně BERT, DistilBERT, BigBird, OpenGPT3 a dalších, které lze doladit. Balíček [HuggingFace](https://github.com/huggingface/) poskytuje repozitář pro trénink mnoha z těchto architektur s PyTorch i TensorFlow. + +## 🚀 Výzva + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Přehled a samostudium + +* [Blogový příspěvek](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), vysvětlující klasický článek [Attention is all you need](https://arxiv.org/abs/1706.03762) o transformerech. +* [Série blogových příspěvků](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) o transformerech, podrobně vysvětlující architekturu. + +## [Úkol](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/18-Transformers/assignment.md b/translations/cs/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..7afce177 --- /dev/null +++ b/translations/cs/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Zadání: Transformery + +Experimentujte s Transformery na HuggingFace! Vyzkoušejte některé ze skriptů, které poskytují pro práci s různými modely dostupnými na jejich stránkách: https://huggingface.co/docs/transformers/run_scripts. Vyzkoušejte jeden z jejich datasetů, poté importujte jeden vlastní z tohoto kurzu nebo z Kaggle a zjistěte, zda dokážete generovat zajímavé texty. Vytvořte notebook se svými zjištěními. + +**Upozornění**: +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nezodpovídáme za jakékoli nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/19-NER/README.md b/translations/cs/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..0d7de263 --- /dev/null +++ b/translations/cs/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Rozpoznávání pojmenovaných entit + +Doposud jsme se většinou soustředili na jeden úkol NLP - klasifikaci. Existují však i další úkoly NLP, které lze řešit pomocí neuronových sítí. Jedním z těchto úkolů je **[rozpoznávání pojmenovaných entit](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), které se zabývá identifikací konkrétních entit v textu, jako jsou místa, jména osob, časové intervaly, chemické vzorce a podobně. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Příklad použití NER + +Představte si, že chcete vyvinout chatbot pro přirozený jazyk, podobný Amazon Alexa nebo Google Assistant. Inteligentní chatboti fungují tak, že *rozumí* tomu, co uživatel chce, pomocí klasifikace textu na vstupní větě. Výsledkem této klasifikace je tzv. **záměr** (intent), který určuje, co by měl chatbot udělat. + +Bot NER + +> Obrázek od autora + +Uživatel však může jako součást fráze poskytnout některé parametry. Například při dotazu na počasí může specifikovat místo nebo datum. Bot by měl být schopen tyto entity pochopit a odpovídajícím způsobem vyplnit parametry před provedením akce. A právě zde přichází na řadu NER. + +> ✅ Dalším příkladem by mohlo být [analyzování vědeckých lékařských článků](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Jednou z hlavních věcí, které je třeba hledat, jsou specifické lékařské termíny, jako jsou nemoci a lékařské látky. Zatímco malý počet nemocí lze pravděpodobně extrahovat pomocí vyhledávání podřetězců, složitější entity, jako jsou chemické sloučeniny a názvy léků, vyžadují složitější přístup. + +## NER jako klasifikace tokenů + +Modely NER jsou v podstatě **modely klasifikace tokenů**, protože pro každý vstupní token musíme rozhodnout, zda patří k nějaké entitě, a pokud ano, ke které třídě entity. + +Zvažte následující název článku: + +**Regurgitace trikuspidální chlopně** a **uhličitan lithný** **toxicita** u novorozence. + +Entity zde jsou: + +* Regurgitace trikuspidální chlopně je nemoc (`DIS`) +* Uhličitan lithný je chemická látka (`CHEM`) +* Toxicita je také nemoc (`DIS`) + +Všimněte si, že jedna entita může zahrnovat několik tokenů. A, jako v tomto případě, musíme rozlišit mezi dvěma po sobě jdoucími entitami. Proto je běžné používat dvě třídy pro každou entitu - jednu, která specifikuje první token entity (často se používá předpona `B-` pro **b**eginning), a druhou pro pokračování entity (`I-`, pro **i**nner token). Pro všechny **o**statní tokeny používáme třídu `O`. Takové označování tokenů se nazývá [BIO označování](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (nebo IOB). Po označení bude náš název vypadat takto: + +Token | Tag +------|----- +Trikuspidální | B-DIS +chlopně | I-DIS +regurgitace | I-DIS +a | O +uhličitan | B-CHEM +lithný | I-CHEM +toxicita | B-DIS +u | O +novorozence | O +. | O + +Protože potřebujeme vytvořit jednoznačnou korespondenci mezi tokeny a třídami, můžeme trénovat pravostranný **many-to-many** model neuronové sítě podle tohoto obrázku: + +![Obrázek ukazující běžné vzory rekurentních neuronových sítí.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.cs.jpg) + +> *Obrázek z [tohoto blogového příspěvku](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) od [Andreje Karpathyho](http://karpathy.github.io/). Modely klasifikace tokenů NER odpovídají pravostranné architektuře sítě na tomto obrázku.* + +## Trénování modelů NER + +Protože model NER je v podstatě modelem klasifikace tokenů, můžeme pro tento úkol použít RNN, se kterými jsme se již seznámili. V tomto případě každý blok rekurentní sítě vrátí ID tokenu. Následující ukázkový notebook ukazuje, jak trénovat LSTM pro klasifikaci tokenů. + +## ✍️ Ukázkové notebooky: NER + +Pokračujte ve svém učení v následujícím notebooku: + +* [NER s TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Závěr + +Model NER je **modelem klasifikace tokenů**, což znamená, že jej lze použít k provádění klasifikace tokenů. Jedná se o velmi běžný úkol v NLP, který pomáhá rozpoznávat konkrétní entity v textu, včetně míst, jmen, dat a dalších. + +## 🚀 Výzva + +Dokončete úkol uvedený níže, abyste natrénovali model pro rozpoznávání pojmenovaných entit v lékařských termínech, a poté jej vyzkoušejte na jiném datasetu. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Přehled a samostudium + +Projděte si blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) a následujte sekci Další čtení v tomto článku, abyste si prohloubili své znalosti. + +## [Úkol](lab/README.md) + +V úkolu pro tuto lekci budete muset natrénovat model pro rozpoznávání lékařských entit. Můžete začít trénováním modelu LSTM, jak je popsáno v této lekci, a pokračovat použitím modelu transformátoru BERT. Přečtěte si [pokyny](lab/README.md) pro všechny podrobnosti. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/19-NER/lab/README.md b/translations/cs/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..cfc33a5f --- /dev/null +++ b/translations/cs/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Laboratorní úkol z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úkol + +V tomto laboratorním úkolu je vaším cílem natrénovat model rozpoznávání pojmenovaných entit (NER) pro lékařské termíny. + +## Dataset + +Pro trénování modelu NER potřebujeme správně označený dataset s lékařskými entitami. [Dataset BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) obsahuje označené entity nemocí a chemických látek z více než 1500 článků. Dataset si můžete stáhnout po registraci na jejich webových stránkách. + +Dataset BC5CDR vypadá takto: + +``` +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 +... +``` + +V tomto datasetu jsou v prvních dvou řádcích uvedeny názvy článků a abstrakty, a poté následují jednotlivé entity s počátečními a koncovými pozicemi v bloku názvu+abstraktu. Kromě typu entity získáte také ID této entity v rámci určité lékařské ontologie. + +Budete muset napsat nějaký Python kód, který dataset převede do BIO kódování. + +## Síť + +První pokus o NER lze provést pomocí LSTM sítě, jak jste viděli v našem příkladu během lekce. Nicméně u úloh zpracování přirozeného jazyka (NLP) [transformerová architektura](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), a konkrétně [BERT jazykové modely](https://en.wikipedia.org/wiki/BERT_(language_model)), poskytují mnohem lepší výsledky. Předtrénované BERT modely rozumí obecné struktuře jazyka a mohou být doladěny pro specifické úlohy s relativně malými datovými sadami a nízkými výpočetními náklady. + +Vzhledem k tomu, že plánujeme aplikovat NER na lékařský scénář, má smysl použít BERT model natrénovaný na lékařských textech. Microsoft Research vydal předtrénovaný model nazvaný [PubMedBERT][PubMedBERT] ([publikace][PubMedBERT-Pub]), který byl doladěn pomocí textů z repozitáře [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Standardem pro trénování transformerových modelů je knihovna [Hugging Face Transformers](https://huggingface.co/). Obsahuje také repozitář komunitně spravovaných předtrénovaných modelů, včetně PubMedBERT. Pro načtení a použití tohoto modelu stačí jen pár řádků kódu: + +```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) +``` + +Tím získáme samotný `model`, vytvořený pro úlohu klasifikace tokenů s použitím `classes` počtu tříd, a také objekt `tokenizer`, který dokáže rozdělit vstupní text na tokeny. Budete muset dataset převést do BIO formátu, přičemž vezmete v úvahu tokenizaci PubMedBERT. Jako inspiraci můžete použít [tento kousek Python kódu](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88). + +## Závěr + +Tento úkol je velmi blízký skutečné práci, kterou pravděpodobně budete mít, pokud chcete získat více poznatků z velkých objemů textů v přirozeném jazyce. V našem případě můžeme aplikovat náš natrénovaný model na [dataset článků souvisejících s COVIDem](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) a zjistit, jaké poznatky budeme schopni získat. [Tento blogový příspěvek](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) a [tento článek](https://www.mdpi.com/2504-2289/6/1/4) popisují výzkum, který lze provést na tomto korpusu článků pomocí NER. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/20-LangModels/README.md b/translations/cs/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..f92e5cb9 --- /dev/null +++ b/translations/cs/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Předtrénované velké jazykové modely + +Ve všech našich předchozích úlohách jsme trénovali neuronovou síť, aby vykonávala určitou úlohu pomocí označeného datasetu. U velkých transformerových modelů, jako je BERT, používáme jazykové modelování v samostatně řízeném režimu k vytvoření jazykového modelu, který je následně specializován na konkrétní úlohu pomocí dalšího tréninku zaměřeného na danou doménu. Bylo však prokázáno, že velké jazykové modely dokážou řešit mnoho úloh i bez jakéhokoliv tréninku zaměřeného na konkrétní doménu. Rodina modelů schopných tohoto výkonu se nazývá **GPT**: Generative Pre-Trained Transformer. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generování textu a perplexita + +Myšlenka, že neuronová síť dokáže vykonávat obecné úlohy bez dalšího tréninku, je představena v článku [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Hlavní myšlenkou je, že mnoho dalších úloh lze modelovat pomocí **generování textu**, protože porozumění textu v podstatě znamená schopnost ho vytvářet. Díky tomu, že model je trénován na obrovském množství textu zahrnujícího lidské znalosti, stává se také znalým v široké škále témat. + +> Porozumění textu a schopnost ho vytvářet také zahrnuje znalost něčeho o světě kolem nás. Lidé se do značné míry učí čtením, a síť GPT je v tomto ohledu podobná. + +Sítě pro generování textu fungují na principu predikce pravděpodobnosti dalšího slova $$P(w_N)$$. Nicméně, nepodmíněná pravděpodobnost dalšího slova odpovídá frekvenci tohoto slova v textovém korpusu. GPT nám dokáže poskytnout **podmíněnou pravděpodobnost** dalšího slova na základě předchozích slov: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Více o pravděpodobnostech si můžete přečíst v našem [kurzu Data Science pro začátečníky](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Kvalitu modelu generujícího jazyk lze definovat pomocí **perplexity**. Jedná se o vnitřní metriku, která nám umožňuje měřit kvalitu modelu bez jakéhokoliv datasetu specifického pro danou úlohu. Je založena na konceptu *pravděpodobnosti věty* - model přiřazuje vysokou pravděpodobnost větám, které jsou pravděpodobně reálné (tj. model není **zmatený**), a nízkou pravděpodobnost větám, které dávají menší smysl (např. *Může to udělat co?*). Když modelu poskytneme věty z reálného textového korpusu, očekáváme, že budou mít vysokou pravděpodobnost a nízkou **perplexitu**. Matematicky je definována jako normalizovaná inverzní pravděpodobnost testovací sady: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Můžete experimentovat s generováním textu pomocí [textového editoru poháněného GPT od Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. V tomto editoru začnete psát svůj text a stisknutím **[TAB]** vám budou nabídnuty různé možnosti dokončení. Pokud jsou příliš krátké nebo s nimi nejste spokojeni, stiskněte [TAB] znovu a získáte další možnosti, včetně delších částí textu. + +## GPT je rodina + +GPT není jediný model, ale spíše kolekce modelů vyvinutých a trénovaných [OpenAI](https://openai.com). + +Mezi modely GPT patří: + +| [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) | +| -- | -- | -- | +|Jazykový model s až 1,5 miliardami parametrů. | Jazykový model s až 175 miliardami parametrů | 100T parametrů, přijímá jak obrazové, tak textové vstupy a generuje text. | + +Modely GPT-3 a GPT-4 jsou dostupné [jako kognitivní služba od Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) a jako [OpenAI API](https://openai.com/api/). + +## Prompt Engineering + +Protože GPT byl trénován na obrovském množství dat, aby porozuměl jazyku a kódu, poskytuje výstupy v reakci na vstupy (prompty). Prompty jsou vstupy nebo dotazy pro GPT, kdy uživatel poskytuje modelu instrukce k úlohám, které má následně dokončit. Aby bylo dosaženo požadovaného výsledku, je třeba vytvořit co nejefektivnější prompt, což zahrnuje výběr správných slov, formátů, frází nebo dokonce symbolů. Tento přístup se nazývá [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). + +[Tato dokumentace](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vám poskytne více informací o prompt engineeringu. + +## ✍️ Ukázkový notebook: [Hraní s OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Pokračujte ve svém učení v následujících noteboocích: + +* [Generování textu s OpenAI-GPT a Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Závěr + +Nové obecné předtrénované jazykové modely nejen modelují strukturu jazyka, ale také obsahují obrovské množství přirozeného jazyka. Díky tomu mohou být efektivně využity k řešení některých úloh zpracování přirozeného jazyka v režimu zero-shot nebo few-shot. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/5-NLP/README.md b/translations/cs/lessons/5-NLP/README.md new file mode 100644 index 00000000..7633de84 --- /dev/null +++ b/translations/cs/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Zpracování přirozeného jazyka + +![Shrnutí úkolů NLP na kresbě](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.cs.png) + +V této sekci se zaměříme na použití neuronových sítí k řešení úkolů spojených se **zpracováním přirozeného jazyka (NLP)**. Existuje mnoho problémů v oblasti NLP, které bychom chtěli, aby počítače dokázaly vyřešit: + +* **Klasifikace textu** je typický klasifikační problém týkající se textových sekvencí. Příklady zahrnují klasifikaci e-mailových zpráv jako spam vs. ne-spam nebo kategorizaci článků jako sport, obchod, politika atd. Při vývoji chatbotů často potřebujeme pochopit, co uživatel chtěl říct – v tomto případě se jedná o **klasifikaci záměru**. Často je při klasifikaci záměru nutné pracovat s mnoha kategoriemi. +* **Analýza sentimentu** je typický regresní problém, kdy potřebujeme přiřadit číslo (sentiment), které odpovídá tomu, jak pozitivní/negativní je význam věty. Pokročilejší verzí analýzy sentimentu je **analýza sentimentu na základě aspektů** (ABSA), kdy sentiment nepřiřazujeme celé větě, ale jejím různým částem (aspektům), např. *V této restauraci mi chutnala kuchyně, ale atmosféra byla příšerná*. +* **Rozpoznávání pojmenovaných entit** (NER) se týká problému extrakce určitých entit z textu. Například můžeme potřebovat pochopit, že ve frázi *Potřebuji letět do Paříže zítra* slovo *zítra* odkazuje na DATUM a *Paříž* je LOKACE. +* **Extrakce klíčových slov** je podobná NER, ale potřebujeme automaticky extrahovat slova důležitá pro význam věty, aniž bychom předem trénovali na konkrétní typy entit. +* **Shlukování textu** může být užitečné, když chceme seskupit podobné věty, například podobné požadavky v konverzacích technické podpory. +* **Odpovídání na otázky** se týká schopnosti modelu odpovědět na konkrétní otázku. Model dostane jako vstup textový úryvek a otázku a musí poskytnout místo v textu, kde se odpověď na otázku nachází (nebo někdy vygenerovat text odpovědi). +* **Generování textu** je schopnost modelu generovat nový text. Může být považováno za klasifikační úkol, který předpovídá další písmeno/slovo na základě nějakého *textového podnětu*. Pokročilé modely generování textu, jako je GPT-3, dokážou řešit i jiné úkoly NLP pomocí techniky zvané [programování pomocí podnětů](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) nebo [inženýrství podnětů](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Shrnutí textu** je technika, kdy chceme, aby počítač "přečetl" dlouhý text a shrnul ho do několika vět. +* **Strojový překlad** lze vnímat jako kombinaci porozumění textu v jednom jazyce a generování textu v jiném. + +Zpočátku byly většina úkolů NLP řešena tradičními metodami, jako jsou gramatiky. Například při strojovém překladu byly použity analyzátory k transformaci původní věty na syntaktický strom, poté byly extrahovány vyšší úrovně sémantických struktur k reprezentaci významu věty a na základě tohoto významu a gramatiky cílového jazyka byl generován výsledek. Dnes je mnoho úkolů NLP efektivněji řešeno pomocí neuronových sítí. + +> Mnoho klasických metod NLP je implementováno v Python knihovně [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Online je dostupná skvělá [NLTK kniha](https://www.nltk.org/book/), která pokrývá, jak lze různé úkoly NLP řešit pomocí NLTK. + +V našem kurzu se budeme převážně zaměřovat na použití neuronových sítí pro NLP a NLTK použijeme tam, kde to bude potřeba. + +Již jsme se naučili používat neuronové sítě pro práci s tabulkovými daty a obrázky. Hlavní rozdíl mezi těmito typy dat a textem je, že text je sekvence proměnné délky, zatímco velikost vstupu v případě obrázků je předem známá. Zatímco konvoluční sítě dokážou extrahovat vzory z vstupních dat, vzory v textu jsou složitější. Například negace může být oddělena od subjektu libovolným počtem slov (např. *Nemám rád pomeranče* vs. *Nemám rád ty velké barevné chutné pomeranče*), a to by mělo být stále interpretováno jako jeden vzor. Proto je pro práci s jazykem nutné zavést nové typy neuronových sítí, jako jsou *rekurentní sítě* a *transformery*. + +## Instalace knihoven + +Pokud používáte lokální instalaci Pythonu pro spuštění tohoto kurzu, možná budete muset nainstalovat všechny potřebné knihovny pro NLP pomocí následujících příkazů: + +**Pro PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Pro TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> NLP s TensorFlow si můžete vyzkoušet na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Upozornění na GPU + +V této sekci budeme v některých příkladech trénovat poměrně velké modely. +* **Použijte počítač s podporou GPU**: Doporučuje se spouštět vaše notebooky na počítači s podporou GPU, aby se zkrátila doba čekání při práci s velkými modely. +* **Omezení paměti GPU**: Při běhu na GPU může dojít k situacím, kdy vám dojde paměť GPU, zejména při trénování velkých modelů. +* **Spotřeba paměti GPU**: Množství paměti GPU spotřebované během trénování závisí na různých faktorech, včetně velikosti minibatch. +* **Minimalizujte velikost minibatch**: Pokud narazíte na problémy s pamětí GPU, zvažte snížení velikosti minibatch ve vašem kódu jako možné řešení. +* **Uvolnění paměti GPU v TensorFlow**: Starší verze TensorFlow nemusí správně uvolňovat paměť GPU při trénování více modelů v jednom Python kernelu. Pro efektivní správu paměti GPU můžete nastavit TensorFlow tak, aby alokoval paměť GPU pouze podle potřeby. +* **Zahrnutí kódu**: Chcete-li nastavit TensorFlow tak, aby alokoval paměť GPU pouze podle potřeby, zahrňte následující kód do svých notebooků: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Pokud vás zajímá učení NLP z pohledu klasického strojového učení, navštivte [tento soubor lekcí](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## V této sekci +V této sekci se naučíme: + +* [Reprezentace textu jako tenzorů](13-TextRep/README.md) +* [Vektorové reprezentace slov](14-Emdeddings/README.md) +* [Modelování jazyka](15-LanguageModeling/README.md) +* [Rekurentní neuronové sítě](16-RNN/README.md) +* [Generativní sítě](17-GenerativeNetworks/README.md) +* [Transformery](18-Transformers/README.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/cs/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..49c059be --- /dev/null +++ b/translations/cs/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Genetické algoritmy + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetické algoritmy** (GA) jsou založeny na **evolučním přístupu** k AI, při kterém se využívají metody evoluce populace k nalezení optimálního řešení daného problému. Byly navrženy v roce 1975 [Johnem Henry Hollandem](https://wikipedia.org/wiki/John_Henry_Holland). + +Genetické algoritmy vycházejí z následujících principů: + +* Platná řešení problému mohou být reprezentována jako **geny** +* **Křížení** nám umožňuje kombinovat dvě řešení dohromady a získat nové platné řešení +* **Selektivní výběr** se používá k výběru optimálnějších řešení pomocí nějaké **fitness funkce** +* **Mutace** se zavádějí, aby destabilizovaly optimalizaci a dostaly nás z lokálního minima + +Pokud chcete implementovat genetický algoritmus, potřebujete následující: + + * Najít způsob kódování řešení problému pomocí **genů** g∈Γ + * Na množině genů Γ definovat **fitness funkci** fit: Γ→**R**. Menší hodnoty funkce odpovídají lepším řešením. + * Definovat mechanismus **křížení**, který kombinuje dva geny dohromady a vytváří nové platné řešení crossover: Γ2→Γ. + * Definovat mechanismus **mutace** mutate: Γ→Γ. + +V mnoha případech jsou křížení a mutace poměrně jednoduché algoritmy pro manipulaci s geny jako číselnými sekvencemi nebo bitovými vektory. + +Konkrétní implementace genetického algoritmu se může případ od případu lišit, ale obecná struktura je následující: + +1. Vyberte počáteční populaci G⊂Γ +2. Náhodně vyberte jednu z operací, která bude provedena v tomto kroku: křížení nebo mutace +3. **Křížení**: + * Náhodně vyberte dva geny g1, g2 ∈ G + * Vypočítejte křížení g=crossover(g1,g2) + * Pokud fit(g)1) nebo fit(g)2) - nahraďte odpovídající gen v populaci genem g. +4. **Mutace** - vyberte náhodný gen g∈G a nahraďte ho mutate(g) +5. Opakujte od kroku 2, dokud nedosáhnete dostatečně malé hodnoty fit nebo dokud nebude dosažen limit počtu kroků. + +## Typické úlohy + +Úlohy, které se obvykle řeší pomocí genetických algoritmů, zahrnují: + +1. Optimalizace rozvrhu +1. Optimální balení +1. Optimální řezání +1. Zrychlení vyčerpávajícího hledání + +## ✍️ Cvičení: Genetické algoritmy + +Pokračujte ve svém učení v následujících noteboocích: + +Přejděte na [tento notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), kde najdete dva příklady použití genetických algoritmů: + +1. Spravedlivé rozdělení pokladu +1. Problém 8 dam + +## Závěr + +Genetické algoritmy se používají k řešení mnoha problémů, včetně logistiky a vyhledávacích úloh. Tento obor je inspirován výzkumem, který spojil témata z psychologie a informatiky. + +## 🚀 Výzva + +"Genetické algoritmy jsou jednoduché na implementaci, ale jejich chování je obtížné pochopit." [zdroj](https://wikipedia.org/wiki/Genetic_algorithm) Proveďte výzkum a najděte implementaci genetického algoritmu, například pro řešení Sudoku, a vysvětlete, jak funguje pomocí náčrtu nebo diagramu. + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Přehled a samostudium + +Podívejte se na [toto skvělé video](https://www.youtube.com/watch?v=qv6UVOQ0F44), které ukazuje, jak se počítač může naučit hrát Super Mario pomocí neuronových sítí trénovaných genetickými algoritmy. O tom, jak se počítač učí hrát hry, se dozvíme více [v další sekci](../22-DeepRL/README.md). + +## [Úkol: Diofantická rovnice](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Vaším cílem je vyřešit tzv. **Diofantickou rovnici** - rovnici s celočíselnými kořeny. Například zvažte rovnici a+2b+3c+4d=30. Musíte najít celočíselné kořeny, které tuto rovnici splňují. + +*Tento úkol je inspirován [tímto příspěvkem](https://habr.com/post/128704/).* + +Tipy: + +1. Můžete uvažovat kořeny v intervalu [0;30] +1. Jako gen zvažte použití seznamu hodnot kořenů + +Použijte [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) jako výchozí bod. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/6-Other/22-DeepRL/README.md b/translations/cs/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..d018b829 --- /dev/null +++ b/translations/cs/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Hluboké posilované učení + +Posilované učení (Reinforcement Learning, RL) je považováno za jeden ze základních paradigmat strojového učení, vedle učení s učitelem a bez učitele. Zatímco učení s učitelem spoléhá na datovou sadu se známými výsledky, RL je založeno na **učení skrze činnost**. Například, když poprvé vidíme počítačovou hru, začneme ji hrát, i když neznáme pravidla, a brzy se zlepšujeme jen díky samotnému procesu hraní a přizpůsobování našeho chování. + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Pro provádění RL potřebujeme: + +* **Prostředí** nebo **simulátor**, který nastavuje pravidla hry. Měli bychom být schopni provádět experimenty v simulátoru a pozorovat výsledky. +* Nějakou **funkci odměny**, která ukazuje, jak úspěšný byl náš experiment. V případě učení se hrát počítačovou hru by odměnou bylo naše konečné skóre. + +Na základě funkce odměny bychom měli být schopni přizpůsobit své chování a zlepšit své dovednosti, abychom příště hráli lépe. Hlavní rozdíl mezi jinými typy strojového učení a RL je ten, že v RL obvykle nevíme, zda vyhrajeme nebo prohrajeme, dokud hru nedokončíme. Nemůžeme tedy říci, zda je určitý tah sám o sobě dobrý nebo ne - odměnu dostaneme až na konci hry. + +Během RL obvykle provádíme mnoho experimentů. Během každého experimentu musíme vyvážit mezi sledováním optimální strategie, kterou jsme se dosud naučili (**exploatace**), a zkoumáním nových možných stavů (**explorace**). + +## OpenAI Gym + +Skvělým nástrojem pro RL je [OpenAI Gym](https://gym.openai.com/) - **simulační prostředí**, které dokáže simulovat mnoho různých prostředí, od her Atari až po fyziku za balancováním tyče. Je to jedno z nejpopulárnějších simulačních prostředí pro trénování algoritmů posilovaného učení a je spravováno organizací [OpenAI](https://openai.com/). + +> **Note**: Všechna prostředí dostupná v OpenAI Gym si můžete prohlédnout [zde](https://gym.openai.com/envs/#classic_control). + +## Balancování CartPole + +Pravděpodobně jste všichni viděli moderní balancovací zařízení, jako je *Segway* nebo *Gyroskútry*. Tato zařízení dokážou automaticky balancovat tím, že přizpůsobují pohyb svých kol na základě signálu z akcelerometru nebo gyroskopu. V této sekci se naučíme, jak vyřešit podobný problém - balancování tyče. Je to podobné situaci, kdy cirkusový umělec potřebuje balancovat tyč na ruce - ale toto balancování probíhá pouze v 1D. + +Zjednodušená verze balancování je známá jako problém **CartPole**. Ve světě CartPole máme horizontální posuvník, který se může pohybovat doleva nebo doprava, a cílem je balancovat vertikální tyč na vrcholu posuvníku, zatímco se pohybuje. + +a cartpole + +Pro vytvoření a použití tohoto prostředí potřebujeme několik řádků kódu v Pythonu: + +```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}") +``` + +Každé prostředí lze přistupovat stejným způsobem: +* `env.reset` spustí nový experiment +* `env.step` provede simulační krok. Přijímá **akci** z **akčního prostoru** a vrací **pozorování** (z pozorovacího prostoru), stejně jako odměnu a příznak ukončení. + +V příkladu výše provádíme v každém kroku náhodnou akci, což je důvod, proč je životnost experimentu velmi krátká: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Cílem algoritmu RL je natrénovat model - tzv. **politiku** π - která vrátí akci v reakci na daný stav. Politiku můžeme také považovat za pravděpodobnostní, tj. pro jakýkoli stav *s* a akci *a* vrátí pravděpodobnost π(*a*|*s*), že bychom měli provést akci *a* ve stavu *s*. + +## Algoritmus Policy Gradients + +Nejzřejmější způsob, jak modelovat politiku, je vytvořit neuronovou síť, která bude přijímat stavy jako vstup a vracet odpovídající akce (nebo spíše pravděpodobnosti všech akcí). V jistém smyslu by to bylo podobné běžnému klasifikačnímu úkolu, s hlavním rozdílem - předem nevíme, jaké akce bychom měli provést v každém kroku. + +Myšlenkou je odhadnout tyto pravděpodobnosti. Vytvoříme vektor **kumulativních odměn**, který ukazuje naši celkovou odměnu v každém kroku experimentu. Také aplikujeme **diskontování odměn** tím, že násobíme dřívější odměny nějakým koeficientem γ=0.99, abychom snížili význam dřívějších odměn. Poté posilujeme ty kroky podél experimentální cesty, které přinášejí větší odměny. + +> Více o algoritmu Policy Gradient a jeho praktické ukázce najdete v [příkladovém notebooku](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmus Actor-Critic + +Vylepšená verze přístupu Policy Gradients se nazývá **Actor-Critic**. Hlavní myšlenkou je, že neuronová síť bude trénována tak, aby vracela dvě věci: + +* Politiku, která určuje, jakou akci provést. Tato část se nazývá **actor**. +* Odhad celkové odměny, kterou můžeme očekávat v daném stavu - tato část se nazývá **critic**. + +Tato architektura v jistém smyslu připomíná [GAN](../../4-ComputerVision/10-GANs/README.md), kde máme dvě sítě, které se trénují proti sobě. V modelu actor-critic navrhuje actor akci, kterou bychom měli provést, a critic se snaží být kritický a odhadnout výsledek. Naším cílem je však trénovat tyto sítě v souladu. + +Protože známe jak skutečné kumulativní odměny, tak výsledky vrácené criticem během experimentu, je relativně snadné vytvořit ztrátovou funkci, která minimalizuje rozdíl mezi nimi. To nám dá **ztrátu criticu**. **Ztrátu actora** můžeme vypočítat stejným přístupem jako v algoritmu Policy Gradient. + +Po spuštění jednoho z těchto algoritmů můžeme očekávat, že se náš CartPole bude chovat takto: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Cvičení: Policy Gradients a Actor-Critic RL + +Pokračujte ve svém učení v následujících noteboocích: + +* [RL v TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL v PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Další úkoly RL + +Posilované učení je dnes rychle rostoucí oblastí výzkumu. Některé zajímavé příklady posilovaného učení jsou: + +* Učení počítače hrát **hry Atari**. Výzvou v tomto problému je, že nemáme jednoduchý stav reprezentovaný jako vektor, ale spíše snímek obrazovky - a musíme použít CNN k převodu tohoto obrazového snímku na vektor vlastností nebo k extrakci informací o odměně. Hry Atari jsou dostupné v Gym. +* Učení počítače hrát deskové hry, jako je šachy a Go. Nedávno byly špičkové programy jako **Alpha Zero** trénovány od nuly dvěma agenty, kteří hráli proti sobě a zlepšovali se v každém kroku. +* V průmyslu se RL používá k vytváření řídicích systémů ze simulace. Služba nazvaná [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) je speciálně navržena pro tento účel. + +## Závěr + +Nyní jsme se naučili, jak trénovat agenty, aby dosáhli dobrých výsledků pouze tím, že jim poskytneme funkci odměny, která definuje požadovaný stav hry, a dáme jim příležitost inteligentně prozkoumat prostor možností. Úspěšně jsme vyzkoušeli dva algoritmy a dosáhli dobrého výsledku v relativně krátkém čase. Toto je však pouze začátek vaší cesty do RL, a rozhodně byste měli zvážit absolvování samostatného kurzu, pokud se chcete ponořit hlouběji. + +## 🚀 Výzva + +Prozkoumejte aplikace uvedené v sekci 'Další úkoly RL' a zkuste některou implementovat! + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Přehled a samostudium + +Zjistěte více o klasickém posilovaném učení v našem [kurikulu Strojového učení pro začátečníky](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Podívejte se na [toto skvělé video](https://www.youtube.com/watch?v=qv6UVOQ0F44), které ukazuje, jak se počítač může naučit hrát Super Mario. + +## Zadání: [Trénujte Mountain Car](lab/README.md) + +Vaším cílem v tomto zadání bude natrénovat jiné prostředí Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/6-Other/22-DeepRL/lab/README.md b/translations/cs/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..60379afd --- /dev/null +++ b/translations/cs/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Prostředí + +Prostředí Mountain Car zahrnuje auto uvězněné v údolí. Vaším cílem je vyskočit z údolí a dosáhnout vlajky. Akce, které můžete provádět, jsou zrychlení doleva, doprava nebo nedělat nic. Můžete pozorovat polohu auta na ose x a jeho rychlost. + +## Výchozí notebook + +Začněte laboratoř otevřením [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Závěr + +Během této laboratoře byste se měli naučit, že přizpůsobení RL algoritmů novému prostředí je často poměrně přímočaré, protože OpenAI Gym má stejné rozhraní pro všechna prostředí a algoritmy jako takové nejsou výrazně závislé na povaze prostředí. Dokonce můžete restrukturalizovat Python kód tak, aby bylo možné předat jakékoli prostředí RL algoritmu jako parametr. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/6-Other/23-MultiagentSystems/README.md b/translations/cs/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..47b2a4f5 --- /dev/null +++ b/translations/cs/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Multi-Agentní systémy + +Jedním z možných způsobů dosažení inteligence je takzvaný **emergentní** (nebo **synergický**) přístup, který vychází z faktu, že kombinované chování mnoha relativně jednoduchých agentů může vést k celkově složitějšímu (nebo inteligentnějšímu) chování systému jako celku. Teoreticky je tento přístup založen na principech [kolektivní inteligence](https://en.wikipedia.org/wiki/Collective_intelligence), [emergentismu](https://en.wikipedia.org/wiki/Global_brain) a [evoluční kybernetiky](https://en.wikipedia.org/wiki/Global_brain), které tvrdí, že systémy na vyšší úrovni získávají určitou přidanou hodnotu, pokud jsou správně kombinovány ze systémů na nižší úrovni (tzv. *princip přechodu metasystému*). + +## [Kvíz před přednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Směr **multi-agentních systémů** se objevil v oblasti AI v 90. letech jako reakce na rozvoj internetu a distribuovaných systémů. Jedna z klasických učebnic AI, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se zaměřuje na pohled klasické AI z perspektivy multi-agentních systémů. + +Ústředním pojmem multi-agentního přístupu je **agent** – entita, která žije v nějakém **prostředí**, které může vnímat a ovlivňovat. Toto je velmi široká definice a existuje mnoho různých typů a klasifikací agentů: + +* Podle jejich schopnosti uvažovat: + - **Reaktivní** agenti obvykle mají jednoduché chování typu požadavek-odpověď + - **Deliberativní** agenti využívají nějakou formu logického uvažování a/nebo plánovacích schopností +* Podle místa, kde agent vykonává svůj kód: + - **Statické** agenti pracují na vyhrazeném síťovém uzlu + - **Mobilní** agenti mohou přesouvat svůj kód mezi síťovými uzly +* Podle jejich chování: + - **Pasivní agenti** nemají specifické cíle. Takoví agenti mohou reagovat na vnější podněty, ale sami žádné akce nevyvolávají. + - **Aktivní agenti** mají určité cíle, které sledují + - **Kognitivní agenti** zahrnují složité plánování a uvažování + +Multi-agentní systémy se dnes používají v řadě aplikací: + +* Ve hrách mnoho postav ovládaných počítačem využívá nějakou formu AI a lze je považovat za inteligentní agenty +* Ve video produkci je vykreslování složitých 3D scén zahrnujících davy obvykle prováděno pomocí simulace multi-agentních systémů +* V modelování systémů se multi-agentní přístup používá k simulaci chování složitého modelu. Například multi-agentní přístup byl úspěšně použit k předpovědi šíření nemoci COVID-19 po celém světě. Podobný přístup lze použít k modelování dopravy ve městě a sledování, jak reaguje na změny dopravních pravidel. +* V komplexních automatizačních systémech může každé zařízení fungovat jako nezávislý agent, což činí celý systém méně monolitickým a odolnějším. + +Nebudeme se příliš zabývat hlubokým studiem multi-agentních systémů, ale podíváme se na jeden příklad **modelování multi-agentních systémů**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) je prostředí pro modelování multi-agentních systémů založené na upravené verzi programovacího jazyka [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Tento jazyk byl vyvinut pro výuku programovacích konceptů dětem a umožňuje ovládat agenta nazývaného **želva**, který se může pohybovat a zanechávat za sebou stopu. To umožňuje vytvářet složité geometrické tvary, což je velmi vizuální způsob, jak pochopit chování agenta. + +V NetLogo můžeme vytvořit mnoho želv pomocí příkazu `create-turtles`. Poté můžeme všem želvám přikázat, aby provedly nějaké akce (v níže uvedeném příkladu - posun o 10 bodů vpřed): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Samozřejmě není zajímavé, když všechny želvy dělají totéž, takže můžeme `ask` skupiny želv, například ty, které se nacházejí v blízkosti určitého bodu. Můžeme také vytvořit želvy různých *druhů* pomocí příkazu `breed [cats cat]`. Zde `cat` je název druhu a je třeba specifikovat jak jednotné, tak množné číslo, protože různé příkazy používají různé formy pro přehlednost. + +> ✅ Nebudeme se učit jazyk NetLogo samotný – pokud vás zajímá více, můžete navštívit skvělý [Interaktivní slovník pro začátečníky NetLogo](https://ccl.northwestern.edu/netlogo/bind/). + +NetLogo si můžete [stáhnout](https://ccl.northwestern.edu/netlogo/download.shtml) a nainstalovat, abyste si ho vyzkoušeli. + +### Knihovna modelů + +Skvělou věcí na NetLogo je, že obsahuje knihovnu funkčních modelů, které si můžete vyzkoušet. Přejděte na **File → Models Library**, kde máte na výběr mnoho kategorií modelů. + +NetLogo Models Library + +> Screenshot knihovny modelů od Dmitry Soshnikov + +Můžete otevřít jeden z modelů, například **Biology → Flocking**. + +### Hlavní principy + +Po otevření modelu se dostanete na hlavní obrazovku NetLogo. Zde je ukázkový model, který popisuje populaci vlků a ovcí, vzhledem k omezeným zdrojům (tráva). + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.cs.png) + +> Screenshot od Dmitry Soshnikov + +Na této obrazovce můžete vidět: + +* Sekci **Interface**, která obsahuje: + - Hlavní pole, kde žijí všichni agenti + - Různé ovládací prvky: tlačítka, posuvníky atd. + - Grafy, které můžete použít k zobrazení parametrů simulace +* Záložku **Code**, která obsahuje editor, kde můžete psát program NetLogo + +Ve většině případů bude rozhraní obsahovat tlačítko **Setup**, které inicializuje stav simulace, a tlačítko **Go**, které spustí provádění. Tyto akce jsou zpracovány odpovídajícími obslužnými funkcemi v kódu, které vypadají takto: + +``` +to go [ +... +] +``` + +Svět NetLogo se skládá z následujících objektů: + +* **Agenti** (želvy), kteří se mohou pohybovat po poli a něco dělat. Agenty ovládáte pomocí syntaxe `ask turtles [...]`, přičemž kód v závorkách je prováděn všemi agenty v *želvím režimu*. +* **Patches** jsou čtvercové oblasti pole, na kterých agenti žijí. Můžete odkazovat na všechny agenty na stejném patchi, nebo můžete měnit barvy patchů a některé další vlastnosti. Můžete také `ask patches`, aby něco udělaly. +* **Observer** je unikátní agent, který ovládá svět. Všechny obslužné funkce tlačítek jsou prováděny v *režimu pozorovatele*. + +> ✅ Krása multi-agentního prostředí spočívá v tom, že kód, který běží v želvím režimu nebo v režimu patchů, je prováděn současně všemi agenty paralelně. Tím, že napíšete trochu kódu a naprogramujete chování jednotlivého agenta, můžete vytvořit složité chování celého simulačního systému. + +### Flocking + +Jako příklad multi-agentního chování si představme **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking je složitý vzor, který je velmi podobný tomu, jak létají hejna ptáků. Při jejich letu můžete mít pocit, že následují nějaký kolektivní algoritmus nebo že mají nějakou formu *kolektivní inteligence*. Toto složité chování však vzniká, když každý jednotlivý agent (v tomto případě *pták*) pouze pozoruje některé jiné agenty v krátké vzdálenosti od sebe a řídí se třemi jednoduchými pravidly: + +* **Zarovnání** – směřuje k průměrnému směru sousedních agentů +* **Soudržnost** – snaží se směřovat k průměrné pozici sousedů (*dlouhodobá přitažlivost*) +* **Oddělení** – když se příliš přiblíží k jiným ptákům, snaží se od nich vzdálit (*krátkodobé odpuzování*) + +Můžete spustit příklad flockingu a pozorovat chování. Můžete také upravit parametry, jako je *stupeň oddělení* nebo *rozsah vidění*, který definuje, jak daleko každý pták vidí. Všimněte si, že pokud snížíte rozsah vidění na 0, všichni ptáci oslepnou a flocking se zastaví. Pokud snížíte oddělení na 0, všichni ptáci se shromáždí do přímky. + +> ✅ Přepněte na záložku **Code** a podívejte se, kde jsou tři pravidla flockingu (zarovnání, soudržnost a oddělení) implementována v kódu. Všimněte si, jak odkazujeme pouze na ty agenty, kteří jsou v dohledu. + +### Další modely k prozkoumání + +Existuje několik dalších zajímavých modelů, se kterými můžete experimentovat: + +* **Art → Fireworks** ukazuje, jak lze ohňostroj považovat za kolektivní chování jednotlivých proudů ohně +* **Social Science → Traffic Basic** a **Social Science → Traffic Grid** ukazují model městské dopravy v 1D a 2D mřížce s nebo bez semaforů. Každé auto v simulaci se řídí následujícími pravidly: + - Pokud je prostor před ním prázdný – zrychluje (až na určitou maximální rychlost) + - Pokud vidí překážku před sebou – brzdí (a můžete upravit, jak daleko řidič vidí) +* **Social Science → Party** ukazuje, jak se lidé shlukují během koktejlové párty. Můžete najít kombinaci parametrů, která vede k nejrychlejšímu zvýšení štěstí skupiny. + +Jak vidíte z těchto příkladů, simulace multi-agentních systémů mohou být velmi užitečným způsobem, jak pochopit chování složitého systému složeného z jednotlivců, kteří se řídí stejnou nebo podobnou logikou. Může být také použita k ovládání virtuálních agentů, jako jsou [NPC](https://en.wikipedia.org/wiki/NPC) v počítačových hrách nebo agenti ve 3D animovaných světech. + +## Deliberativní agenti + +Výše popsaní agenti jsou velmi jednoduchí, reagují na změny v prostředí pomocí nějakého algoritmu. Jako takoví jsou **reaktivní agenti**. Někdy však agenti mohou uvažovat a plánovat své akce, v takovém případě se nazývají **deliberativní**. + +Typickým příkladem by byl osobní agent, který obdrží pokyn od člověka, aby rezervoval zájezd. Předpokládejme, že na internetu žije mnoho agentů, kteří mu mohou pomoci. Měl by pak kontaktovat jiné agenty, aby zjistil, které lety jsou dostupné, jaké jsou ceny hotelů pro různé termíny, a pokusit se vyjednat nejlepší cenu. Když je plán dovolené kompletní a potvrzený majitelem, může pokračovat v rezervaci. + +Aby toho agenti dosáhli, potřebují **komunikovat**. Pro úspěšnou komunikaci potřebují: + +* Nějaké **standardní jazyky pro výměnu znalostí**, jako [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) a [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Tyto jazyky jsou navrženy na základě [teorie řečových aktů](https://en.wikipedia.org/wiki/Speech_act). +* Tyto jazyky by měly také zahrnovat **protokoly pro vyjednávání**, založené na různých **typech aukcí**. +* **Společnou ontologii**, kterou mohou používat, aby odkazovali na stejné koncepty a znali jejich význam +* Způsob, jak **objevit**, co různí agenti dokážou, také založený na nějaké formě ontologie + +Deliberativní agenti jsou mnohem složitější než reaktivní, protože nejen reagují na změny v prostředí, ale také by měli být schopni *iniciovat* akce. Jednou z navrhovaných architektur pro deliberativní agenty je tzv. agent Belief-Desire-Intention (BDI): + +* **Beliefs** tvoří soubor znalostí o prostředí agenta. Může být strukturován jako znalostní báze nebo soubor pravidel, které agent může aplikovat na konkrétní situaci v prostředí. +* **Desires** definují, co agent chce dělat, tj. jeho cíle. Například cílem osobního asistenta výše je rezervovat zájezd a cílem hotelového agenta je maximalizovat zisk. +* **Intentions** jsou konkrétní akce, které agent plánuje k dosažení svých cílů. Akce obvykle mění prostředí a způsobují komunikaci s jinými agenty. + +Existují některé platformy dostupné pro budování multi-agentních systémů, jako [JADE](https://jade.tilab.com/). [Tento článek](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) obsahuje přehled platforem pro multi-agentní systémy spolu s krátkou historií multi-agentních systémů a jejich různými scénáři použití. + +## Závěr + +Multi-agentní systémy mohou mít velmi různé podoby a být použity v mnoha různých aplikacích. +Všechny se zaměřují na jednodušší chování jednotlivého agenta a dosahují složitějšího chování celého systému díky **synergickému efektu**. + +## 🚀 Výzva + +Přeneste tuto lekci do reálného světa a zkuste konceptualizovat multi-agentní systém, který dokáže vyřešit problém. Co by například musel multi-agentní systém udělat, aby optimalizoval trasu školního autobusu? Jak by mohl fungovat v pekárně? + +## [Kvíz po přednášce](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Přehled a samostudium + +Prozkoumejte využití tohoto typu systému v průmyslu. Vyberte si oblast, jako je výroba nebo herní průmysl, a zjistěte, jak mohou multi-agentní systémy řešit jedinečné problémy. + +## [Úkol NetLogo](assignment.md) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/cs/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..3b3a6804 --- /dev/null +++ b/translations/cs/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Zadání NetLogo + +Vyberte jeden z modelů v knihovně NetLogo a použijte jej k co nejvěrnější simulaci reálné situace. Dobrým příkladem by bylo upravit model Virus ve složce Alternative Visualizations tak, aby ukázal, jak může být použit k modelování šíření COVID-19. Dokážete vytvořit model, který napodobuje šíření viru v reálném světě? + +Svoji práci předveďte uložením kopie a vytvořením video ukázky, ve které vysvětlíte, jak je model propojen s reálnou situací. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nenese odpovědnost za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/7-Ethics/README.md b/translations/cs/lessons/7-Ethics/README.md new file mode 100644 index 00000000..c2d122b2 --- /dev/null +++ b/translations/cs/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etická a odpovědná AI + +Tento kurz máte téměř za sebou a doufám, že nyní jasně vidíte, že AI je založena na řadě formálních matematických metod, které nám umožňují nacházet vztahy v datech a trénovat modely, aby napodobovaly některé aspekty lidského chování. V této fázi historie považujeme AI za velmi mocný nástroj pro extrakci vzorců z dat a jejich aplikaci na řešení nových problémů. + +## [Kvíz před přednáškou](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Nicméně ve vědeckofantastických příbězích často vidíme scénáře, kde AI představuje hrozbu pro lidstvo. Tyto příběhy se obvykle točí kolem nějaké formy vzpoury AI, kdy se AI rozhodne postavit proti lidem. To naznačuje, že AI má nějaké emoce nebo dokáže činit rozhodnutí, která její vývojáři nepředpokládali. + +Typ AI, o kterém jsme se učili v tomto kurzu, není nic jiného než rozsáhlá maticová aritmetika. Je to velmi mocný nástroj, který nám pomáhá řešit problémy, a stejně jako každý jiný mocný nástroj - může být použit k dobrým i špatným účelům. Důležité je, že může být *zneužit*. + +## Principy odpovědné AI + +Abychom se vyhnuli náhodnému nebo úmyslnému zneužití AI, Microsoft stanovuje důležité [Principy odpovědné AI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Tyto principy jsou založeny na následujících konceptech: + +* **Spravedlnost** souvisí s důležitým problémem *předpojatosti modelu*, která může vzniknout použitím zaujatých dat pro trénink. Například když se snažíme předpovědět pravděpodobnost, že někdo získá práci softwarového vývojáře, model pravděpodobně upřednostní muže - jednoduše proto, že tréninková data byla pravděpodobně zaujatá ve prospěch mužského publika. Musíme pečlivě vyvážit tréninková data a zkoumat model, abychom se vyhnuli předpojatostem a zajistili, že model zohlední relevantnější vlastnosti. +* **Spolehlivost a bezpečnost**. Ze své podstaty mohou AI modely dělat chyby. Neuronová síť vrací pravděpodobnosti, a to musíme brát v úvahu při rozhodování. Každý model má určitou přesnost a citlivost, a je důležité to pochopit, abychom předešli škodám, které by mohly způsobit špatné rady. +* **Soukromí a bezpečnost** mají specifické dopady v oblasti AI. Například když používáme nějaká data pro trénink modelu, tato data se určitým způsobem "integrují" do modelu. Na jedné straně to zvyšuje bezpečnost a soukromí, na druhé straně si musíme pamatovat, na jakých datech byl model trénován. +* **Inkluzivita** znamená, že AI nevytváříme proto, aby nahradila lidi, ale aby je doplnila a učinila naši práci kreativnější. To také souvisí se spravedlností, protože při práci s nedostatečně zastoupenými komunitami jsou většina dat, která sbíráme, pravděpodobně zaujatá, a musíme zajistit, že tyto komunity budou zahrnuty a správně zpracovány AI. +* **Transparentnost**. To zahrnuje zajištění, že vždy jasně uvádíme, že je používána AI. Také, kdykoli je to možné, chceme používat AI systémy, které jsou *interpretovatelné*. +* **Odpovědnost**. Když AI modely přicházejí s nějakými rozhodnutími, není vždy jasné, kdo je za tato rozhodnutí odpovědný. Musíme zajistit, že chápeme, kde leží odpovědnost za rozhodnutí AI. Ve většině případů bychom chtěli zahrnout lidi do procesu rozhodování, aby za důležitá rozhodnutí byli odpovědní skuteční lidé. + +## Nástroje pro odpovědnou AI + +Microsoft vyvinul [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), který obsahuje sadu nástrojů: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, který zahrnuje: + + - EconML - nástroj pro kauzální analýzu, zaměřený na otázky typu "co kdyby" + - DiCE - nástroj pro kontrafaktuální analýzu, který vám umožní zjistit, které vlastnosti je třeba změnit, aby se ovlivnilo rozhodnutí modelu + +Pro více informací o etice AI navštivte [tuto lekci](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) v kurikulu strojového učení, která zahrnuje úkoly. + +## Přehled a samostudium + +Abyste se dozvěděli více o odpovědné AI, projděte si tento [výukový program](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste). + +## [Kvíz po přednášce](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/README.md b/translations/cs/lessons/README.md new file mode 100644 index 00000000..e1454f8e --- /dev/null +++ b/translations/cs/lessons/README.md @@ -0,0 +1,17 @@ + +# Přehled + +![Přehled v kresbě](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.cs.png) + +> Sketchnote od [Tomomi Imura](https://twitter.com/girlie_mac) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/X-Extras/X1-MultiModal/README.md b/translations/cs/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..d3fa52b6 --- /dev/null +++ b/translations/cs/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Multi-Modální Sítě + +Po úspěchu modelů transformerů při řešení úloh NLP byly stejné nebo podobné architektury aplikovány na úlohy počítačového vidění. Roste zájem o vytváření modelů, které by *kombinovaly* schopnosti vidění a přirozeného jazyka. Jedním z takových pokusů je práce OpenAI, která vytvořila modely CLIP a DALL.E. + +## Kontrastní Předtrénování Obrázků (CLIP) + +Hlavní myšlenkou CLIP je schopnost porovnávat textové výzvy s obrázkem a určit, jak dobře obrázek odpovídá dané výzvě. + +![CLIP Architektura](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.cs.png) + +> *Obrázek z [tohoto blogového příspěvku](https://openai.com/blog/clip/)* + +Model je trénován na obrázcích získaných z internetu a jejich popiscích. Pro každou dávku vezmeme N párů (obrázek, text) a převedeme je na vektorové reprezentace I, ..., I / T, ..., T. Tyto reprezentace jsou následně spárovány. Ztrátová funkce je definována tak, aby maximalizovala kosinovou podobnost mezi vektory odpovídajícími jednomu páru (např. I a T) a minimalizovala kosinovou podobnost mezi všemi ostatními páry. Proto se tento přístup nazývá **kontrastní**. + +Model/knihovna CLIP je dostupná na [GitHubu OpenAI](https://github.com/openai/CLIP). Přístup je popsán v [tomto blogovém příspěvku](https://openai.com/blog/clip/) a podrobněji v [tomto článku](https://arxiv.org/pdf/2103.00020.pdf). + +Jakmile je model předtrénován, můžeme mu předložit dávku obrázků a textových výzev, a vrátí tensor s pravděpodobnostmi. CLIP lze použít pro několik úloh: + +**Klasifikace Obrázků** + +Předpokládejme, že potřebujeme klasifikovat obrázky například na kočky, psy a lidi. V tomto případě můžeme modelu předložit obrázek a sérii textových výzev: "*obrázek kočky*", "*obrázek psa*", "*obrázek člověka*". Ve výsledném vektoru s 3 pravděpodobnostmi stačí vybrat index s nejvyšší hodnotou. + +![CLIP pro Klasifikaci Obrázků](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.cs.png) + +> *Obrázek z [tohoto blogového příspěvku](https://openai.com/blog/clip/)* + +**Vyhledávání Obrázků na Základě Textu** + +Můžeme také udělat opak. Pokud máme kolekci obrázků, můžeme tuto kolekci předložit modelu spolu s textovou výzvou – model nám vrátí obrázek, který je nejpodobnější dané výzvě. + +## ✍️ Příklad: [Použití CLIP pro Klasifikaci Obrázků a Vyhledávání Obrázků](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Otevřete notebook [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb), abyste viděli CLIP v akci. + +## Generování Obrázků s VQGAN+CLIP + +CLIP lze také použít pro **generování obrázků** na základě textové výzvy. K tomu potřebujeme **generátorový model**, který bude schopen generovat obrázky na základě nějakého vektorového vstupu. Jedním z takových modelů je [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Hlavní myšlenky VQGAN, které jej odlišují od běžného [GAN](../../4-ComputerVision/10-GANs/README.md), jsou následující: +* Použití autoregresivní transformerové architektury k vytvoření sekvence vizuálních částí bohatých na kontext, které tvoří obrázek. Tyto vizuální části se učí pomocí [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Použití diskriminátoru sub-obrázků, který detekuje, zda jsou části obrázku "reálné" nebo "falešné" (na rozdíl od přístupu "vše nebo nic" u tradičního GAN). + +Více o VQGAN se dozvíte na webu [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Jedním z důležitých rozdílů mezi VQGAN a tradičním GAN je, že tradiční GAN může vytvořit slušný obrázek z jakéhokoli vstupního vektoru, zatímco VQGAN pravděpodobně vytvoří obrázek, který nebude koherentní. Proto je třeba dále řídit proces tvorby obrázku, což lze provést pomocí CLIP. + +![VQGAN+CLIP Architektura](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.cs.png) + +Pro generování obrázku odpovídajícího textové výzvě začneme s nějakým náhodným kódovacím vektorem, který je předán přes VQGAN k vytvoření obrázku. Poté je použit CLIP k vytvoření ztrátové funkce, která ukazuje, jak dobře obrázek odpovídá textové výzvě. Cílem je minimalizovat tuto ztrátu pomocí zpětné propagace k úpravě parametrů vstupního vektoru. + +Skvělá knihovna, která implementuje VQGAN+CLIP, je [Pixray](http://github.com/pixray/pixray). + +![Obrázek vytvořený Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.cs.png) | ![Obrázek vytvořený Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.cs.png) | ![Obrázek vytvořený Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.cs.png) +----|----|---- +Obrázek vytvořený na základě výzvy *detailní akvarelový portrét mladého učitele literatury s knihou* | Obrázek vytvořený na základě výzvy *detailní olejový portrét mladé učitelky informatiky s počítačem* | Obrázek vytvořený na základě výzvy *detailní olejový portrét starého učitele matematiky před tabulí* + +> Obrázky z kolekce **Umělí Učitelé** od [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E je verze GPT-3 trénovaná na generování obrázků z výzev. Byl trénován s 12 miliardami parametrů. + +Na rozdíl od CLIP přijímá DALL-E text i obrázek jako jeden tok tokenů pro obrázky i text. Proto lze z více výzev generovat obrázky na základě textu. + +### [DALL-E 2](https://openai.com/dall-e-2) +Hlavní rozdíl mezi DALL.E 1 a 2 je, že DALL.E 2 generuje realističtější obrázky a umění. + +Příklady generování obrázků pomocí DALL-E: +![Obrázek vytvořený 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.cs.png) | ![Obrázek vytvořený 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.cs.png) | ![Obrázek vytvořený 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.cs.png) +----|----|---- +Obrázek vytvořený na základě výzvy *detailní akvarelový portrét mladého učitele literatury s knihou* | Obrázek vytvořený na základě výzvy *detailní olejový portrét mladé učitelky informatiky s počítačem* | Obrázek vytvořený na základě výzvy *detailní olejový portrét starého učitele matematiky před tabulí* + +## Reference + +* Článek o VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Článek o CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Prohlášení**: +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/sketchnotes/LICENSE.md b/translations/cs/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..9f224bea --- /dev/null +++ b/translations/cs/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,114 @@ + +Pravidla sdílení podle licence Creative Commons Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation („Creative Commons“) není právní firma a neposkytuje právní služby ani právní poradenství. Distribuce veřejných licencí Creative Commons nevytváří vztah mezi právníkem a klientem ani jiný podobný vztah. Creative Commons poskytuje své licence a související informace „tak, jak jsou“. Creative Commons neposkytuje žádné záruky ohledně svých licencí, jakéhokoliv materiálu licencovaného podle jejich podmínek, ani souvisejících informací. Creative Commons se v maximální možné míře zříká odpovědnosti za škody vyplývající z jejich použití. + +Používání veřejných licencí Creative Commons + +Veřejné licence Creative Commons poskytují standardní soubor podmínek, které mohou autoři a další držitelé práv využít ke sdílení původních autorských děl a jiných materiálů podléhajících autorskému právu a určitým dalším právům specifikovaným v níže uvedené veřejné licenci. Následující úvahy slouží pouze pro informační účely, nejsou vyčerpávající a nejsou součástí našich licencí. + + Úvahy pro poskytovatele licence: Naše veřejné licence jsou určeny pro ty, kteří jsou oprávněni udělit veřejnosti povolení používat materiál způsoby, které by jinak byly omezeny autorským právem a určitými dalšími právy. Naše licence jsou neodvolatelné. Poskytovatelé licence by si měli přečíst a porozumět podmínkám licence, kterou si zvolí, před jejím použitím. Poskytovatelé licence by si také měli zajistit všechna potřebná práva před použitím našich licencí, aby veřejnost mohla materiál znovu použít podle očekávání. Poskytovatelé licence by měli jasně označit jakýkoliv materiál, který nepodléhá licenci. To zahrnuje jiný materiál licencovaný pod CC nebo materiál použitý na základě výjimky či omezení autorského práva. Další úvahy pro poskytovatele licence: + wiki.creativecommons.org/Considerations_for_licensors + + Úvahy pro veřejnost: Použitím jedné z našich veřejných licencí poskytovatel licence uděluje veřejnosti povolení používat licencovaný materiál za specifikovaných podmínek. Pokud povolení poskytovatele licence není z jakéhokoliv důvodu nutné – například kvůli platné výjimce nebo omezení autorského práva – pak se na toto použití licence nevztahuje. Naše licence udělují pouze oprávnění podle autorského práva a určitých dalších práv, která je poskytovatel licence oprávněn udělit. Použití licencovaného materiálu může být stále omezeno z jiných důvodů, včetně toho, že jiní mají autorská práva nebo jiná práva k materiálu. Poskytovatel licence může mít zvláštní požadavky, například žádost, aby byly všechny změny označeny nebo popsány. Ačkoliv to naše licence nevyžadují, doporučujeme tyto požadavky respektovat, pokud je to rozumné. Další úvahy pro veřejnost: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Veřejná licence Creative Commons Attribution-ShareAlike 4.0 International + +Použitím Licencovaných práv (definovaných níže) přijímáte a souhlasíte s tím, že budete vázáni podmínkami této veřejné licence Creative Commons Attribution-ShareAlike 4.0 International („Veřejná licence“). V rozsahu, v jakém může být tato Veřejná licence interpretována jako smlouva, Vám jsou Licencovaná práva udělena výměnou za Vaše přijetí těchto podmínek, a Poskytovatel licence Vám tato práva uděluje výměnou za výhody, které Poskytovatel licence získává zpřístupněním Licencovaného materiálu podle těchto podmínek. + +Oddíl 1 – Definice. + + a. Upravený materiál znamená materiál podléhající autorskému právu a podobným právům, který je odvozený z Licencovaného materiálu nebo na něm založený, a ve kterém je Licencovaný materiál přeložen, upraven, uspořádán, transformován nebo jinak modifikován způsobem vyžadujícím povolení podle autorského práva a podobných práv držených Poskytovatelem licence. Pro účely této Veřejné licence, pokud je Licencovaný materiál hudebním dílem, výkonem nebo zvukovým záznamem, je Upravený materiál vždy vytvořen, pokud je Licencovaný materiál synchronizován v časové souvislosti s pohyblivým obrazem. + + b. Licence adaptéra znamená licenci, kterou uplatňujete na svá autorská práva a podobná práva ve Vašich příspěvcích k Upravenému materiálu v souladu s podmínkami této Veřejné licence. + + c. Kompatibilní licence BY-SA znamená licenci uvedenou na creativecommons.org/compatiblelicenses, schválenou Creative Commons jako v podstatě ekvivalentní této Veřejné licenci. + + d. Autorská práva a podobná práva znamenají autorská práva a/nebo podobná práva úzce související s autorským právem, včetně, bez omezení, práv na výkon, vysílání, zvukový záznam a sui generis práva k databázím, bez ohledu na to, jak jsou tato práva označena nebo kategorizována. Pro účely této Veřejné licence nejsou práva specifikovaná v Oddíle 2(b)(1)-(2) považována za Autorská práva a podobná práva. + + e. Efektivní technologická opatření znamenají opatření, která nelze obejít bez řádného oprávnění podle zákonů plnících závazky podle článku 11 Smlouvy WIPO o autorském právu přijaté 20. prosince 1996 a/nebo podobných mezinárodních dohod. + + f. Výjimky a omezení znamenají spravedlivé užití, spravedlivé nakládání a/nebo jakoukoliv jinou výjimku nebo omezení Autorských práv a podobných práv, která se vztahují na Vaše použití Licencovaného materiálu. + + g. Prvky licence znamenají atributy licence uvedené v názvu Veřejné licence Creative Commons. Prvky licence této Veřejné licence jsou Uvedení autora a Zachování licence. + + h. Licencovaný materiál znamená umělecké nebo literární dílo, databázi nebo jiný materiál, na který Poskytovatel licence uplatnil tuto Veřejnou licenci. + + i. Licencovaná práva znamenají práva udělená Vám podle podmínek této Veřejné licence, která jsou omezena na všechna Autorská práva a podobná práva, která se vztahují na Vaše použití Licencovaného materiálu a která je Poskytovatel licence oprávněn licencovat. + + j. Poskytovatel licence znamená jednotlivce nebo subjekty udělující práva podle této Veřejné licence. + + k. Sdílení znamená zpřístupnění materiálu veřejnosti jakýmkoliv způsobem nebo procesem, který vyžaduje povolení podle Licencovaných práv, jako je reprodukce, veřejné vystavení, veřejné provedení, distribuce, šíření, komunikace nebo dovoz, a zpřístupnění materiálu veřejnosti včetně způsobů, které umožňují členům veřejnosti přístup k materiálu z místa a v čase, který si sami zvolí. + + l. Sui generis práva k databázím znamenají práva jiná než autorská práva vyplývající ze Směrnice 96/9/ES Evropského parlamentu a Rady ze dne 11. března 1996 o právní ochraně databází, ve znění pozdějších předpisů a/nebo nástupců, stejně jako jiná v podstatě ekvivalentní práva kdekoliv na světě. + + m. Vy znamená jednotlivce nebo subjekt vykonávající Licencovaná práva podle této Veřejné licence. Vaše má odpovídající význam. + +... +Práva, poté databáze, ve které máte práva Sui Generis Database Rights (ale nikoli její jednotlivý obsah), je Adaptovaný materiál, + +včetně pro účely oddílu 3(b); a +c. Musíte dodržovat podmínky uvedené v oddílu 3(a), pokud sdílíte celý nebo podstatnou část obsahu databáze. + +Pro vyloučení pochybností, tento oddíl 4 doplňuje a nenahrazuje vaše povinnosti podle této Veřejné licence, pokud licencovaná práva zahrnují jiná autorská práva a podobná práva. + +### Oddíl 5 – Vyloučení záruk a omezení odpovědnosti. + +a. NENÍ-LI LICENCOR SAMOSTATNĚ DOHODNUTO JINAK, V MAXIMÁLNÍM MOŽNÉM ROZSAHU NABÍZÍ LICENCOR LICENCOVANÝ MATERIÁL „TAK, JAK JE“ A „TAK, JAK JE K DISPOZICI“ A NEPOSKYTUJE ŽÁDNÉ PROHLÁŠENÍ ANI ZÁRUKY JAKÉHOKOLI DRUHU TÝKAJÍCÍ SE LICENCOVANÉHO MATERIÁLU, AŤ UŽ VÝSLOVNÉ, IMPLICITNÍ, ZÁKONNÉ NEBO JINÉ. TO ZAHRNUJE, BEZ OMEZENÍ, ZÁRUKY NA VLASTNICTVÍ, OBCHODOVATELNOST, VHODNOST PRO URČITÝ ÚČEL, NEPORUŠENÍ PRÁV, ABSENCI SKRYTÝCH NEBO JINÝCH VAD, PŘESNOST NEBO PŘÍTOMNOST ČI NEPŘÍTOMNOST CHYB, AŤ UŽ ZNÁMÝCH NEBO OBJEVITELNÝCH. KDE NELZE VYLOUČENÍ ZÁRUK PLNĚ NEBO ČÁSTEČNĚ UPLATNIT, TOTO VYLOUČENÍ SE NA VÁS NEMUSÍ VZTAHOVAT. + +b. V MAXIMÁLNÍM MOŽNÉM ROZSAHU NEBUDE LICENCOR ZA ŽÁDNÝCH OKOLNOSTÍ ODPOVĚDNÝ VŮČI VÁM NA ZÁKLADĚ JAKÉKOLI PRÁVNÍ TEORIE (VČETNĚ, BEZ OMEZENÍ, NEDBALOSTI) NEBO JINAK ZA JAKÉKOLI PŘÍMÉ, ZVLÁŠTNÍ, NEPŘÍMÉ, NÁHODNÉ, NÁSLEDNÉ, TRESTNÍ, EXEMPLÁRNÍ NEBO JINÉ ZTRÁTY, NÁKLADY, VÝDAJE NEBO ŠKODY VYPLÝVAJÍCÍ Z TÉTO VEŘEJNÉ LICENCE NEBO POUŽITÍ LICENCOVANÉHO MATERIÁLU, I KDYŽ BYL LICENCOR UPOZORNĚN NA MOŽNOST TAKOVÝCH ZTRÁT, NÁKLADŮ, VÝDAJŮ NEBO ŠKOD. KDE NELZE OMEZENÍ ODPOVĚDNOSTI PLNĚ NEBO ČÁSTEČNĚ UPLATNIT, TOTO OMEZENÍ SE NA VÁS NEMUSÍ VZTAHOVAT. + +c. Vyloučení záruk a omezení odpovědnosti uvedené výše budou vykládány způsobem, který, pokud možno, co nejvíce odpovídá absolutnímu vyloučení a zřeknutí se veškeré odpovědnosti. + +### Oddíl 6 – Doba platnosti a ukončení. + +a. Tato Veřejná licence platí po dobu trvání autorských práv a podobných práv licencovaných zde. Pokud však nedodržíte tuto Veřejnou licenci, vaše práva podle této Veřejné licence se automaticky ukončí. + +b. Pokud vaše právo používat Licencovaný materiál bylo ukončeno podle oddílu 6(a), obnoví se: + +1. automaticky ke dni, kdy je porušení napraveno, za předpokladu, že je napraveno do 30 dnů od vašeho zjištění porušení; nebo +2. na základě výslovného obnovení ze strany Licencora. + +Pro vyloučení pochybností, tento oddíl 6(b) nemá vliv na jakékoli právo Licencora domáhat se nápravy za vaše porušení této Veřejné licence. + +c. Pro vyloučení pochybností, Licencor může také nabízet Licencovaný materiál za jiných podmínek nebo přestat distribuovat Licencovaný materiál kdykoli; to však neukončí tuto Veřejnou licenci. + +d. Oddíly 1, 5, 6, 7 a 8 zůstávají v platnosti i po ukončení této Veřejné licence. + +### Oddíl 7 – Další podmínky. + +a. Licencor není vázán žádnými dodatečnými nebo odlišnými podmínkami, které mu sdělíte, pokud s nimi výslovně nesouhlasí. + +b. Jakákoli ujednání, dohody nebo smlouvy týkající se Licencovaného materiálu, které nejsou uvedeny zde, jsou oddělené a nezávislé na podmínkách této Veřejné licence. + +### Oddíl 8 – Výklad. + +a. Pro vyloučení pochybností, tato Veřejná licence nesnižuje, neomezuje, nezavádí podmínky ani neukládá omezení na jakékoli použití Licencovaného materiálu, které by bylo zákonné bez povolení podle této Veřejné licence. + +b. Pokud je to možné, pokud bude jakékoli ustanovení této Veřejné licence považováno za nevynutitelné, bude automaticky upraveno na minimální rozsah nezbytný k jeho vynutitelnosti. Pokud nelze ustanovení upravit, bude odděleno od této Veřejné licence, aniž by to ovlivnilo vynutitelnost zbývajících podmínek. + +c. Žádné ustanovení této Veřejné licence nebude zrušeno a žádné nedodržení nebude schváleno, pokud s tím výslovně nesouhlasí Licencor. + +d. Nic v této Veřejné licenci nepředstavuje ani nesmí být vykládáno jako omezení nebo zřeknutí se jakýchkoli výsad a imunit, které se vztahují na Licencora nebo na vás, včetně právních procesů jakékoli jurisdikce nebo autority. + +--- + +Creative Commons není stranou svých veřejných licencí. Nicméně Creative Commons může zvolit použití jedné ze svých veřejných licencí na materiál, který publikuje, a v těchto případech bude považován za „Licencora“. Text veřejných licencí Creative Commons je věnován veřejné doméně podle CC0 Public Domain Dedication. S výjimkou omezeného účelu označení, že materiál je sdílen pod veřejnou licencí Creative Commons, nebo jak je jinak povoleno zásadami Creative Commons zveřejněnými na creativecommons.org/policies, Creative Commons neautorizuje použití ochranné známky „Creative Commons“ nebo jakékoli jiné ochranné známky či loga Creative Commons bez předchozího písemného souhlasu, včetně, bez omezení, v souvislosti s jakýmikoli neoprávněnými úpravami jakékoli z jejích veřejných licencí nebo jakýchkoli jiných ujednání, dohod nebo smluv týkajících se použití licencovaného materiálu. Pro vyloučení pochybností, tento odstavec není součástí veřejných licencí. + +Creative Commons lze kontaktovat na creativecommons.org. + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/cs/lessons/sketchnotes/README.md b/translations/cs/lessons/sketchnotes/README.md new file mode 100644 index 00000000..54d536f5 --- /dev/null +++ b/translations/cs/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Všechny sketchnoty k učebním osnovám si můžete stáhnout zde. + +🎨 Vytvořila: 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/) + +**Prohlášení:** +Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu. \ No newline at end of file diff --git a/translations/hr/README.md b/translations/hr/README.md new file mode 100644 index 00000000..ba3f2b04 --- /dev/null +++ b/translations/hr/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) + +# Umjetna inteligencija za početnike - Kurikulum + +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI za početnike - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Istražite svijet **umjetne inteligencije** (AI) uz naš 12-tjedni kurikulum od 24 lekcije! Uključuje praktične lekcije, kvizove i laboratorijske vježbe. Kurikulum je prilagođen početnicima i pokriva alate poput TensorFlow-a i PyTorch-a, kao i etiku u AI. + +## Što ćete naučiti + +**[Mindmap tečaja](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +U ovom kurikulumu naučit ćete: + +* Različite pristupe umjetnoj inteligenciji, uključujući "dobri stari" simbolički pristup s **predstavljanjem znanja** i zaključivanjem ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neuralne mreže** i **duboko učenje**, koji su srž moderne AI. Ilustrirat ćemo koncepte iza ovih važnih tema koristeći kod u dva najpopularnija okvira - [TensorFlow](http://Tensorflow.org) i [PyTorch](http://pytorch.org). +* **Neuralne arhitekture** za rad s slikama i tekstom. Pokrit ćemo novije modele, ali možda nećemo obuhvatiti najnovije dostignuće. +* Manje popularne AI pristupe, poput **genetskih algoritama** i **sustava s više agenata**. + +Što nećemo pokriti u ovom kurikulumu: + +> [Pronađite sve dodatne resurse za ovaj tečaj u našoj Microsoft Learn kolekciji](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Poslovne slučajeve korištenja **AI u poslovanju**. Razmislite o pohađanju [Uvod u AI za poslovne korisnike](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn, ili [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), razvijen u suradnji s [INSEAD](https://www.insead.edu/). +* **Klasično strojno učenje**, koje je dobro opisano u našem [Kurikulumu za strojno učenje za početnike](http://github.com/Microsoft/ML-for-Beginners). +* Praktične AI aplikacije izgrađene koristeći **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Za ovo preporučujemo da započnete s modulima Microsoft Learn za [viziju](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [obradu prirodnog jezika](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generativni AI s Azure OpenAI uslugom](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** i druge. +* Specifične ML **Cloud Frameworks**, poput [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), ili [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Razmislite o korištenju [Izgradnja i upravljanje rješenjima za strojno učenje s Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) i [Izgradnja i upravljanje rješenjima za strojno učenje s Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) kurikuluma. +* **Konverzacijski AI** i **Chat Botovi**. Postoji zaseban [Izradite rješenja za konverzacijski AI](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) kurikulum, a možete se također referirati na [ovaj blog post](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) za više detalja. +* **Duboka matematika** iza dubokog učenja. Za ovo bismo preporučili [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) od Iana Goodfellowa, Yoshue Bengioa i Aarona Courvillea, koja je također dostupna online na [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Za blagi uvod u _AI u oblaku_ teme, razmislite o pohađanju [Započnite s umjetnom inteligencijom na Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) kurikuluma. + +# Sadržaj + +| | Poveznica lekcije | PyTorch/Keras/TensorFlow | Laboratorij | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Postavljanje tečaja](./lessons/0-course-setup/setup.md) | [Postavite svoje razvojno okruženje](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Uvod u AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Uvod i povijest AI](./lessons/1-Intro/README.md) | - | - | +| II | **Simbolički AI** | +| 02 | [Predstavljanje znanja i ekspertni sustavi](./lessons/2-Symbolic/README.md) | [Ekspertni sustavi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologija](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Konceptualni graf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Uvod u neuralne mreže**](./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) | [Laboratorij](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Višeslojni perceptron i stvaranje vlastitog okvira](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratorij](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Uvod u okvire (PyTorch/TensorFlow) i prekomjerno prilagođavanje](./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) | [Laboratorij](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Računalni vid**](./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)| [Istražite računalni vid na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Uvod u računalni vid. 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) | [Laboratorij](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolucijske neuralne mreže](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Arhitekture](./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) | [Laboratorij](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Unaprijed trenirane mreže i prijenosno učenje](./lessons/4-ComputerVision/08-TransferLearning/README.md) i [Trikovi za treniranje](./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) | [Laboratorij](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoenkoderi i 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 | [Generativne suparničke mreže i prijenos umjetničkog stila](./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 | [Detekcija objekata](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratorij](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantička segmentacija. 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 | [**Obrada prirodnog jezika**](./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) | [Istražite obradu prirodnog jezika na Microsoft Azureu](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Reprezentacija teksta. 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 | [Semantičke ugrađene riječi. Word2Vec i 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 | [Modeliranje jezika. Treniranje vlastitih ugrađenih riječi](./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) | [Laboratorij](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rekurentne neuronske mreže](./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 | [Generativne rekurentne mreže](./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) | [Laboratorij](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformeri. 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 | [Prepoznavanje imenovanih entiteta](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorij](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Veliki jezični modeli, programski upiti i zadaci s malo primjera](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Ostale AI tehnike** || | +| 21 | [Genetski algoritmi](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Bilježnica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Duboko pojačano učenje](./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) | [Laboratorij](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sustavi s više agenata](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etika umjetne inteligencije** | | | +| 24 | [Etika umjetne inteligencije i odgovorna AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Načela odgovorne AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Dodaci** | | | +| 25 | [Višestruke modalne mreže, CLIP i VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Bilježnica](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Svaka lekcija sadrži + +* Materijale za prethodno čitanje +* Izvršne Jupyter bilježnice, koje su često specifične za okvir (**PyTorch** ili **TensorFlow**). Izvršna bilježnica također sadrži mnogo teorijskog materijala, pa je za razumijevanje teme potrebno proći barem jednu verziju bilježnice (bilo PyTorch ili TensorFlow). +* **Laboratorije** dostupne za neke teme, koji vam pružaju priliku da primijenite naučeno na specifičan problem. +* Neki odjeljci sadrže poveznice na module [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) koji pokrivaju srodne teme. + +## Početak + +- Kreirali smo [lekciju za postavljanje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) kako bismo vam pomogli u postavljanju vašeg razvojnog okruženja. - Za edukatore, kreirali smo i [lekciju za postavljanje kurikuluma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Kako [pokrenuti kod u VSCode ili Codepaceu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Slijedite ove korake: + +Forkajte repozitorij: Kliknite na gumb "Fork" u gornjem desnom kutu ove stranice. + +Klonirajte repozitorij: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Ne zaboravite označiti (🌟) ovaj repozitorij kako biste ga kasnije lakše pronašli. + +## Upoznajte druge polaznike + +Pridružite se našem [službenom AI Discord serveru](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) kako biste upoznali i povezali se s drugim polaznicima ovog tečaja i dobili podršku. + +Ako imate povratne informacije o proizvodu ili pitanja tijekom izrade, posjetite naš [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) + +## Kvizovi +> **Napomena o kvizovima**: Svi kvizovi nalaze se u mapi Quiz-app u etc\quiz-app. Povezani su unutar lekcija, a aplikacija za kviz može se pokrenuti lokalno ili implementirati na Azure; slijedite upute u mapi `quiz-app`. Postupno se lokaliziraju. +## Traži se pomoć + +Imate li prijedloge ili ste pronašli pravopisne ili programske pogreške? Otvorite problem ili kreirajte pull request. + +## Posebne zahvale + +* **✍️ Glavni autor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Urednica:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrator sketchnote-a:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Kreator kvizova:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Glavni suradnici:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Ostali kurikulumi + +Naš tim proizvodi i druge kurikulume! Pogledajte: + +- [Generativna AI za početnike](https://aka.ms/genai-beginners) +- [Generativna AI za početnike .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generativna AI s JavaScriptom](https://github.com/microsoft/generative-ai-with-javascript) +- [Generativna AI s Javom](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI za početnike](https://aka.ms/ai-beginners) +- [Data Science za početnike](https://aka.ms/datascience-beginners) +- [ML za početnike](https://aka.ms/ml-beginners) +- [Kibernetička sigurnost za početnike](https://github.com/microsoft/Security-101) +- [Web razvoj za početnike](https://aka.ms/webdev-beginners) +- [IoT za početnike](https://aka.ms/iot-beginners) +- [XR razvoj za početnike](https://github.com/microsoft/xr-development-for-beginners) +- [Ovladavanje GitHub Copilotom za agentičku upotrebu](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Ovladavanje GitHub Copilotom za C#/.NET programere](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Odaberi svoju Copilot avanturu](https://github.com/microsoft/CopilotAdventures) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/SECURITY.md b/translations/hr/SECURITY.md new file mode 100644 index 00000000..0689e358 --- /dev/null +++ b/translations/hr/SECURITY.md @@ -0,0 +1,49 @@ + +## Sigurnost + +Microsoft ozbiljno pristupa sigurnosti svojih softverskih proizvoda i usluga, uključujući sve repozitorije izvornog koda kojima upravljamo putem naših GitHub organizacija, kao što su [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) i [naše GitHub organizacije](https://opensource.microsoft.com/). + +Ako smatrate da ste pronašli sigurnosni propust u bilo kojem repozitoriju u vlasništvu Microsofta koji odgovara [Microsoftovoj definiciji sigurnosnog propusta](https://aka.ms/opensource/security/definition), molimo vas da nam ga prijavite na način opisan u nastavku. + +## Prijava sigurnosnih problema + +**Molimo vas da ne prijavljujete sigurnosne propuste putem javnih GitHub problema.** + +Umjesto toga, prijavite ih Microsoftovom centru za sigurnosne odgovore (MSRC) na [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Ako preferirate prijavu bez prijave na sustav, pošaljite e-mail na [secure@microsoft.com](mailto:secure@microsoft.com). Ako je moguće, šifrirajte svoju poruku našim PGP ključem; preuzmite ga sa stranice [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Trebali biste dobiti odgovor unutar 24 sata. Ako iz nekog razloga ne dobijete odgovor, molimo vas da nas kontaktirate putem e-maila kako biste osigurali da smo primili vašu originalnu poruku. Dodatne informacije možete pronaći na [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Molimo vas da uključite tražene informacije navedene u nastavku (koliko god možete pružiti) kako biste nam pomogli bolje razumjeti prirodu i opseg mogućeg problema: + + * Vrsta problema (npr. buffer overflow, SQL injekcija, cross-site scripting, itd.) + * Puni putovi izvornog koda povezanog s manifestacijom problema + * Lokacija pogođenog izvornog koda (oznaka/grana/commit ili direktni URL) + * Bilo koja posebna konfiguracija potrebna za reprodukciju problema + * Korak-po-korak upute za reprodukciju problema + * Proof-of-concept ili exploit kod (ako je moguće) + * Utjecaj problema, uključujući kako napadač može iskoristiti problem + +Ove informacije pomoći će nam da brže obradimo vaš izvještaj. + +Ako prijavljujete za program nagrađivanja grešaka, detaljniji izvještaji mogu doprinijeti većoj nagradi. Posjetite našu stranicu [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) za više detalja o našim aktivnim programima. + +## Preferirani jezici + +Preferiramo da sva komunikacija bude na engleskom jeziku. + +## Politika + +Microsoft slijedi načelo [Koordiniranog otkrivanja ranjivosti](https://aka.ms/opensource/security/cvd). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/CODE_OF_CONDUCT.md b/translations/hr/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..7e342161 --- /dev/null +++ b/translations/hr/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoftov Kodeks ponašanja za otvoreni izvor + +Ovaj projekt je usvojio [Microsoftov Kodeks ponašanja za otvoreni izvor](https://opensource.microsoft.com/codeofconduct/). + +Resursi: + +- [Microsoftov Kodeks ponašanja za otvoreni izvor](https://opensource.microsoft.com/codeofconduct/) +- [Microsoftov FAQ o Kodeksu ponašanja](https://opensource.microsoft.com/codeofconduct/faq/) +- Kontaktirajte [opencode@microsoft.com](mailto:opencode@microsoft.com) za pitanja ili zabrinutosti + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/CONTRIBUTING.md b/translations/hr/etc/CONTRIBUTING.md new file mode 100644 index 00000000..5b650c48 --- /dev/null +++ b/translations/hr/etc/CONTRIBUTING.md @@ -0,0 +1,31 @@ + +# Doprinose + +Ovaj projekt pozdravlja doprinose i prijedloge. Većina doprinosa zahtijeva da se složite s Ugovorom o licenci za suradnike (CLA) kojim izjavljujete da imate pravo, i da zaista dajete, prava za korištenje vašeg doprinosa. Za detalje posjetite https://cla.microsoft.com. + +Kada pošaljete pull request, CLA-bot će automatski odrediti trebate li dostaviti CLA i odgovarajuće označiti PR (npr. oznakom, komentarom). Jednostavno slijedite upute koje vam bot pruži. Ovo ćete trebati učiniti samo jednom za sve repozitorije koji koriste naš CLA. + +Ovaj projekt je usvojio [Microsoftov Kodeks ponašanja za otvoreni izvor](https://opensource.microsoft.com/codeofconduct/). +Za više informacija pogledajte [Česta pitanja o Kodeksu ponašanja](https://opensource.microsoft.com/codeofconduct/faq/) +ili kontaktirajte [opencode@microsoft.com](mailto:opencode@microsoft.com) za dodatna pitanja ili komentare. + +# Tražimo doprinose + +Trenutno aktivno tražimo doprinose na sljedećim temama: + +- [ ] Napisati odjeljak o dubokom pojačanom učenju (Deep Reinforcement Learning) +- [ ] Poboljšati odjeljak + bilježnicu o prepoznavanju objekata (Object Detection) +- [ ] PyTorch Lightning (za [ovaj odjeljak](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Napisati odjeljak + primjere o prepoznavanju imenovanih entiteta (Named Entity Recognition) +- [ ] Kreirati primjere za treniranje vlastitih ugrađivanja (embeddings) za [ovaj odjeljak](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/Mindmap.md b/translations/hr/etc/Mindmap.md new file mode 100644 index 00000000..fec8ca12 --- /dev/null +++ b/translations/hr/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# AI + +## [Uvod u AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definicija AI-a + - Povijest AI-a + - Pristupi AI-u + - Top-down/Simbolički + - Bottom-up/Neuronski + - Evolucijski + - Sinergijski / Emergentni AI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Simbolički AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Predstavljanje znanja + - [Ekspertni sustavi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologije](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Semantički web + +## [Neuronske mreže](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) + - [Višeslojne mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Uvod u okvire](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) + - [Prenaučenost](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Računalni vid](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Na MS Learn + - [Osnove AI-a: Istražite računalni vid](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Računalni vid s PyTorchom](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Računalni vid s TensorFlowom](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Uvod u računalni vid. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvolucijske mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arhitekture CNN-a](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transfer učenje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trikovi za treniranje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoenkoderi i VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generativne suparničke mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Prijenos stila](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detekcija objekata](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentacija](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Obrada prirodnog jezika](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Na MS Learn + - [Osnove AI-a: Istražite NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP s PyTorchom](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP s TensorFlowom](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Predstavljanje teksta](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Semantičke ugrađenosti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modeliranje jezika](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurzivne neuronske mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generativne rekurzivne mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformeri i BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Prepoznavanje imenovanih entiteta](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generiranje teksta i GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Ostale tehnike + - [Genetski algoritmi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Duboko pojačano učenje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sustavi s više agenata](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etika AI-a](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn o odgovornom AI-u](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Dodaci + - [Multimodalne mreže](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 + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za nesporazume ili pogrešne interpretacije koje mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/SUPPORT.md b/translations/hr/etc/SUPPORT.md new file mode 100644 index 00000000..2cd3a1d2 --- /dev/null +++ b/translations/hr/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Podrška + +## Kako prijaviti probleme i dobiti pomoć + +Ovaj projekt koristi GitHub Issues za praćenje grešaka i zahtjeva za značajkama. Prije nego što prijavite novi problem, pretražite postojeće probleme kako biste izbjegli dupliciranje. Za nove probleme, prijavite svoju grešku ili zahtjev za značajkom kao novi problem. + +Za pomoć i pitanja o korištenju ovog projekta, koristite ploče za raspravu. + +## Microsoftova politika podrške + +Podrška za ovaj projekt ograničena je na gore navedene resurse. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/TRANSLATIONS.md b/translations/hr/etc/TRANSLATIONS.md new file mode 100644 index 00000000..e250ebae --- /dev/null +++ b/translations/hr/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Sudjelujte u prevođenju lekcija + +Pozivamo vas da sudjelujete u prevođenju lekcija iz ovog kurikuluma! + +## Smjernice + +U svakom folderu lekcija i folderu uvoda u lekcije nalaze se prevedene markdown datoteke. + +> Napomena, molimo vas da ne prevodite kod u datotekama s uzorcima koda; jedino što treba prevesti su README, zadaci i kvizovi. Hvala! + +Prevedene datoteke trebaju slijediti ovu konvenciju imenovanja: + +**README._[jezik]_.md** + +gdje _[jezik]_ predstavlja dvoslovnu oznaku jezika prema ISO 639-1 standardu (npr. `README.es.md` za španjolski i `README.nl.md` za nizozemski). + +**assignment._[jezik]_.md** + +Slično kao i README datoteke, molimo vas da prevedete i zadatke. + +**Kvizovi** + +1. Dodajte svoj prijevod u aplikaciju za kviz dodavanjem datoteke ovdje: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, koristeći odgovarajuću konvenciju imenovanja (en.json, fr.json). **Molimo vas da ne lokalizirate riječi 'true' ili 'false'. Hvala!** + +2. Dodajte kod svog jezika u padajući izbornik u datoteci App.vue aplikacije za kviz. + +3. Uredite [index.js datoteku prijevoda](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) aplikacije za kviz kako biste dodali svoj jezik. + +4. Na kraju, uredite SVE poveznice za kviz u svojim prevedenim README.md datotekama kako bi direktno upućivale na vaš prevedeni kviz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 postaje https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**HVALA** + +Iskreno cijenimo vaš trud! + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/etc/quiz-app/README.md b/translations/hr/etc/quiz-app/README.md new file mode 100644 index 00000000..fbf4ef20 --- /dev/null +++ b/translations/hr/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# Kvizovi + +Ovi kvizovi su uvodni i završni kvizovi za AI kurikulum na https://aka.ms/ai-beginners + +## Dodavanje prevedenog seta kvizova + +Dodajte prijevod kviza tako da kreirate odgovarajuće strukture kvizova u mapama `assets/translations`. Izvorni kvizovi nalaze se u `assets/translations/en`. Kvizovi su podijeljeni u nekoliko grupa prema lekcijama. Pobrinite se da uskladite numeraciju s odgovarajućim dijelom kviza. Ukupno postoji 40 kvizova u ovom kurikulumu, a brojenje počinje od 0. + +Nakon uređivanja prijevoda, uredite datoteku index.js u mapi za prijevod kako biste uvezli sve datoteke prema konvencijama u `en`. + +Uredite datoteku `index.js` u `assets/translations` kako biste uvezli nove prevedene datoteke. + +Zatim uredite padajući izbornik u `App.vue` u ovoj aplikaciji kako biste dodali svoj jezik. Uskladite lokaliziranu skraćenicu s nazivom mape za vaš jezik. + +Na kraju, uredite sve poveznice kvizova u prevedenim lekcijama, ako postoje, kako biste uključili ovu lokalizaciju kao parametar upita: `?loc=fr`, na primjer. + +## Postavljanje projekta + +``` +npm install +``` + +### Kompajlira i automatski ponovno učitava za razvoj + +``` +npm run serve +``` + +### Kompajlira i minimizira za produkciju + +``` +npm run build +``` + +### Provjerava i popravlja datoteke + +``` +npm run lint +``` + +### Prilagodba konfiguracije + +Pogledajte [Referencu konfiguracije](https://cli.vuejs.org/config/). + +Zasluge: Zahvala originalnoj verziji ove aplikacije za kvizove: https://github.com/arpan45/simple-quiz-vue + +## Postavljanje na Azure + +Evo korak-po-korak vodiča koji će vam pomoći da započnete: + +1. Forkajte GitHub repozitorij +Osigurajte da je kod vaše statične web aplikacije u vašem GitHub repozitoriju. Forkajte ovaj repozitorij. + +2. Kreirajte Azure Static Web App +- Kreirajte [Azure račun](http://azure.microsoft.com) +- Idite na [Azure portal](https://portal.azure.com) +- Kliknite na “Create a resource” i potražite “Static Web App”. +- Kliknite “Create”. + +3. Konfigurirajte Static Web App +- Osnovno: Pretplata: Odaberite svoju Azure pretplatu. +- Resource Group: Kreirajte novu grupu resursa ili koristite postojeću. +- Naziv: Dodijelite naziv svojoj statičnoj web aplikaciji. +- Regija: Odaberite regiju najbližu vašim korisnicima. + +- #### Detalji implementacije: +- Izvor: Odaberite “GitHub”. +- GitHub račun: Autorizirajte Azure za pristup vašem GitHub računu. +- Organizacija: Odaberite svoju GitHub organizaciju. +- Repozitorij: Odaberite repozitorij koji sadrži vašu statičnu web aplikaciju. +- Grana: Odaberite granu iz koje želite implementirati. + +- #### Detalji izgradnje: +- Presets za izgradnju: Odaberite okvir na kojem je vaša aplikacija izgrađena (npr. React, Angular, Vue, itd.). +- Lokacija aplikacije: Navedite mapu koja sadrži kod vaše aplikacije (npr. / ako je u korijenu). +- Lokacija API-ja: Ako imate API, navedite njegovu lokaciju (opcionalno). +- Lokacija izlaza: Navedite mapu u kojoj se generira izlaz izgradnje (npr. build ili dist). + +4. Pregled i kreiranje +Pregledajte svoje postavke i kliknite “Create”. Azure će postaviti potrebne resurse i kreirati GitHub Actions workflow u vašem repozitoriju. + +5. GitHub Actions Workflow +Azure će automatski kreirati GitHub Actions workflow datoteku u vašem repozitoriju (.github/workflows/azure-static-web-apps-.yml). Ovaj workflow će upravljati procesom izgradnje i implementacije. + +6. Praćenje implementacije +Idite na karticu “Actions” u vašem GitHub repozitoriju. +Trebali biste vidjeti workflow koji se pokreće. Ovaj workflow će izgraditi i implementirati vašu statičnu web aplikaciju na Azure. +Nakon što workflow završi, vaša aplikacija će biti dostupna na dodijeljenom Azure URL-u. + +### Primjer datoteke workflowa + +Evo primjera kako bi GitHub Actions workflow datoteka mogla izgledati: +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 +``` + +### Dodatni resursi +- [Dokumentacija za Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentacija za GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/0-course-setup/for-teachers.md b/translations/hr/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..b10ed581 --- /dev/null +++ b/translations/hr/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Za edukatore + +Želite li koristiti ovaj kurikulum u svojoj učionici? Slobodno ga koristite! + +Zapravo, možete ga koristiti direktno na GitHubu koristeći GitHub Classroom. + +Da biste to učinili, forkajte ovaj repozitorij. Trebat ćete kreirati repozitorij za svaku lekciju, pa ćete morati izdvojiti svaku mapu u zaseban repozitorij. Na taj način, [GitHub Classroom](https://classroom.github.com/classrooms) može prepoznati svaku lekciju zasebno. + +Ove [detaljne upute](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) pružit će vam ideju kako postaviti svoju učionicu. + +## Korištenje repozitorija u trenutnom obliku + +Ako želite koristiti ovaj repozitorij u njegovom trenutnom obliku, bez korištenja GitHub Classrooma, i to je moguće. Trebat ćete komunicirati sa svojim učenicima o tome koju lekciju zajedno obraditi. + +U online formatu (Zoom, Teams ili drugi) možete organizirati breakout sobe za kvizove i mentorirati učenike kako bi se pripremili za učenje. Zatim pozovite učenike da sudjeluju u kvizovima i predaju svoje odgovore kao 'issues' u određeno vrijeme. Isto možete učiniti i sa zadacima, ako želite da učenici surađuju javno. + +Ako preferirate privatniji format, zamolite učenike da forkaju kurikulum, lekciju po lekciju, u svoje vlastite privatne GitHub repozitorije i daju vam pristup. Tada mogu privatno rješavati kvizove i zadatke te ih predati vama putem 'issues' na vašem repozitoriju za učionicu. + +Postoji mnogo načina kako ovo može funkcionirati u online učionici. Javite nam što vam najbolje odgovara! + +## Podijelite svoje mišljenje s nama + +Želimo da ovaj kurikulum bude koristan za vas i vaše učenike. Molimo vas da nam ostavite povratne informacije na forumima za raspravu! + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/0-course-setup/how-to-run.md b/translations/hr/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..5b78adf6 --- /dev/null +++ b/translations/hr/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Kako pokrenuti kod + +Ovaj kurikulum sadrži mnogo primjera i laboratorijskih vježbi koje možete pokrenuti. Da biste to učinili, trebate mogućnost izvršavanja Python koda u Jupyter Notebooks koji su dio ovog kurikuluma. Postoji nekoliko opcija za pokretanje koda: + +## Pokretanje lokalno na vašem računalu + +Za pokretanje koda lokalno na vašem računalu, trebate imati instaliranu neku verziju Pythona. Osobno preporučujem instalaciju **[miniconda](https://conda.io/en/latest/miniconda.html)** - to je prilično lagana instalacija koja podržava `conda` upravitelj paketa za različita Python **virtualna okruženja**. + +Nakon što instalirate miniconda, trebate klonirati repozitorij i stvoriti virtualno okruženje koje će se koristiti za ovaj tečaj: + +```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 +``` + +### Korištenje Visual Studio Code-a s Python ekstenzijom + +Vjerojatno najbolji način za korištenje kurikuluma je otvaranje u [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) s [Python ekstenzijom](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Napomena**: Kada klonirate i otvorite direktorij u VS Code-u, automatski će vam se predložiti instalacija Python ekstenzija. Također ćete morati instalirati miniconda kako je gore opisano. + +> **Napomena**: Ako vam VS Code predloži ponovno otvaranje repozitorija u kontejneru, trebate to odbiti kako biste koristili lokalnu Python instalaciju. + +### Korištenje Jupytera u pregledniku + +Također možete koristiti Jupyter okruženje izravno iz preglednika na vašem računalu. Zapravo, i klasični Jupyter i Jupyter Hub pružaju prilično praktično razvojno okruženje s automatskim dovršavanjem, isticanjem koda itd. + +Za pokretanje Jupytera lokalno, idite u direktorij tečaja i izvršite: + +```bash +jupyter notebook +``` +ili +```bash +jupyterhub +``` +Zatim možete navigirati do bilo koje `.ipynb` datoteke, otvoriti je i početi raditi. + +### Pokretanje u kontejneru + +Jedna alternativa Python instalaciji je pokretanje koda u kontejneru. Budući da naš repozitorij sadrži posebnu `.devcontainer` mapu koja daje upute za izgradnju kontejnera za ovaj repozitorij, VS Code će vam ponuditi ponovno otvaranje koda u kontejneru. Ovo će zahtijevati instalaciju Dockera, a također će biti složenije, pa ovo preporučujemo iskusnijim korisnicima. + +## Pokretanje u oblaku + +Ako ne želite instalirati Python lokalno i imate pristup nekim resursima u oblaku, dobra alternativa je pokretanje koda u oblaku. Postoji nekoliko načina kako to možete učiniti: + +* Korištenje **[GitHub Codespaces](https://github.com/features/codespaces)**, što je virtualno okruženje stvoreno za vas na GitHubu, dostupno putem VS Code sučelja u pregledniku. Ako imate pristup Codespaces, možete jednostavno kliknuti gumb **Code** u repozitoriju, pokrenuti Codespace i započeti rad u trenu. +* Korištenje **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) pruža besplatne računalne resurse u oblaku za ljude poput vas kako bi isprobali neki kod na GitHubu. Na početnoj stranici postoji gumb za otvaranje repozitorija u Binderu - ovo bi vas brzo trebalo odvesti na Binder stranicu, koja će izgraditi temeljni kontejner i besprijekorno pokrenuti Jupyter web sučelje. + +> **Napomena**: Kako bi se spriječila zloupotreba, Binder ima ograničen pristup nekim web resursima. Ovo može spriječiti rad nekog koda koji preuzima modele i/ili skupove podataka s javnog interneta. Možda ćete morati pronaći neka zaobilazna rješenja. Također, računalni resursi koje pruža Binder su prilično osnovni, pa će treniranje biti sporo, posebno u kasnijim, složenijim lekcijama. + +## Pokretanje u oblaku s GPU-om + +Neke od kasnijih lekcija u ovom kurikulumu značajno bi koristile podršku za GPU, jer bi inače treniranje bilo bolno sporo. Postoji nekoliko opcija koje možete slijediti, posebno ako imate pristup oblaku putem [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) ili putem vaše institucije: + +* Stvorite [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) i povežite se s njom putem Jupytera. Zatim možete klonirati repozitorij izravno na stroj i započeti učenje. NC-serija VM-ova ima podršku za GPU. + +> **Napomena**: Neke pretplate, uključujući Azure for Students, ne pružaju GPU podršku odmah. Možda ćete morati zatražiti dodatne GPU jezgre putem zahtjeva za tehničku podršku. + +* Stvorite [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) i zatim koristite značajku Notebook tamo. [Ovaj video](https://azure-for-academics.github.io/quickstart/azureml-papers/) pokazuje kako klonirati repozitorij u Azure ML notebook i početi ga koristiti. + +Također možete koristiti Google Colab, koji dolazi s određenom besplatnom GPU podrškom, i tamo učitati Jupyter Notebooks kako biste ih izvršavali jedan po jedan. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/0-course-setup/setup.md b/translations/hr/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..9a507170 --- /dev/null +++ b/translations/hr/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Početak rada s ovim kurikulumom + +## Jeste li student? + +Započnite s ovim resursima: + +* [Stranica za studente](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Na ovoj stranici pronaći ćete resurse za početnike, studentske pakete, pa čak i načine kako dobiti besplatni certifikat. Ovo je stranica koju biste trebali spremiti u oznake i povremeno provjeravati jer sadržaj mijenjamo barem jednom mjesečno. +* [Microsoft Student Learn ambasadori](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Pridružite se globalnoj zajednici studentskih ambasadora, ovo bi mogao biti vaš put prema Microsoftu. + +**Studenti**, postoji nekoliko načina kako koristiti ovaj kurikulum. Prvo, možete jednostavno čitati tekst i pregledavati kod izravno na GitHubu. Ako želite pokrenuti kod u bilo kojem od bilježnica - [pročitajte naše upute](./etc/how-to-run.md) i pronađite dodatne savjete o tome kako to učiniti [u ovom blog postu](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Napomena**: [Upute za pokretanje koda u ovom kurikulumu](./how-to-run.md) + +## Samostalno učenje + +Međutim, ako želite pohađati tečaj kao projekt za samostalno učenje, predlažemo da forkate cijeli repozitorij na svoj GitHub račun i sami ili u grupi riješite zadatke: + +* Započnite s kvizom prije predavanja. +* Pročitajte uvodni tekst za predavanje. +* Ako predavanje ima dodatne bilježnice, prođite kroz njih, čitajući i izvršavajući kod. Ako su dostupne bilježnice za TensorFlow i PyTorch, možete se fokusirati na jednu od njih - odaberite omiljeni okvir. +* Bilježnice često sadrže izazove koji zahtijevaju da malo prilagodite kod kako biste eksperimentirali. +* Riješite kviz nakon predavanja. +* Ako je laboratorijska vježba priložena modulu - dovršite zadatak. +* Posjetite [ploču za raspravu](https://github.com/microsoft/AI-For-Beginners/discussions) kako biste "učili naglas". + +> Za daljnje učenje preporučujemo praćenje ovih [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) modula i staza za učenje. + +**Nastavnici**, [uključili smo neke prijedloge](/for-teachers.md) o tome kako koristiti ovaj kurikulum. + +--- + +## Pedagogija + +Odabrali smo dva pedagoška načela prilikom izrade ovog kurikuluma: osigurati da je praktičan **temeljen na projektima** i da uključuje **česte kvizove**. + +Osiguravanjem da je sadržaj usklađen s projektima, proces postaje zanimljiviji za studente, a zadržavanje koncepata se povećava. Osim toga, kviz s niskim ulogom prije predavanja usmjerava studenta prema učenju teme, dok drugi kviz nakon predavanja osigurava dodatno zadržavanje. Ovaj kurikulum je osmišljen tako da bude fleksibilan i zabavan te se može pohađati u cijelosti ili djelomično. Projekti započinju jednostavno i postaju sve složeniji do kraja 12-tjednog ciklusa. + +> **Napomena o kvizovima**: Svi kvizovi nalaze se [u ovoj aplikaciji](https://red-field-0a6ddfd03.1.azurestaticapps.net/), ukupno 50 kvizova s po tri pitanja. Povezani su unutar lekcija, ali aplikacija za kvizove može se pokrenuti lokalno; slijedite upute u mapi `etc/quiz-app`. + +## Pristup izvan mreže + +Ovu dokumentaciju možete koristiti izvan mreže pomoću [Docsify](https://docsify.js.org/#/). Forkajte ovaj repozitorij, [instalirajte Docsify](https://docsify.js.org/#/quickstart) na svoj lokalni uređaj, a zatim u korijenskoj mapi ovog repozitorija upišite `docsify serve`. Web stranica će biti poslužena na portu 3000 na vašem lokalnom računalu: `localhost:3000`. PDF verzija kurikuluma dostupna je [na ovom linku](../../../../../../../../../etc/pdf/readme.pdf). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/1-Intro/README.md b/translations/hr/lessons/1-Intro/README.md new file mode 100644 index 00000000..0364173d --- /dev/null +++ b/translations/hr/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Slika autora [Dmitry Soshnikov](http://soshnikov.com) + +S vremenom su računalni resursi postali jeftiniji, a dostupno je i više podataka, pa su pristupi temeljenim na neuronskim mrežama počeli pokazivati izvrsne rezultate u natjecanju s ljudima u mnogim područjima, poput računalnog vida ili razumijevanja govora. U posljednjem desetljeću, pojam Umjetna Inteligencija uglavnom se koristi kao sinonim za neuronske mreže, jer većina uspjeha AI-a o kojima čujemo temelji se na njima. + +Možemo promatrati kako su se pristupi mijenjali, primjerice, u stvaranju računalnog programa za igranje šaha: + +* Rani šahovski programi temeljili su se na pretraživanju – program je eksplicitno pokušavao procijeniti moguće poteze protivnika za određeni broj sljedećih poteza i odabrao optimalan potez na temelju najbolje pozicije koja se može postići u nekoliko poteza. To je dovelo do razvoja tzv. [alpha-beta rezanja](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) algoritma pretraživanja. +* Strategije pretraživanja dobro funkcioniraju prema kraju igre, gdje je prostor pretraživanja ograničen malim brojem mogućih poteza. Međutim, na početku igre prostor pretraživanja je ogroman, a algoritam se može poboljšati učenjem iz postojećih partija između ljudskih igrača. Kasniji eksperimenti koristili su tzv. [razmišljanje temeljeno na slučajevima](https://en.wikipedia.org/wiki/Case-based_reasoning), gdje je program tražio slučajeve u bazi znanja vrlo slične trenutnoj poziciji u igri. +* Moderni programi koji pobjeđuju ljudske igrače temelje se na neuronskim mrežama i [pojačanom učenju](https://en.wikipedia.org/wiki/Reinforcement_learning), gdje programi uče igrati isključivo igrajući dugo vremena sami protiv sebe i učeći iz vlastitih pogrešaka – slično kao što ljudi uče igrati šah. Međutim, računalni program može odigrati mnogo više partija u puno kraćem vremenu i tako učiti mnogo brže. + +✅ Istražite malo o drugim igrama koje su igrali AI sustavi. + +Slično tome, možemo vidjeti kako se pristup stvaranju "programa za razgovor" (koji bi mogli proći Turingov test) mijenjao: + +* Rani programi ove vrste, poput [Elize](https://en.wikipedia.org/wiki/ELIZA), temeljili su se na vrlo jednostavnim gramatičkim pravilima i preformulaciji ulazne rečenice u pitanje. +* Moderni asistenti, poput Cortane, Siri ili Google Assistanta, hibridni su sustavi koji koriste neuronske mreže za pretvaranje govora u tekst i prepoznavanje naše namjere, a zatim primjenjuju neko zaključivanje ili eksplicitne algoritme za izvršavanje potrebnih radnji. +* U budućnosti možemo očekivati potpuno neuronski model koji će samostalno upravljati dijalogom. Nedavne GPT i [Turing-NLG](https://turing.microsoft.com/) obitelji neuronskih mreža pokazuju veliki uspjeh u tome. + +> Slika Dmitry Soshnikov, [fotografija](https://unsplash.com/photos/r8LmVbUKgns) od [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Nedavna istraživanja o umjetnoj inteligenciji + +Ogroman rast istraživanja neuronskih mreža započeo je oko 2010. godine, kada su postali dostupni veliki javni skupovi podataka. Velika zbirka slika nazvana [ImageNet](https://en.wikipedia.org/wiki/ImageNet), koja sadrži oko 14 milijuna anotiranih slika, dala je povod za [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![ILSVRC Točnost](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Slika od [Dmitry Soshnikov](http://soshnikov.com) + +Godine 2012., [Konvolucijske neuronske mreže](../4-ComputerVision/07-ConvNets/README.md) prvi su put korištene u klasifikaciji slika, što je dovelo do značajnog smanjenja pogrešaka u klasifikaciji (s gotovo 30% na 16,4%). Godine 2015., ResNet arhitektura iz Microsoft Research [postigla je točnost na razini ljudske sposobnosti](https://doi.org/10.1109/ICCV.2015.123). + +Od tada, neuronske mreže pokazale su vrlo uspješno ponašanje u mnogim zadacima: + +--- + +Godina | Postignuta ljudska razina +-----|-------- +2015 | [Klasifikacija slika](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Prepoznavanje govora u razgovoru](https://arxiv.org/abs/1610.05256) +2018 | [Automatski strojni prijevod](https://arxiv.org/abs/1803.05567) (kineski na engleski) +2020 | [Opisivanje slika](https://arxiv.org/abs/2009.13682) + +Tijekom posljednjih nekoliko godina svjedočili smo velikim uspjesima s velikim jezičnim modelima, poput BERT-a i GPT-3. To se dogodilo uglavnom zbog činjenice da postoji mnogo općih tekstualnih podataka koji omogućuju treniranje modela za hvatanje strukture i značenja tekstova, njihovo pred-treniranje na općim zbirkama tekstova, a zatim specijalizaciju tih modela za specifičnije zadatke. Više ćemo naučiti o [Obradi prirodnog jezika](../5-NLP/README.md) kasnije u ovom tečaju. + +## 🚀 Izazov + +Provedite istraživanje na internetu kako biste utvrdili gdje se, prema vašem mišljenju, umjetna inteligencija najefikasnije koristi. Je li to u aplikaciji za mapiranje, nekoj usluzi za pretvaranje govora u tekst ili videoigri? Istražite kako je sustav izgrađen. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Pregled i samostalno učenje + +Pregledajte povijest umjetne inteligencije i strojnog učenja čitajući [ovu lekciju](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Uzmite jedan element iz sketchnote-a na vrhu te lekcije ili ove i istražite ga detaljnije kako biste razumjeli kulturni kontekst koji je utjecao na njegov razvoj. + +**Zadatak**: [Game Jam](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/1-Intro/assignment.md b/translations/hr/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..42985825 --- /dev/null +++ b/translations/hr/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Igre su područje koje je snažno pod utjecajem razvoja umjetne inteligencije (AI) i strojnog učenja (ML). U ovom zadatku napišite kratki rad o igri koja vam se sviđa, a koja je bila pod utjecajem evolucije AI-ja. Trebala bi biti dovoljno stara igra da je bila pod utjecajem nekoliko različitih računalnih sustava obrade. Dobar primjer su šah ili Go, ali također razmotrite videoigre poput Ponga ili Pac-Mana. Napišite esej koji raspravlja o prošlosti, sadašnjosti i AI budućnosti te igre. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/2-Symbolic/README.md b/translations/hr/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..bd32e50b --- /dev/null +++ b/translations/hr/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Reprezentacija znanja i ekspertni sustavi + +![Sažetak sadržaja o simboličkoj umjetnoj inteligenciji](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hr.png) + +> Sketchnote autorice [Tomomi Imura](https://twitter.com/girlie_mac) + +Potraga za umjetnom inteligencijom temelji se na traženju znanja kako bi se svijet razumio na način sličan ljudskom. Ali kako to postići? + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +U ranim danima razvoja umjetne inteligencije, popularan je bio pristup "odozgo prema dolje" za stvaranje inteligentnih sustava (o kojem smo govorili u prethodnoj lekciji). Ideja je bila izvući znanje od ljudi u oblik koji računalo može čitati, a zatim ga koristiti za automatsko rješavanje problema. Ovaj pristup temelji se na dva velika koncepta: + +* Reprezentacija znanja +* Zaključivanje + +## Reprezentacija znanja + +Jedan od važnih koncepata u simboličkoj umjetnoj inteligenciji je **znanje**. Važno je razlikovati znanje od *informacija* ili *podataka*. Na primjer, može se reći da knjige sadrže znanje jer ih možemo proučavati i postati stručnjaci. Međutim, ono što knjige zapravo sadrže naziva se *podaci*, a čitanjem knjiga i integriranjem tih podataka u naš model svijeta pretvaramo podatke u znanje. + +> ✅ **Znanje** je nešto što se nalazi u našoj glavi i predstavlja naše razumijevanje svijeta. Ono se stječe aktivnim procesom **učenja**, koji integrira informacije koje primamo u naš aktivni model svijeta. + +Najčešće ne definiramo strogo znanje, već ga povezujemo s drugim srodnim konceptima koristeći [DIKW piramidu](https://en.wikipedia.org/wiki/DIKW_pyramid). Ona uključuje sljedeće koncepte: + +* **Podaci** su nešto što je predstavljeno na fizičkom mediju, poput pisanog teksta ili izgovorenih riječi. Podaci postoje neovisno o ljudima i mogu se prenositi među ljudima. +* **Informacije** su način na koji tumačimo podatke u našoj glavi. Na primjer, kada čujemo riječ *računalo*, imamo neko razumijevanje što je to. +* **Znanje** je informacija integrirana u naš model svijeta. Na primjer, kada naučimo što je računalo, počinjemo imati ideje o tome kako radi, koliko košta i za što se može koristiti. Ova mreža međusobno povezanih koncepata čini naše znanje. +* **Mudrost** je još jedna razina našeg razumijevanja svijeta i predstavlja *meta-znanje*, tj. neku ideju o tome kako i kada koristiti znanje. + +*Slika [s Wikipedije](https://commons.wikimedia.org/w/index.php?curid=37705247), autor Longlivetheux - vlastiti rad, CC BY-SA 4.0* + +Dakle, problem **reprezentacije znanja** je pronaći učinkovit način za predstavljanje znanja unutar računala u obliku podataka kako bi ono bilo automatski upotrebljivo. To se može promatrati kao spektar: + +![Spektar reprezentacije znanja](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hr.png) + +> Slika autora [Dmitry Soshnikov](http://soshnikov.com) + +* Na lijevoj strani nalaze se vrlo jednostavni tipovi reprezentacije znanja koji se mogu učinkovito koristiti u računalima. Najjednostavniji je algoritamski, gdje je znanje predstavljeno računalnim programom. Međutim, to nije najbolji način za predstavljanje znanja jer nije fleksibilan. Znanje u našoj glavi često nije algoritamsko. +* Na desnoj strani nalaze se reprezentacije poput prirodnog teksta. To je najmoćniji oblik, ali se ne može koristiti za automatsko zaključivanje. + +> ✅ Razmislite na trenutak kako predstavljate znanje u svojoj glavi i pretvarate ga u bilješke. Postoji li određeni format koji vam pomaže u pamćenju? + +## Klasifikacija računalnih reprezentacija znanja + +Različite metode računalne reprezentacije znanja možemo klasificirati u sljedeće kategorije: + +* **Mrežne reprezentacije** temelje se na činjenici da u našoj glavi imamo mrežu međusobno povezanih koncepata. Možemo pokušati reproducirati iste mreže kao graf unutar računala - takozvanu **semantičku mrežu**. + +1. **Objekt-atribut-vrijednost trojke** ili **parovi atribut-vrijednost**. Budući da se graf može predstaviti unutar računala kao popis čvorova i rubova, možemo predstaviti semantičku mrežu popisom trojki koje sadrže objekte, atribute i vrijednosti. Na primjer, možemo izgraditi sljedeće trojke o programskim jezicima: + +Objekt | Atribut | Vrijednost +-------|---------|----------- +Python | je | Ne-tipizirani jezik +Python | izumio | Guido van Rossum +Python | sintaksa bloka | uvlaka +Ne-tipizirani jezik | nema | definicije tipova + +> ✅ Razmislite kako se trojke mogu koristiti za predstavljanje drugih vrsta znanja. + +2. **Hijerarhijske reprezentacije** naglašavaju činjenicu da često stvaramo hijerarhiju objekata u našoj glavi. Na primjer, znamo da je kanarinac ptica i da sve ptice imaju krila. Također imamo neku ideju o tome koje je boje kanarinac obično i kojom brzinom leti. + + - **Reprezentacija okvira** temelji se na predstavljanju svakog objekta ili klase objekata kao **okvira** koji sadrži **utore**. Utori imaju moguće zadane vrijednosti, ograničenja vrijednosti ili pohranjene procedure koje se mogu pozvati za dobivanje vrijednosti utora. Svi okviri čine hijerarhiju sličnu hijerarhiji objekata u objektno orijentiranim programskim jezicima. + - **Scenariji** su posebna vrsta okvira koji predstavljaju složene situacije koje se mogu odvijati tijekom vremena. + +**Python** + +Utor | Vrijednost | Zadana vrijednost | Interval | +-----|-----------|-------------------|----------| +Ime | Python | | | +Je | Ne-tipizirani jezik | | | +Velika/mala slova varijabli | | CamelCase | | +Duljina programa | | | 5-5000 linija | +Sintaksa bloka | Uvlaka | | | + +3. **Proceduralne reprezentacije** temelje se na predstavljanju znanja popisom radnji koje se mogu izvršiti kada se dogodi određeni uvjet. + - Proizvodna pravila su if-then izjave koje nam omogućuju donošenje zaključaka. Na primjer, liječnik može imati pravilo koje kaže da **AKO** pacijent ima visoku temperaturu **ILI** visoku razinu C-reaktivnog proteina u krvnom testu **ONDA** ima upalu. Kada naiđemo na jedan od uvjeta, možemo donijeti zaključak o upali, a zatim ga koristiti u daljnjem zaključivanju. + - Algoritmi se mogu smatrati još jednim oblikom proceduralne reprezentacije, iako se gotovo nikada ne koriste izravno u sustavima temeljenim na znanju. + +4. **Logika** je izvorno predložena od strane Aristotela kao način predstavljanja univerzalnog ljudskog znanja. + - Predikatna logika kao matematička teorija je prebogata da bi bila izračunljiva, stoga se obično koristi neki njezin podskup, poput Hornovih klauzula koje se koriste u Prologu. + - Opisna logika je obitelj logičkih sustava koji se koriste za predstavljanje i zaključivanje o hijerarhijama objekata i distribuiranim reprezentacijama znanja poput *semantičkog weba*. + +## Ekspertni sustavi + +Jedan od ranih uspjeha simboličke umjetne inteligencije bili su takozvani **ekspertni sustavi** - računalni sustavi dizajnirani da djeluju kao stručnjaci u nekom ograničenom problematičnom području. Temeljili su se na **bazi znanja** izvučenoj od jednog ili više ljudskih stručnjaka i sadržavali su **mehanizam zaključivanja** koji je provodio određeno zaključivanje na temelju te baze. + +![Ljudska arhitektura](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hr.png) | ![Arhitektura sustava temeljenog na znanju](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hr.png) +---------------------------------------------|------------------------------------------------ +Pojednostavljena struktura ljudskog živčanog sustava | Arhitektura sustava temeljenog na znanju + +Ekspertni sustavi izgrađeni su poput ljudskog sustava zaključivanja, koji sadrži **kratkoročno pamćenje** i **dugoročno pamćenje**. Slično tome, u sustavima temeljenim na znanju razlikujemo sljedeće komponente: + +* **Memorija problema**: sadrži znanje o problemu koji se trenutno rješava, npr. temperaturu ili krvni tlak pacijenta, ima li upalu ili ne itd. Ovo znanje također se naziva **statičko znanje**, jer sadrži snimku onoga što trenutno znamo o problemu - takozvano *stanje problema*. +* **Baza znanja**: predstavlja dugoročno znanje o problematičnom području. Ručno se izvlači od ljudskih stručnjaka i ne mijenja se od konzultacije do konzultacije. Budući da nam omogućuje navigaciju od jednog stanja problema do drugog, također se naziva **dinamičko znanje**. +* **Mehanizam zaključivanja**: orkestrira cijeli proces pretraživanja u prostoru stanja problema, postavljajući pitanja korisniku kada je to potrebno. Također je odgovoran za pronalaženje pravih pravila koja će se primijeniti na svako stanje. + +Kao primjer, razmotrimo sljedeći ekspertni sustav za određivanje životinje na temelju njezinih fizičkih karakteristika: + +![AND-OR stablo](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hr.png) + +> Slika autora [Dmitry Soshnikov](http://soshnikov.com) + +Ovaj dijagram naziva se **AND-OR stablo**, i to je grafički prikaz skupa proizvodnih pravila. Crtanje stabla korisno je na početku izvlačenja znanja od stručnjaka. Za predstavljanje znanja unutar računala prikladnije je koristiti pravila: + +``` +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 +``` + +Možete primijetiti da svaki uvjet na lijevoj strani pravila i akcija predstavljaju objekt-atribut-vrijednost (OAV) trojke. **Radna memorija** sadrži skup OAV trojki koje odgovaraju problemu koji se trenutno rješava. **Mehanizam pravila** traži pravila za koja je uvjet zadovoljen i primjenjuje ih, dodajući novu trojku u radnu memoriju. + +> ✅ Nacrtajte vlastito AND-OR stablo na temu koja vas zanima! + +### Naprijed vs. unatrag zaključivanje + +Proces opisan gore naziva se **naprijed zaključivanje**. Počinje s nekim početnim podacima o problemu dostupnim u radnoj memoriji, a zatim izvršava sljedeću petlju zaključivanja: + +1. Ako je ciljani atribut prisutan u radnoj memoriji - zaustavi se i daj rezultat +2. Potraži sva pravila čiji je uvjet trenutno zadovoljen - dobije se **skup sukoba** pravila. +3. Izvrši **rješavanje sukoba** - odaberi jedno pravilo koje će se izvršiti u ovom koraku. Moguće su različite strategije rješavanja sukoba: + - Odaberi prvo primjenjivo pravilo u bazi znanja + - Odaberi nasumično pravilo + - Odaberi *specifičnije* pravilo, tj. ono koje zadovoljava najviše uvjeta na "lijevoj strani" (LHS) +4. Primijeni odabrano pravilo i unesi novi dio znanja u stanje problema +5. Ponovi od koraka 1. + +Međutim, u nekim slučajevima možda želimo započeti s praznim znanjem o problemu i postavljati pitanja koja će nam pomoći da dođemo do zaključka. Na primjer, prilikom medicinske dijagnoze obično ne provodimo sve medicinske analize unaprijed prije nego što započnemo dijagnosticiranje pacijenta. Radije želimo provesti analize kada treba donijeti odluku. + +Ovaj proces može se modelirati koristeći **unatrag zaključivanje**. Ono je vođeno **ciljem** - vrijednošću atributa koju želimo pronaći: + +1. Odaberi sva pravila koja nam mogu dati vrijednost cilja (tj. s ciljem na RHS ("desnoj strani")) - skup sukoba +1. Ako ne postoje pravila za ovaj atribut ili postoji pravilo koje kaže da bismo trebali pitati korisnika za vrijednost - pitaj za to, inače: +1. Koristi strategiju rješavanja sukoba za odabir jednog pravila koje ćemo koristiti kao *hipotezu* - pokušat ćemo je dokazati +1. Rekurzivno ponovi proces za sve atribute na LHS pravila, pokušavajući ih dokazati kao ciljeve +1. Ako proces u bilo kojem trenutku ne uspije - koristi drugo pravilo u koraku 3. + +> ✅ U kojim je situacijama naprijed zaključivanje prikladnije? A što je s unatrag zaključivanjem? + +### Implementacija ekspertnih sustava + +Ekspertni sustavi mogu se implementirati koristeći različite alate: + +* Izravno programiranje u nekom visoko razinom programskom jeziku. Ovo nije najbolja ideja jer je glavna prednost sustava temeljenog na znanju to što je znanje odvojeno od zaključivanja, a potencijalno bi stručnjak za problematično područje trebao biti u mogućnosti pisati pravila bez razumijevanja detalja procesa zaključivanja. +* Korištenje **ljuske ekspertnih sustava**, tj. sustava posebno dizajniranog za popunjavanje znanjem koristeći neki jezik za reprezentaciju znanja. + +## ✍️ Vježba: Zaključivanje o životinjama + +Pogledajte [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) za primjer implementacije ekspertnih sustava s naprijed i unatrag zaključivanjem. +> **Napomena**: Ovaj primjer je prilično jednostavan i samo daje ideju o tome kako izgleda stručni sustav. Kada počnete stvarati takav sustav, primijetit ćete neku *inteligentnu* ponašanje tek kada dosegnete određeni broj pravila, otprilike 200+. U nekom trenutku pravila postaju previše složena da biste ih sve mogli držati na umu, i tada se možete početi pitati zašto sustav donosi određene odluke. Međutim, važna karakteristika sustava temeljenih na znanju je da uvijek možete *objasniti* točno kako je donesena bilo koja odluka. +## Ontologije i Semantički Web + +Krajem 20. stoljeća pokrenuta je inicijativa za korištenje reprezentacije znanja kako bi se označili internetski resursi, omogućujući pronalaženje resursa koji odgovaraju vrlo specifičnim upitima. Ovaj pokret nazvan je **Semantički Web**, a oslanjao se na nekoliko koncepata: + +- Posebna reprezentacija znanja temeljena na **[logici opisa](https://en.wikipedia.org/wiki/Description_logic)** (DL). Slična je okvirnoj reprezentaciji znanja jer gradi hijerarhiju objekata s atributima, ali ima formalnu logičku semantiku i zaključivanje. Postoji cijela obitelj DL-a koja balansira između izražajnosti i algoritamske složenosti zaključivanja. +- Distribuirana reprezentacija znanja, gdje su svi koncepti predstavljeni globalnim URI identifikatorom, omogućujući stvaranje hijerarhija znanja koje obuhvaćaju internet. +- Obitelj jezika temeljenih na XML-u za opis znanja: RDF (Okvir za opis resursa), RDFS (RDF shema), OWL (Jezik za web ontologije). + +Ključni koncept u Semantičkom Webu je koncept **Ontologije**. Odnosi se na eksplicitnu specifikaciju domene problema koristeći neku formalnu reprezentaciju znanja. Najjednostavnija ontologija može biti samo hijerarhija objekata u domeni problema, dok složenije ontologije uključuju pravila koja se mogu koristiti za zaključivanje. + +U semantičkom webu, sve reprezentacije temelje se na trojkama. Svaki objekt i svaka relacija jedinstveno su identificirani URI-jem. Na primjer, ako želimo navesti činjenicu da je ovaj AI kurikulum razvio Dmitry Soshnikov 1. siječnja 2022. - evo trojki koje možemo koristiti: + + + +``` +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 +``` + +> ✅ Ovdje su `http://www.example.com/terms/creation-date` i `http://purl.org/dc/elements/1.1/creator` neki dobro poznati i univerzalno prihvaćeni URI-ji za izražavanje koncepata *kreator* i *datum kreiranja*. + +U složenijem slučaju, ako želimo definirati popis kreatora, možemo koristiti neke podatkovne strukture definirane u RDF-u. + + + +> Dijagrami gore od [Dmitry Soshnikov](http://soshnikov.com) + +Napredak u izgradnji Semantičkog Weba donekle je usporen uspjehom tražilica i tehnika obrade prirodnog jezika, koje omogućuju izdvajanje strukturiranih podataka iz teksta. Međutim, u nekim područjima i dalje postoje značajni napori za održavanje ontologija i baza znanja. Nekoliko projekata vrijednih spomena: + +* [WikiData](https://wikidata.org/) je zbirka strojno čitljivih baza znanja povezanih s Wikipedijom. Većina podataka izvučena je iz Wikipedia *InfoBoxova*, dijelova strukturiranog sadržaja unutar stranica Wikipedije. Možete [upitima](https://query.wikidata.org/) pretraživati WikiData koristeći SPARQL, poseban jezik upita za Semantički Web. Evo primjera upita koji prikazuje najpopularnije boje očiju među ljudima: + +```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/) je još jedan projekt sličan WikiData. + +> ✅ Ako želite eksperimentirati s izradom vlastitih ontologija ili otvaranjem postojećih, postoji izvrstan vizualni uređivač ontologija nazvan [Protégé](https://protege.stanford.edu/). Preuzmite ga ili koristite online. + + + +*Web Protégé uređivač otvoren s ontologijom obitelji Romanov. Snimka zaslona Dmitry Soshnikov* + +## ✍️ Vježba: Ontologija obitelji + +Pogledajte [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) za primjer korištenja tehnika Semantičkog Weba za zaključivanje o obiteljskim odnosima. Uzet ćemo obiteljsko stablo predstavljeno u uobičajenom GEDCOM formatu i ontologiju obiteljskih odnosa te izgraditi graf svih obiteljskih odnosa za zadani skup pojedinaca. + +## Microsoft Concept Graph + +U većini slučajeva, ontologije se pažljivo izrađuju ručno. Međutim, također je moguće **izvući** ontologije iz nestrukturiranih podataka, na primjer, iz tekstova prirodnog jezika. + +Jedan takav pokušaj napravljen je od strane Microsoft Researcha, što je rezultiralo [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +To je velika zbirka entiteta grupiranih pomoću nasljedne relacije `is-a`. Omogućuje odgovaranje na pitanja poput "Što je Microsoft?" - odgovor bi bio nešto poput "tvrtka s vjerojatnošću 0.87, i brend s vjerojatnošću 0.75". + +Graf je dostupan ili kao REST API, ili kao veliki tekstualni datoteku za preuzimanje koja navodi sve parove entiteta. + +## ✍️ Vježba: Graf koncepta + +Isprobajte bilježnicu [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) kako biste vidjeli kako možemo koristiti Microsoft Concept Graph za grupiranje vijesti u nekoliko kategorija. + +## Zaključak + +Danas se AI često smatra sinonimom za *strojno učenje* ili *neuronske mreže*. Međutim, ljudsko biće također pokazuje eksplicitno zaključivanje, što je nešto što trenutno nije obuhvaćeno neuronskim mrežama. U stvarnim projektima, eksplicitno zaključivanje i dalje se koristi za obavljanje zadataka koji zahtijevaju objašnjenja ili mogućnost kontrolirane promjene ponašanja sustava. + +## 🚀 Izazov + +U bilježnici Ontologija obitelji povezanoj s ovom lekcijom, postoji prilika za eksperimentiranje s drugim obiteljskim odnosima. Pokušajte otkriti nove veze između ljudi u obiteljskom stablu. + +## [Post-predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Pregled i samostalno učenje + +Istražite na internetu područja u kojima su ljudi pokušali kvantificirati i kodificirati znanje. Pogledajte Bloomovu taksonomiju i vratite se u povijest kako biste saznali kako su ljudi pokušavali razumjeti svoj svijet. Istražite rad Linnaeusa na stvaranju taksonomije organizama i promatrajte način na koji je Dmitri Mendeleev stvorio način za opisivanje i grupiranje kemijskih elemenata. Koje druge zanimljive primjere možete pronaći? + +**Zadatak**: [Izradite ontologiju](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/2-Symbolic/assignment.md b/translations/hr/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..da90730e --- /dev/null +++ b/translations/hr/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Izgradnja ontologije + +Izgradnja baze znanja temelji se na kategorizaciji modela koji predstavlja činjenice o nekoj temi. Odaberite temu - poput osobe, mjesta ili stvari - i zatim izradite model te teme. Koristite neke od tehnika i strategija izgradnje modela opisane u ovoj lekciji. Primjer bi bio stvaranje ontologije dnevne sobe s namještajem, rasvjetom i slično. Kako se dnevna soba razlikuje od kuhinje? Kupaonice? Kako znate da je to dnevna soba, a ne blagovaonica? Koristite [Protégé](https://protege.stanford.edu/) za izradu svoje ontologije. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..3635f514 --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Uvod u neuronske mreže: Perceptron + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Jedan od prvih pokušaja implementacije nečega sličnog modernoj neuronskoj mreži napravio je Frank Rosenblatt iz Cornell Aeronautical Laboratory 1957. godine. Bila je to hardverska implementacija nazvana "Mark-1", dizajnirana za prepoznavanje primitivnih geometrijskih oblika, poput trokuta, kvadrata i krugova. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Slike [s Wikipedije](https://en.wikipedia.org/wiki/Perceptron) + +Ulazna slika predstavljena je nizom fotocelija dimenzija 20x20, tako da je neuronska mreža imala 400 ulaza i jedan binarni izlaz. Jednostavna mreža sadržavala je jedan neuron, koji se također naziva **jedinica logičkog praga**. Težine neuronske mreže djelovale su poput potenciometara koji su zahtijevali ručno podešavanje tijekom faze treniranja. + +> ✅ Potenciometar je uređaj koji omogućuje korisniku podešavanje otpora u strujnom krugu. + +> The New York Times je tada pisao o perceptronu: *embrij elektroničkog računala za koje [mornarica] očekuje da će moći hodati, govoriti, vidjeti, pisati, reproducirati se i biti svjesno svog postojanja.* + +## Model perceptrona + +Pretpostavimo da imamo N značajki u našem modelu, u kojem slučaju bi ulazni vektor bio vektor veličine N. Perceptron je model za **binarnu klasifikaciju**, tj. može razlikovati dvije klase ulaznih podataka. Pretpostavit ćemo da za svaki ulazni vektor x izlaz našeg perceptrona može biti ili +1 ili -1, ovisno o klasi. Izlaz će se izračunati pomoću formule: + +y(x) = f(wTx) + +gdje je f funkcija aktivacije koraka + + + + +## Treniranje perceptrona + +Za treniranje perceptrona potrebno je pronaći vektor težina w koji klasificira većinu vrijednosti ispravno, tj. rezultira najmanjom **pogreškom**. Ova pogreška E definirana je **kriterijem perceptrona** na sljedeći način: + +E(w) = -∑wTxiti + +gdje: + +* zbroj se uzima za one točke skupa za treniranje i koje rezultiraju pogrešnom klasifikacijom +* xi su ulazni podaci, a ti je ili -1 ili +1 za negativne i pozitivne primjere. + +Ovaj kriterij se smatra funkcijom težina w, i potrebno ga je minimizirati. Često se koristi metoda nazvana **gradijentni spust**, u kojoj započinjemo s nekim početnim težinama w(0), a zatim u svakom koraku ažuriramo težine prema formuli: + +w(t+1) = w(t) - η∇E(w) + +Ovdje je η tzv. **stopa učenja**, a ∇E(w) označava **gradijent** funkcije E. Nakon izračuna gradijenta, dobivamo: + +w(t+1) = w(t) + ∑ηxiti + +Algoritam u Pythonu izgleda ovako: + +```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 +``` + +## Zaključak + +U ovoj lekciji naučili ste o perceptronu, koji je model za binarnu klasifikaciju, i kako ga trenirati koristeći vektor težina. + +## 🚀 Izazov + +Ako želite pokušati izraditi vlastiti perceptron, isprobajte [ovu radionicu na Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) koja koristi [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Pregled i samostalno učenje + +Da biste vidjeli kako možemo koristiti perceptron za rješavanje jednostavnih problema, kao i problema iz stvarnog života, i nastavili učiti - pogledajte bilježnicu [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Evo zanimljivog [članka o perceptronima](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Zadatak](lab/README.md) + +U ovoj lekciji implementirali smo perceptron za zadatak binarne klasifikacije i koristili ga za klasifikaciju između dvije rukom pisane znamenke. U ovom laboratoriju od vas se traži da riješite problem klasifikacije znamenki u potpunosti, tj. odredite koja znamenka najvjerojatnije odgovara danoj slici. + +* [Upute](lab/README.md) +* [Bilježnica](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..334956d4 --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Višeklasna klasifikacija s perceptronom + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Koristeći kod koji smo razvili u ovoj lekciji za binarnu klasifikaciju MNIST rukom pisanih znamenki, kreirajte višeklasni klasifikator koji će moći prepoznati bilo koju znamenku. Izračunajte točnost klasifikacije na skupu za treniranje i testiranje te ispišite matricu konfuzije. + +## Savjeti + +1. Za svaku znamenku kreirajte skup podataka za binarnu klasifikaciju "ova znamenka naspram svih ostalih znamenki" +1. Trenirajte 10 različitih perceptrona za binarnu klasifikaciju (jedan za svaku znamenku) +1. Definirajte funkciju koja će klasificirati ulaznu znamenku + +> **Savjet**: Ako kombiniramo težine svih 10 perceptrona u jednu matricu, trebali bismo moći primijeniti svih 10 perceptrona na ulazne znamenke jednom matričnom množenjem. Najvjerojatnija znamenka može se zatim pronaći jednostavno primjenom `argmax` operacije na izlaz. + +## Početna bilježnica + +Započnite laboratorijsku vježbu otvaranjem [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..9d002fd5 --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Uvod u neuronske mreže. Višeslojni perceptron + +U prethodnom dijelu naučili ste o najjednostavnijem modelu neuronske mreže - jednoslojnom perceptronu, linearnom modelu za klasifikaciju s dvije klase. + +U ovom dijelu proširit ćemo ovaj model u fleksibilniji okvir koji nam omogućuje: + +* izvođenje **višeklasne klasifikacije** uz klasifikaciju s dvije klase +* rješavanje **regresijskih problema** uz klasifikaciju +* razdvajanje klasa koje nisu linearno razdvojive + +Također ćemo razviti vlastiti modularni okvir u Pythonu koji će nam omogućiti konstrukciju različitih arhitektura neuronskih mreža. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizacija strojnog učenja + +Počnimo s formalizacijom problema strojnog učenja. Pretpostavimo da imamo skup podataka za treniranje **X** s oznakama **Y**, i trebamo izgraditi model *f* koji će davati najtočnija predviđanja. Kvaliteta predviđanja mjeri se pomoću **funkcije gubitka** ℒ. Sljedeće funkcije gubitka često se koriste: + +* Za regresijske probleme, kada trebamo predvidjeti broj, možemo koristiti **apsolutnu pogrešku** ∑i|f(x(i))-y(i)| ili **kvadratnu pogrešku** ∑i(f(x(i))-y(i))2 +* Za klasifikaciju koristimo **0-1 gubitak** (što je u suštini isto kao i **točnost** modela) ili **logistički gubitak**. + +Za jednoslojni perceptron, funkcija *f* definirana je kao linearna funkcija *f(x)=wx+b* (gdje je *w* matrica težina, *x* vektor ulaznih značajki, a *b* vektor pomaka). Za različite arhitekture neuronskih mreža, ova funkcija može poprimiti složeniji oblik. + +> U slučaju klasifikacije, često je poželjno dobiti vjerojatnosti odgovarajućih klasa kao izlaz mreže. Kako bismo proizvoljne brojeve pretvorili u vjerojatnosti (npr. normalizirali izlaz), često koristimo funkciju **softmax** σ, pa funkcija *f* postaje *f(x)=σ(wx+b)*. + +U gore navedenoj definiciji *f*, *w* i *b* nazivaju se **parametri** θ=⟨*w,b*⟩. S obzirom na skup podataka ⟨**X**,**Y**⟩, možemo izračunati ukupnu pogrešku na cijelom skupu podataka kao funkciju parametara θ. + +> ✅ **Cilj treniranja neuronske mreže je minimizirati pogrešku mijenjanjem parametara θ** + +## Optimizacija gradijentnim spuštanjem + +Postoji dobro poznata metoda optimizacije funkcija nazvana **gradijentno spuštanje**. Ideja je da možemo izračunati derivaciju (u višedimenzionalnom slučaju nazvanu **gradijent**) funkcije gubitka u odnosu na parametre i mijenjati parametre na način da se pogreška smanji. Ovo se može formalizirati na sljedeći način: + +* Inicijalizirajte parametre nekim slučajnim vrijednostima w(0), b(0) +* Ponavljajte sljedeći korak više puta: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Tijekom treniranja, koraci optimizacije trebali bi se računati uzimajući u obzir cijeli skup podataka (sjetite se da se gubitak računa kao zbroj kroz sve uzorke za treniranje). Međutim, u stvarnosti uzimamo male dijelove skupa podataka nazvane **minibatch-evi** i računamo gradijente na temelju podskupa podataka. Budući da se podskup uzima slučajno svaki put, takva metoda naziva se **stohastičko gradijentno spuštanje** (SGD). + +## Višeslojni perceptroni i povratna propagacija + +Jednoslojna mreža, kao što smo vidjeli, može klasificirati linearno razdvojive klase. Kako bismo izgradili bogatiji model, možemo kombinirati nekoliko slojeva mreže. Matematički, to bi značilo da funkcija *f* ima složeniji oblik i računa se u nekoliko koraka: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Ovdje je α **nelinearna aktivacijska funkcija**, σ je softmax funkcija, a parametri θ=<*w1,b1,w2,b2*>. + +Algoritam gradijentnog spuštanja ostaje isti, ali postaje složenije izračunati gradijente. Prema pravilu lančane derivacije, možemo izračunati derivacije kao: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Pravilo lančane derivacije koristi se za izračunavanje derivacija funkcije gubitka u odnosu na parametre. + +Primijetite da je lijevi dio svih tih izraza isti, pa možemo učinkovito izračunavati derivacije počevši od funkcije gubitka i idući "unatrag" kroz računski graf. Stoga se metoda treniranja višeslojnog perceptrona naziva **povratna propagacija**, ili 'backprop'. + +računski graf + +> TODO: citiranje slike + +> ✅ Povratnu propagaciju obradit ćemo detaljnije u našem primjeru u bilježnici. + +## Zaključak + +U ovoj lekciji izgradili smo vlastitu biblioteku za neuronske mreže i koristili je za jednostavan zadatak klasifikacije u dvodimenzionalnom prostoru. + +## 🚀 Izazov + +U pratećoj bilježnici implementirat ćete vlastiti okvir za izgradnju i treniranje višeslojnih perceptrona. Moći ćete detaljno vidjeti kako moderne neuronske mreže funkcioniraju. + +Prijeđite na bilježnicu [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) i prođite kroz nju. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Pregled i samostalno učenje + +Povratna propagacija je uobičajeni algoritam koji se koristi u umjetnoj inteligenciji i strojnome učenju, vrijedan detaljnijeg proučavanja [ovdje](https://wikipedia.org/wiki/Backpropagation). + +## [Zadatak](lab/README.md) + +U ovom laboratoriju traži se da koristite okvir koji ste izgradili u ovoj lekciji za rješavanje klasifikacije rukom pisanih znamenki iz skupa podataka MNIST. + +* [Upute](lab/README.md) +* [Bilježnica](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..8721ac2a --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Klasifikacija MNIST-a s Našim Okvirom + +Laboratorijska vježba iz [AI za Početnike Kurikulum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Riješite problem klasifikacije rukom pisanih znamenki MNIST koristeći perceptron s 1, 2 i 3 sloja. Koristite okvir za neuronske mreže koji smo razvili tijekom lekcije. + +## Početna Bilježnica + +Započnite laboratorij otvaranjem [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Pitanja + +Kao rezultat ovog laboratorija, pokušajte odgovoriti na sljedeća pitanja: + +- Utječe li funkcija aktivacije između slojeva na performanse mreže? +- Trebamo li mrežu s 2 ili 3 sloja za ovaj zadatak? +- Jeste li imali problema s treniranjem mreže? Pogotovo kako se broj slojeva povećavao. +- Kako se težine mreže ponašaju tijekom treniranja? Možete nacrtati maksimalnu apsolutnu vrijednost težina u odnosu na epohe kako biste razumjeli povezanost. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..38b5b556 --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Okviri za neuronske mreže + +Kao što smo već naučili, da bismo učinkovito trenirali neuronske mreže, moramo učiniti dvije stvari: + +* Raditi s tenzorima, npr. množiti, zbrajati i izračunavati funkcije poput sigmoid ili softmax +* Izračunati gradijente svih izraza kako bismo mogli provesti optimizaciju gradijentnog spuštanja + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Iako biblioteka `numpy` može obaviti prvi dio, potrebna nam je neka metoda za izračunavanje gradijenata. U [našem okviru](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) koji smo razvili u prethodnom dijelu morali smo ručno programirati sve funkcije derivacija unutar metode `backward`, koja provodi povratnu propagaciju. Idealno, okvir bi nam trebao omogućiti izračunavanje gradijenata *bilo kojeg izraza* koji možemo definirati. + +Još jedna važna stvar je mogućnost izvođenja izračuna na GPU-u ili drugim specijaliziranim jedinicama za izračunavanje, poput [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Treniranje dubokih neuronskih mreža zahtijeva *puno* izračuna, a mogućnost paralelizacije tih izračuna na GPU-ima je vrlo važna. + +> ✅ Pojam 'paralelizacija' znači raspodjelu izračuna na više uređaja. + +Trenutno su dva najpopularnija okvira za neuronske mreže: [TensorFlow](http://TensorFlow.org) i [PyTorch](https://pytorch.org/). Oba pružaju niskorazinski API za rad s tenzorima na CPU-u i GPU-u. Povrh niskorazinskog API-ja, postoji i visokorazinski API, nazvan [Keras](https://keras.io/) i [PyTorch Lightning](https://pytorchlightning.ai/) odgovarajuće. + +Niskorazinski API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +Visokorazinski API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Niskorazinski API-ji** u oba okvira omogućuju izgradnju tzv. **grafova izračuna**. Ovaj graf definira kako izračunati izlaz (obično funkciju gubitka) s obzirom na ulazne parametre i može se poslati na GPU za izračunavanje, ako je dostupan. Postoje funkcije za diferenciranje ovog grafa izračuna i izračunavanje gradijenata, koji se zatim mogu koristiti za optimizaciju parametara modela. + +**Visokorazinski API-ji** tretiraju neuronske mreže kao **sekvencu slojeva** i olakšavaju konstrukciju većine neuronskih mreža. Treniranje modela obično zahtijeva pripremu podataka, a zatim pozivanje funkcije `fit` za obavljanje posla. + +Visokorazinski API omogućuje brzu konstrukciju tipičnih neuronskih mreža bez brige o mnogim detaljima. Istovremeno, niskorazinski API pruža mnogo više kontrole nad procesom treniranja, pa se često koristi u istraživanju, kada se radi s novim arhitekturama neuronskih mreža. + +Također je važno razumjeti da možete koristiti oba API-ja zajedno, npr. možete razviti vlastitu arhitekturu sloja mreže koristeći niskorazinski API, a zatim je koristiti unutar veće mreže konstruirane i trenirane s visokorazinskim API-jem. Ili možete definirati mrežu koristeći visokorazinski API kao sekvencu slojeva, a zatim koristiti vlastitu niskorazinsku petlju treniranja za optimizaciju. Oba API-ja koriste iste osnovne koncepte i dizajnirani su da dobro surađuju. + +## Učenje + +U ovom tečaju nudimo većinu sadržaja za PyTorch i TensorFlow. Možete odabrati svoj preferirani okvir i proći samo odgovarajuće bilježnice. Ako niste sigurni koji okvir odabrati, pročitajte neke rasprave na internetu o **PyTorch vs. TensorFlow**. Također možete pogledati oba okvira kako biste stekli bolji uvid. + +Gdje je moguće, koristit ćemo visokorazinske API-je radi jednostavnosti. Međutim, vjerujemo da je važno razumjeti kako neuronske mreže funkcioniraju od temelja, pa ćemo na početku raditi s niskorazinskim API-jem i tenzorima. Međutim, ako želite brzo krenuti i ne želite trošiti puno vremena na učenje ovih detalja, možete preskočiti te dijelove i odmah prijeći na bilježnice s visokorazinskim API-jem. + +## ✍️ Vježbe: Okviri + +Nastavite svoje učenje u sljedećim bilježnicama: + +Niskorazinski API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +Visokorazinski API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Nakon što savladate okvire, ponovimo pojam pretreniranja. + +# Pretreniranje + +Pretreniranje je iznimno važan koncept u strojnom učenju i vrlo je važno razumjeti ga! + +Razmotrimo sljedeći problem aproksimacije 5 točaka (predstavljenih s `x` na grafovima dolje): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hr.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hr.jpg) +-------------------------|-------------------------- +**Linearni model, 2 parametra** | **Nelinearni model, 7 parametara** +Pogreška na treningu = 5.3 | Pogreška na treningu = 0 +Pogreška na validaciji = 5.1 | Pogreška na validaciji = 20 + +* Na lijevoj strani vidimo dobru aproksimaciju ravnom linijom. Budući da je broj parametara adekvatan, model ispravno razumije raspodjelu točaka. +* Na desnoj strani model je previše moćan. Budući da imamo samo 5 točaka, a model ima 7 parametara, može se prilagoditi tako da prolazi kroz sve točke, čineći pogrešku na treningu 0. Međutim, to sprječava model da razumije ispravan obrazac podataka, pa je pogreška na validaciji vrlo visoka. + +Vrlo je važno postići ispravnu ravnotežu između bogatstva modela (broja parametara) i broja uzoraka za trening. + +## Zašto dolazi do pretreniranja + + * Nedovoljno podataka za trening + * Previše moćan model + * Previše šuma u ulaznim podacima + +## Kako otkriti pretreniranje + +Kao što možete vidjeti na grafu iznad, pretreniranje se može otkriti vrlo niskom pogreškom na treningu i visokom pogreškom na validaciji. Obično tijekom treninga vidimo kako pogreške na treningu i validaciji počinju opadati, a zatim u nekom trenutku pogreška na validaciji može prestati opadati i početi rasti. To će biti znak pretreniranja i pokazatelj da bismo trebali zaustaviti trening u tom trenutku (ili barem napraviti snimku modela). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hr.png) + +## Kako spriječiti pretreniranje + +Ako primijetite da dolazi do pretreniranja, možete učiniti sljedeće: + + * Povećati količinu podataka za trening + * Smanjiti složenost modela + * Koristiti neku [tehniku regularizacije](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), poput [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), koju ćemo kasnije razmotriti. + +## Pretreniranje i kompromis pristranosti-varijance + +Pretreniranje je zapravo slučaj općenitijeg problema u statistici nazvanog [kompromis pristranosti-varijance](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Ako razmotrimo moguće izvore pogreške u našem modelu, možemo vidjeti dvije vrste pogrešaka: + +* **Pogreške pristranosti** uzrokovane su time što naš algoritam ne može ispravno uhvatiti odnos između podataka za trening. To može biti rezultat činjenice da naš model nije dovoljno moćan (**nedovoljno treniranje**). +* **Pogreške varijance**, koje su uzrokovane time što model aproksimira šum u ulaznim podacima umjesto značajnog odnosa (**pretreniranje**). + +Tijekom treninga, pogreška pristranosti opada (kako naš model uči aproksimirati podatke), a pogreška varijance raste. Važno je zaustaviti trening - bilo ručno (kada otkrijemo pretreniranje) ili automatski (uvođenjem regularizacije) - kako bismo spriječili pretreniranje. + +## Zaključak + +U ovoj lekciji naučili ste o razlikama između različitih API-ja za dva najpopularnija AI okvira, TensorFlow i PyTorch. Osim toga, naučili ste o vrlo važnoj temi, pretreniranje. + +## 🚀 Izazov + +U pratećim bilježnicama pronaći ćete 'zadaci' na dnu; prođite kroz bilježnice i dovršite zadatke. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Pregled i samostalno učenje + +Provedite istraživanje o sljedećim temama: + +- TensorFlow +- PyTorch +- Pretreniranje + +Postavite si sljedeća pitanja: + +- Koja je razlika između TensorFlow i PyTorch? +- Koja je razlika između pretreniranja i nedovoljnog treniranja? + +## [Zadatak](lab/README.md) + +U ovom laboratoriju traži se da riješite dva problema klasifikacije koristeći jednostavne i višeslojne potpuno povezane mreže koristeći PyTorch ili TensorFlow. + +* [Upute](lab/README.md) +* [Bilježnica](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..bf95f2af --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Klasifikacija s PyTorch/TensorFlow + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Riješite dva problema klasifikacije koristeći jednostavne i višeslojne potpuno povezane mreže uz pomoć PyTorcha ili TensorFlowa: + +1. **[Klasifikacija irisa](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - primjer problema s tabličnim ulaznim podacima, koji se može riješiti klasičnim strojnim učenjem. Vaš cilj je klasificirati irise u 3 klase na temelju 4 numerička parametra. +2. Problem klasifikacije rukom pisanih znamenki **MNIST**, koji smo već vidjeli. + +Isprobajte različite arhitekture mreža kako biste postigli najbolju moguću točnost. + +## Početna bilježnica + +Započnite laboratorij otvaranjem [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/3-NeuralNetworks/README.md b/translations/hr/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..29db9847 --- /dev/null +++ b/translations/hr/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Uvod u neuronske mreže + +![Sažetak sadržaja o uvodu u neuronske mreže u obliku crteža](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hr.png) + +Kao što smo raspravili u uvodu, jedan od načina za postizanje inteligencije je treniranje **računalnog modela** ili **umjetnog mozga**. Od sredine 20. stoljeća, istraživači su isprobavali različite matematičke modele, sve dok se u posljednjim godinama ovaj smjer nije pokazao iznimno uspješnim. Takvi matematički modeli mozga nazivaju se **neuronske mreže**. + +> Ponekad se neuronske mreže nazivaju *Umjetne neuronske mreže* (Artificial Neural Networks, ANNs) kako bi se naglasilo da govorimo o modelima, a ne o stvarnim mrežama neurona. + +## Strojno učenje + +Neuronske mreže dio su šire discipline zvane **Strojno učenje**, čiji je cilj koristiti podatke za treniranje računalnih modela koji mogu rješavati probleme. Strojno učenje čini veliki dio umjetne inteligencije, no u ovom kurikulumu ne pokrivamo klasično strojno učenje. + +> Posjetite naš zasebni kurikulum **[Strojno učenje za početnike](http://github.com/microsoft/ml-for-beginners)** kako biste saznali više o klasičnom strojnome učenju. + +U strojnome učenju pretpostavljamo da imamo neki skup podataka primjera **X** i odgovarajuće izlazne vrijednosti **Y**. Primjeri su često N-dimenzionalni vektori koji se sastoje od **značajki**, a izlazi se nazivaju **oznake**. + +Razmotrit ćemo dva najčešća problema strojnog učenja: + +* **Klasifikacija**, gdje trebamo klasificirati ulazni objekt u dvije ili više klasa. +* **Regresija**, gdje trebamo predvidjeti numeričku vrijednost za svaki od ulaznih uzoraka. + +> Kada predstavljamo ulaze i izlaze kao tenzore, ulazni skup podataka je matrica veličine M×N, gdje je M broj uzoraka, a N broj značajki. Izlazne oznake **Y** su vektor veličine M. + +U ovom kurikulumu fokusirat ćemo se samo na modele neuronskih mreža. + +## Model neurona + +Iz biologije znamo da naš mozak sastoji od neuronskih stanica, od kojih svaka ima više "ulaza" (aksona) i jedan izlaz (dendrit). Aksoni i dendriti mogu provoditi električne signale, a veze između aksona i dendrita mogu pokazivati različite stupnjeve provodljivosti (kontrolirane neuromediatorima). + +![Model neurona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hr.jpg) | ![Model neurona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hr.png) +----|---- +Stvarni neuron *([Slika](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) s Wikipedije)* | Umjetni neuron *(Slika autora)* + +Dakle, najjednostavniji matematički model neurona sadrži nekoliko ulaza X1, ..., XN i jedan izlaz Y, te niz težinskih vrijednosti W1, ..., WN. Izlaz se računa kao: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +gdje je f neka nelinearna **funkcija aktivacije**. + +> Rani modeli neurona opisani su u klasičnom radu [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) Warrena McCullocka i Waltera Pittsa iz 1943. Donald Hebb u svojoj knjizi "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" predložio je način na koji se te mreže mogu trenirati. + +## U ovom dijelu + +U ovom dijelu naučit ćemo o: +* [Perceptronu](03-Perceptron/README.md), jednom od najranijih modela neuronskih mreža za klasifikaciju s dvije klase +* [Višeslojnim mrežama](04-OwnFramework/README.md) uz prateću bilježnicu [kako izgraditi vlastiti okvir](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Okvirima za neuronske mreže](05-Frameworks/README.md), uz ove bilježnice: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) i [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Prenaučavanju](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/hr/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..a8e46a72 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Uvod u računalni vid + +[Računalni vid](https://wikipedia.org/wiki/Computer_vision) je disciplina čiji je cilj omogućiti računalima da steknu visok nivo razumijevanja digitalnih slika. Ovo je prilično široka definicija jer *razumijevanje* može značiti mnogo različitih stvari, uključujući pronalaženje objekta na slici (**detekcija objekata**), razumijevanje što se događa (**detekcija događaja**), opisivanje slike tekstom ili rekonstrukciju scene u 3D. Postoje i posebni zadaci vezani za slike ljudi: procjena dobi i emocija, detekcija i identifikacija lica te procjena 3D poze, da spomenemo samo neke. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Jedan od najjednostavnijih zadataka računalnog vida je **klasifikacija slika**. + +Računalni vid se često smatra granom umjetne inteligencije (AI). Danas se većina zadataka računalnog vida rješava pomoću neuronskih mreža. U ovom dijelu ćemo naučiti više o posebnoj vrsti neuronskih mreža koje se koriste za računalni vid, [konvolucijskim neuronskim mrežama](../07-ConvNets/README.md). + +Međutim, prije nego što sliku proslijedite neuronskoj mreži, u mnogim slučajevima ima smisla koristiti neke algoritamske tehnike za poboljšanje slike. + +Postoji nekoliko Python biblioteka dostupnih za obradu slika: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** može se koristiti za čitanje/pisanje različitih formata slika. Također podržava ffmpeg, koristan alat za pretvaranje video okvira u slike. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (poznat i kao PIL) je nešto moćniji i podržava manipulaciju slikama poput morfinga, podešavanja paleta i još mnogo toga. +* **[OpenCV](https://opencv.org/)** je moćna biblioteka za obradu slika napisana u C++, koja je postala *de facto* standard za obradu slika. Ima praktično Python sučelje. +* **[dlib](http://dlib.net/)** je C++ biblioteka koja implementira mnoge algoritme strojnog učenja, uključujući neke algoritme računalnog vida. Također ima Python sučelje i može se koristiti za izazovne zadatke poput detekcije lica i obilježja lica. + +## OpenCV + +[OpenCV](https://opencv.org/) se smatra *de facto* standardom za obradu slika. Sadrži mnogo korisnih algoritama implementiranih u C++. OpenCV možete koristiti i iz Pythona. + +Dobar izvor za učenje OpenCV-a je [ovaj Learn OpenCV tečaj](https://learnopencv.com/getting-started-with-opencv/). U našem kurikulumu cilj nije naučiti OpenCV, već vam pokazati neke primjere kada se može koristiti i kako. + +### Učitavanje slika + +Slike u Pythonu mogu se praktično predstaviti pomoću NumPy nizova. Na primjer, crno-bijele slike veličine 320x200 piksela bile bi pohranjene u nizu dimenzija 200x320, dok bi slike u boji iste dimenzije imale oblik 200x320x3 (za 3 kanala boja). Za učitavanje slike možete koristiti sljedeći kod: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalno, OpenCV koristi BGR (plavo-zelena-crvena) kodiranje za slike u boji, dok ostatak Python alata koristi tradicionalniji RGB (crveno-zelena-plava). Da bi slika izgledala ispravno, trebate je pretvoriti u RGB prostor boja, bilo zamjenom dimenzija u NumPy nizu ili pozivanjem OpenCV funkcije: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Ista funkcija `cvtColor` može se koristiti za izvođenje drugih transformacija prostora boja, poput pretvaranja slike u crno-bijelu ili u HSV (nijansa-zasićenost-vrijednost) prostor boja. + +OpenCV također možete koristiti za učitavanje videozapisa okvir po okvir - primjer je dan u vježbi [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Obrada slika + +Prije nego što sliku proslijedite neuronskoj mreži, možda ćete htjeti primijeniti nekoliko koraka predobrade. OpenCV može učiniti mnogo toga, uključujući: + +* **Promjenu veličine** slike pomoću `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Zamućivanje** slike pomoću `im = cv2.medianBlur(im,3)` ili `im = cv2.GaussianBlur(im, (3,3), 0)` +* Promjenu **svjetline i kontrasta** slike manipulacijom NumPy nizovima, kako je opisano [u ovoj bilješci na Stackoverflowu](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Korištenje [praga](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) pozivanjem funkcija `cv2.threshold`/`cv2.adaptiveThreshold`, što je često bolje od podešavanja svjetline ili kontrasta. +* Primjenu različitih [transformacija](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) na sliku: + - **[Afine transformacije](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** mogu biti korisne ako trebate kombinirati rotaciju, promjenu veličine i iskrivljenje slike te znate izvorne i odredišne lokacije tri točke na slici. Afine transformacije zadržavaju paralelne linije paralelnima. + - **[Perspektivne transformacije](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** mogu biti korisne kada znate izvorne i odredišne pozicije 4 točke na slici. Na primjer, ako slikate pravokutni dokument pametnim telefonom pod nekim kutom i želite dobiti pravokutnu sliku samog dokumenta. +* Razumijevanje kretanja unutar slike pomoću **[optčkog toka](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Primjeri korištenja računalnog vida + +U našem [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) dajemo neke primjere kada se računalni vid može koristiti za obavljanje specifičnih zadataka: + +* **Predobrada fotografije Brailleove knjige**. Fokusiramo se na to kako možemo koristiti pragove, detekciju obilježja, perspektivne transformacije i manipulacije NumPy nizovima kako bismo odvojili pojedinačne Brailleove simbole za daljnju klasifikaciju neuronskom mrežom. + +![Braille slika](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hr.jpeg) | ![Predobrađena Braille slika](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hr.png) | ![Braille simboli](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hr.png) +----|-----|----- + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcija kretanja u videu pomoću razlike okvira**. Ako je kamera fiksna, tada bi okviri iz videozapisa trebali biti prilično slični. Budući da su okviri predstavljeni kao nizovi, jednostavnim oduzimanjem tih nizova za dva uzastopna okvira dobit ćemo razliku piksela, koja bi trebala biti mala za statične okvire, a postati veća kada postoji značajno kretanje na slici. + +![Slika video okvira i razlike okvira](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hr.png) + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcija kretanja pomoću optičkog toka**. [Optički tok](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) omogućuje nam razumijevanje kako se pojedini pikseli na video okvirima kreću. Postoje dvije vrste optičkog toka: + + - **Gusti optički tok** računa vektorsko polje koje pokazuje za svaki piksel kamo se kreće + - **Rijetki optički tok** temelji se na uzimanju nekih karakterističnih obilježja na slici (npr. rubova) i praćenju njihove putanje od okvira do okvira. + +![Slika optičkog toka](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hr.png) + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Primjeri bilježnica: OpenCV [isprobajte OpenCV u praksi](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Napravimo nekoliko eksperimenata s OpenCV-om istražujući [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## Zaključak + +Ponekad se relativno složeni zadaci poput detekcije kretanja ili detekcije vrhova prstiju mogu riješiti isključivo računalnim vidom. Stoga je vrlo korisno poznavati osnovne tehnike računalnog vida i što biblioteke poput OpenCV-a mogu učiniti. + +## 🚀 Izazov + +Pogledajte [ovaj 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) iz AI showa kako biste saznali više o projektu Cortic Tigers i kako su izgradili rješenje temeljeno na blokovima za demokratizaciju zadataka računalnog vida putem robota. Istražite druge slične projekte koji pomažu novim učenicima da se uključe u ovo područje. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Pregled i samostalno učenje + +Pročitajte više o optičkom toku [u ovom odličnom vodiču](https://learnopencv.com/optical-flow-in-opencv/). + +## [Zadatak](lab/README.md) + +U ovom laboratoriju snimit ćete video s jednostavnim gestama, a vaš cilj je izdvojiti pokrete gore/dolje/lijevo/desno koristeći optički tok. + +Pokret dlana okvir + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/hr/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..2c1737e5 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Otkrivanje pokreta pomoću optičkog toka + +Laboratorijska vježba iz [AI za početnike kurikuluma](https://aka.ms/ai-beginners). + +## Zadatak + +Razmotrite [ovaj video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), u kojem se dlan osobe pomiče lijevo/desno/gore/dolje na stabilnoj pozadini. + +**Vaš cilj** bi bio koristiti optički tok kako biste odredili koji dijelovi videa sadrže pokrete gore/dolje/lijevo/desno. + +**Dodatni izazov** bio bi zapravo pratiti pokret dlana/prsta koristeći ton kože, kao što je opisano [u ovom blogu](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ili [ovdje](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Početna bilježnica + +Započnite laboratorij otvaranjem [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Zaključak + +Ponekad se relativno složeni zadaci poput otkrivanja pokreta ili detekcije vrha prsta mogu riješiti isključivo računalnim vidom. Stoga je vrlo korisno znati što biblioteke poput OpenCV-a mogu učiniti. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/hr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..672b45ba --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Dobro poznate CNN arhitekture + +### VGG-16 + +VGG-16 je mreža koja je postigla 92.7% točnosti u ImageNet top-5 klasifikaciji 2014. godine. Ima sljedeću strukturu slojeva: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hr.jpg) + +Kao što možete vidjeti, VGG slijedi tradicionalnu piramidalnu arhitekturu, koja je niz slojeva konvolucije i pooling-a. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hr.jpg) + +> Slika s [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 je obitelj modela koju je predložio Microsoft Research 2015. godine. Glavna ideja ResNet-a je korištenje **rezidualnih blokova**: + + + +> Slika iz [ovog rada](https://arxiv.org/pdf/1512.03385.pdf) + +Razlog za korištenje identitetskog prijenosa je da sloj predviđa **razliku** između rezultata prethodnog sloja i izlaza rezidualnog bloka - otuda naziv *rezidualni*. Ti blokovi su mnogo lakši za treniranje, i moguće je konstruirati mreže s nekoliko stotina takvih blokova (najčešće varijante su ResNet-52, ResNet-101 i ResNet-152). + +Ovu mrežu možete zamisliti i kao mrežu koja prilagođava svoju složenost datasetu. U početku, kada tek počinjete trenirati mrežu, vrijednosti težina su male, i većina signala prolazi kroz slojeve identitetskog prijenosa. Kako trening napreduje i težine postaju veće, značaj parametara mreže raste, a mreža se prilagođava kako bi osigurala potrebnu izražajnu moć za ispravnu klasifikaciju slika za trening. + +### Google Inception + +Google Inception arhitektura ide korak dalje i gradi svaki sloj mreže kao kombinaciju nekoliko različitih putova: + + + +> Slika s [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Ovdje treba naglasiti ulogu konvolucija 1x1, jer na prvi pogled nemaju smisla. Zašto bismo trebali prolaziti kroz sliku s filterom 1x1? Međutim, treba zapamtiti da konvolucijski filteri također rade s nekoliko dubinskih kanala (izvorno - RGB boje, u kasnijim slojevima - kanali za različite filtere), a konvolucija 1x1 koristi se za miješanje tih ulaznih kanala pomoću različitih težina koje se treniraju. Također se može promatrati kao downsampling (pooling) preko dimenzije kanala. + +Evo [dobrog blog posta](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) o ovoj temi, i [izvornog rada](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet je obitelj modela smanjene veličine, prikladnih za mobilne uređaje. Koristite ih ako imate ograničene resurse i možete žrtvovati malo točnosti. Glavna ideja iza njih je takozvana **depthwise separable convolution**, koja omogućuje predstavljanje konvolucijskih filtera kao kompoziciju prostorne konvolucije i konvolucije 1x1 preko dubinskih kanala. To značajno smanjuje broj parametara, čineći mrežu manjom i lakšom za treniranje s manje podataka. + +Evo [dobrog blog posta o MobileNetu](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Zaključak + +U ovoj jedinici ste naučili glavne koncepte iza neuronskih mreža za računalni vid - konvolucijske mreže. Arhitekture iz stvarnog života koje omogućuju klasifikaciju slika, detekciju objekata, pa čak i generiranje slika, sve se temelje na CNN-ovima, samo s više slojeva i nekim dodatnim trikovima za treniranje. + +## 🚀 Izazov + +U pratećim bilježnicama postoje bilješke na dnu o tome kako postići veću točnost. Napravite nekoliko eksperimenata kako biste vidjeli možete li postići veću točnost. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Pregled i samostalno učenje + +Iako se CNN-ovi najčešće koriste za zadatke računalnog vida, općenito su dobri za izdvajanje uzoraka fiksne veličine. Na primjer, ako se bavimo zvukovima, možda ćemo također htjeti koristiti CNN-ove za traženje specifičnih uzoraka u audio signalu - u tom slučaju filteri bi bili jednodimenzionalni (i taj CNN bi se zvao 1D-CNN). Također, ponekad se koristi 3D-CNN za izdvajanje značajki u višedimenzionalnom prostoru, poput određenih događaja koji se odvijaju na videozapisu - CNN može uhvatiti određene uzorke promjena značajki tijekom vremena. Napravite pregled i samostalno istraživanje o drugim zadacima koji se mogu obaviti pomoću CNN-ova. + +## [Zadatak](lab/README.md) + +U ovom laboratoriju vaš je zadatak klasificirati različite pasmine mačaka i pasa. Ove slike su složenije od MNIST dataset-a, imaju veće dimenzije, i postoji više od 10 klasa. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/hr/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..7d88ef16 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konvolucijske neuronske mreže + +Već smo vidjeli da su neuronske mreže prilično dobre u obradi slika, pa čak i perceptron s jednim slojem može prepoznati rukom pisane znamenke iz MNIST skupa podataka s razumnom točnošću. Međutim, MNIST skup podataka je vrlo specifičan, jer su sve znamenke centrirane unutar slike, što zadatak čini jednostavnijim. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +U stvarnom životu želimo biti sposobni prepoznati objekte na slici bez obzira na njihovu točnu lokaciju unutar slike. Računalni vid razlikuje se od generičke klasifikacije, jer kada pokušavamo pronaći određeni objekt na slici, skeniramo sliku tražeći specifične **uzorke** i njihove kombinacije. Na primjer, kada tražimo mačku, prvo možemo tražiti horizontalne linije koje mogu oblikovati brkove, a zatim određena kombinacija brkova može ukazati na to da je riječ o slici mačke. Relativni položaj i prisutnost određenih uzoraka su važni, a ne njihova točna pozicija na slici. + +Za izdvajanje uzoraka koristit ćemo pojam **konvolucijskih filtera**. Kao što znate, slika je predstavljena 2D-matricom ili 3D-tenzorom s dubinom boje. Primjena filtera znači da uzimamo relativno malu matricu **jezgre filtera**, i za svaki piksel u originalnoj slici izračunavamo ponderirani prosjek s okolnim točkama. To možemo zamisliti kao mali prozor koji klizi preko cijele slike i izračunava prosjek svih piksela prema težinama u matrici jezgre filtera. + +![Filter za vertikalne rubove](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hr.png) | ![Filter za horizontalne rubove](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hr.png) +----|---- + +> Slika: Dmitry Soshnikov + +Na primjer, ako primijenimo 3x3 filter za vertikalne rubove i filter za horizontalne rubove na znamenke iz MNIST skupa podataka, možemo dobiti istaknute dijelove (npr. visoke vrijednosti) gdje postoje vertikalni i horizontalni rubovi u našoj originalnoj slici. Tako se ta dva filtera mogu koristiti za "traženje" rubova. Slično tome, možemo dizajnirati različite filtere za traženje drugih osnovnih uzoraka: + +> Slika [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Međutim, dok možemo ručno dizajnirati filtere za izdvajanje nekih uzoraka, možemo također dizajnirati mrežu na način da ona automatski uči uzorke. To je jedna od glavnih ideja iza CNN-a. + +## Glavne ideje iza CNN-a + +Način na koji CNN funkcionira temelji se na sljedećim važnim idejama: + +* Konvolucijski filteri mogu izdvajati uzorke +* Možemo dizajnirati mrežu na način da se filteri automatski treniraju +* Isti pristup možemo koristiti za pronalaženje uzoraka u visokim razinama značajki, ne samo u originalnoj slici. Tako ekstrakcija značajki u CNN-u radi na hijerarhiji značajki, počevši od kombinacija piksela niske razine, pa sve do kombinacija dijelova slike na višim razinama. + +![Hijerarhijska ekstrakcija značajki](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hr.png) + +> Slika iz [rada Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), temeljenog na [njihovom istraživanju](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Vježbe: Konvolucijske neuronske mreže + +Nastavimo istraživati kako konvolucijske neuronske mreže funkcioniraju i kako možemo postići trenirajuće filtere, radeći kroz odgovarajuće bilježnice: + +* [Konvolucijske neuronske mreže - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolucijske neuronske mreže - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Piramidalna arhitektura + +Većina CNN-a koji se koriste za obradu slika slijedi tzv. piramidalnu arhitekturu. Prvi konvolucijski sloj primijenjen na originalne slike obično ima relativno mali broj filtera (8-16), koji odgovaraju različitim kombinacijama piksela, poput horizontalnih/vertikalnih linija ili poteza. Na sljedećoj razini smanjujemo prostornu dimenziju mreže i povećavamo broj filtera, što odgovara većem broju mogućih kombinacija jednostavnih značajki. Sa svakim slojem, kako se približavamo završnom klasifikatoru, prostorne dimenzije slike se smanjuju, a broj filtera raste. + +Kao primjer, pogledajmo arhitekturu VGG-16, mreže koja je postigla 92.7% točnosti u top-5 klasifikaciji ImageNet-a 2014. godine: + +![Slojevi ImageNet-a](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hr.jpg) + +![Piramida ImageNet-a](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hr.jpg) + +> Slika s [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) + +## Najpoznatije CNN arhitekture + +[Nastavite svoje učenje o najpoznatijim CNN arhitekturama](CNN_Architectures.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/hr/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..a2761421 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Klasifikacija lica kućnih ljubimaca + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Zamislite da trebate razviti aplikaciju za vrtić za kućne ljubimce kako biste katalogizirali sve ljubimce. Jedna od sjajnih značajki takve aplikacije bila bi automatsko prepoznavanje pasmine s fotografije. To se može uspješno postići korištenjem neuronskih mreža. + +Potrebno je trenirati konvolucijsku neuronsku mrežu za klasifikaciju različitih pasmina mačaka i pasa koristeći **Pet Faces** dataset. + +## Dataset + +Koristit ćemo **Pet Faces** dataset, izveden iz [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) dataset-a za kućne ljubimce. Sadrži 35 različitih pasmina pasa i mačaka. + +![Dataset s kojim ćemo raditi](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hr.png) + +Za preuzimanje dataset-a, koristite ovaj isječak koda: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Početak rada s bilježnicom + +Započnite laboratorij otvaranjem [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Zaključak + +Riješili ste relativno složen problem klasifikacije slika od nule! Bilo je prilično mnogo klasa, a ipak ste uspjeli postići razumnu točnost! Također ima smisla mjeriti top-k točnost, jer je lako zamijeniti neke klase koje čak ni ljudima nisu jasno različite. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..6d165c35 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Predtrenirane mreže i prijenos učenja + +Treniranje CNN-a može zahtijevati puno vremena i veliku količinu podataka. Međutim, većina vremena troši se na učenje najboljih niskorazinskih filtera koje mreža može koristiti za izdvajanje uzoraka iz slika. Postavlja se prirodno pitanje - možemo li koristiti neuronsku mrežu treniranu na jednom skupu podataka i prilagoditi je za klasifikaciju različitih slika bez potrebe za potpunim procesom treniranja? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Ovaj pristup naziva se **prijenos učenja**, jer prenosimo dio znanja iz jednog modela neuronske mreže u drugi. Kod prijenosa učenja obično počinjemo s predtreniranim modelom, koji je treniran na nekom velikom skupu slika, poput **ImageNet**. Ti modeli već dobro obavljaju posao izdvajanja različitih značajki iz generičkih slika, a u mnogim slučajevima samo izgradnja klasifikatora na temelju tih izdvojenih značajki može dati dobre rezultate. + +> ✅ Prijenos učenja je pojam koji se koristi i u drugim akademskim područjima, poput obrazovanja. Odnosi se na proces primjene znanja iz jedne domene u drugu. + +## Predtrenirani modeli kao ekstraktori značajki + +Konvolucijske mreže o kojima smo govorili u prethodnom dijelu sadržavale su niz slojeva, od kojih je svaki trebao izdvojiti određene značajke iz slike, počevši od niskorazinskih kombinacija piksela (poput horizontalnih/vertikalnih linija ili poteza), pa sve do višerazinskih kombinacija značajki koje odgovaraju stvarima poput oka ili plamena. Ako treniramo CNN na dovoljno velikom skupu generičkih i raznolikih slika, mreža bi trebala naučiti izdvajati te zajedničke značajke. + +I Keras i PyTorch sadrže funkcije za jednostavno učitavanje predtrenirane težine neuronske mreže za neke uobičajene arhitekture, od kojih je većina trenirana na slikama iz ImageNet-a. Najčešće korištene opisane su na stranici [CNN Architectures](../07-ConvNets/CNN_Architectures.md) iz prethodne lekcije. Konkretno, možete razmotriti korištenje jedne od sljedećih: + +* **VGG-16/VGG-19** su relativno jednostavni modeli koji i dalje daju dobru točnost. Često je korištenje VGG-a kao prvog pokušaja dobar izbor za provjeru kako prijenos učenja funkcionira. +* **ResNet** je obitelj modela koju je predložio Microsoft Research 2015. godine. Imaju više slojeva i stoga zahtijevaju više resursa. +* **MobileNet** je obitelj modela smanjene veličine, prikladna za mobilne uređaje. Koristite ih ako imate ograničene resurse i možete žrtvovati malo točnosti. + +Evo primjera značajki izdvojenih iz slike mačke pomoću VGG-16 mreže: + +![Značajke izdvojene pomoću VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hr.png) + +## Skup podataka Mačke vs. Psi + +U ovom primjeru koristit ćemo skup podataka [Mačke i Psi](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), koji je vrlo blizak stvarnom scenariju klasifikacije slika. + +## ✍️ Vježba: Prijenos učenja + +Pogledajmo prijenos učenja u praksi u pripadajućim bilježnicama: + +* [Prijenos učenja - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Prijenos učenja - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Vizualizacija idealne mačke + +Predtrenirana neuronska mreža sadrži različite uzorke unutar svog *mozga*, uključujući pojmove **idealne mačke** (kao i idealnog psa, idealne zebre itd.). Bilo bi zanimljivo nekako **vizualizirati ovu sliku**. Međutim, to nije jednostavno, jer su uzorci raspoređeni po težinama mreže i organizirani u hijerarhijsku strukturu. + +Jedan pristup koji možemo koristiti je započeti s nasumičnom slikom, a zatim pokušati koristiti tehniku **optimizacije gradijentnog spuštanja** kako bismo prilagodili tu sliku na način da mreža počne misliti da je to mačka. + +![Petlja optimizacije slike](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hr.png) + +Međutim, ako to učinimo, dobit ćemo nešto vrlo slično nasumičnom šumu. To je zato što *postoji mnogo načina da mreža pomisli da je ulazna slika mačka*, uključujući neke koji vizualno nemaju smisla. Iako te slike sadrže mnogo uzoraka tipičnih za mačku, ništa ih ne ograničava da budu vizualno prepoznatljive. + +Kako bismo poboljšali rezultat, možemo dodati još jedan član u funkciju gubitka, koji se naziva **gubitak varijacije**. To je metrika koja pokazuje koliko su slični susjedni pikseli slike. Minimiziranje gubitka varijacije čini sliku glađom i uklanja šum - otkrivajući tako vizualno privlačnije uzorke. Evo primjera takvih "idealnih" slika koje se klasificiraju kao mačka i zebra s velikom vjerojatnošću: + +![Idealna mačka](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hr.png) | ![Idealna zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hr.png) +-----|----- +*Idealna mačka* | *Idealna zebra* + +Sličan pristup može se koristiti za provođenje takozvanih **adversarijalnih napada** na neuronsku mrežu. Pretpostavimo da želimo zavarati neuronsku mrežu i učiniti da pas izgleda kao mačka. Ako uzmemo sliku psa, koju mreža prepoznaje kao psa, možemo je malo prilagoditi pomoću optimizacije gradijentnog spuštanja dok mreža ne počne klasificirati sliku kao mačku: + +![Slika psa](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hr.png) | ![Slika psa klasificirana kao mačka](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hr.png) +-----|----- +*Izvorna slika psa* | *Slika psa klasificirana kao mačka* + +Pogledajte kod za reprodukciju gore navedenih rezultata u sljedećoj bilježnici: + +* [Idealna i adversarijalna mačka - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Zaključak + +Koristeći prijenos učenja, možete brzo sastaviti klasifikator za zadatak klasifikacije prilagođenih objekata i postići visoku točnost. Možete vidjeti da složeniji zadaci koje sada rješavamo zahtijevaju veću računalnu snagu i ne mogu se lako riješiti na CPU-u. U sljedećoj jedinici pokušat ćemo koristiti lakšu implementaciju za treniranje istog modela koristeći manje računalne resurse, što rezultira samo malo nižom točnošću. + +## 🚀 Izazov + +U pripadajućim bilježnicama postoje bilješke na dnu o tome kako prijenos znanja najbolje funkcionira s donekle sličnim podacima za treniranje (možda nova vrsta životinje). Eksperimentirajte s potpuno novim vrstama slika kako biste vidjeli koliko dobro ili loše vaši modeli prijenosa znanja funkcioniraju. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Pregled i samostalno učenje + +Pročitajte [TrainingTricks.md](TrainingTricks.md) kako biste produbili svoje znanje o nekim drugim načinima treniranja modela. + +## [Zadatak](lab/README.md) + +U ovom laboratoriju koristit ćemo stvarni [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) skup podataka o kućnim ljubimcima s 35 pasmina mačaka i pasa te ćemo izgraditi klasifikator prijenosa učenja. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..7d6f6f2e --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Trikovi za treniranje dubokog učenja + +Kako neuronske mreže postaju dublje, proces njihovog treniranja postaje sve izazovniji. Jedan od glavnih problema su takozvani [nestajući gradijenti](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ili [eksplodirajući gradijenti](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Ovaj članak](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) pruža dobar uvod u te probleme. + +Kako bismo učinili treniranje dubokih mreža učinkovitijim, postoji nekoliko tehnika koje možemo koristiti. + +## Održavanje vrijednosti u razumnom intervalu + +Kako bi numerički proračuni bili stabilniji, želimo osigurati da sve vrijednosti unutar naše neuronske mreže budu u razumnom rasponu, obično [-1..1] ili [0..1]. To nije strogi zahtjev, ali priroda proračuna s pomičnim zarezom je takva da se vrijednosti različitih veličina ne mogu precizno manipulirati zajedno. Na primjer, ako zbrojimo 10-10 i 1010, vjerojatno ćemo dobiti 1010, jer će manja vrijednost biti "pretvorena" u isti red veličine kao veća, čime će se mantisa izgubiti. + +Većina funkcija aktivacije ima nelinearnosti oko [-1..1], pa ima smisla skalirati sve ulazne podatke na interval [-1..1] ili [0..1]. + +## Inicijalizacija težina + +Idealno, želimo da vrijednosti ostanu u istom rasponu nakon prolaska kroz slojeve mreže. Stoga je važno inicijalizirati težine na način koji očuva distribuciju vrijednosti. + +Normalna distribucija **N(0,1)** nije dobra ideja, jer ako imamo *n* ulaza, standardna devijacija izlaza bila bi *n*, a vrijednosti bi vjerojatno izašle iz intervala [0..1]. + +Sljedeće inicijalizacije često se koriste: + + * Uniformna distribucija -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** jamči da za ulaze sa srednjom vrijednošću nula i standardnom devijacijom 1 ista srednja vrijednost/standardna devijacija ostaje + * **N(0,√2/(n_in+n_out))** -- takozvana **Xavier inicijalizacija** (`glorot`), pomaže održati signale u rasponu tijekom propagacije naprijed i unatrag + +## Normalizacija po batchu + +Čak i uz pravilnu inicijalizaciju težina, težine tijekom treniranja mogu postati proizvoljno velike ili male, čime signali izlaze iz odgovarajućeg raspona. Signale možemo vratiti u raspon korištenjem jedne od tehnika **normalizacije**. Iako ih postoji nekoliko (normalizacija težina, normalizacija sloja), najčešće se koristi normalizacija po batchu. + +Ideja **normalizacije po batchu** je uzeti u obzir sve vrijednosti unutar minibatcha i provesti normalizaciju (tj. oduzeti srednju vrijednost i podijeliti sa standardnom devijacijom) na temelju tih vrijednosti. Implementira se kao sloj mreže koji provodi ovu normalizaciju nakon primjene težina, ali prije funkcije aktivacije. Kao rezultat, vjerojatno ćemo postići veću konačnu točnost i brže treniranje. + +Evo [originalnog rada](https://arxiv.org/pdf/1502.03167.pdf) o normalizaciji po batchu, [objašnjenja na Wikipediji](https://en.wikipedia.org/wiki/Batch_normalization), i [dobrog uvodnog blog posta](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (i jednog [na ruskom](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** je zanimljiva tehnika koja uklanja određeni postotak slučajnih neurona tijekom treniranja. Također se implementira kao sloj s jednim parametrom (postotak neurona koji se uklanjaju, obično 10%-50%), a tijekom treniranja poništava slučajne elemente ulaznog vektora prije nego što ih proslijedi sljedećem sloju. + +Iako ovo može zvučati kao čudna ideja, možete vidjeti učinak dropouta na treniranje klasifikatora MNIST znamenki u bilježnici [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Ubrzava treniranje i omogućuje postizanje veće točnosti u manje epoha treniranja. + +Ovaj učinak može se objasniti na nekoliko načina: + + * Može se smatrati slučajnim šok faktorom za model, koji ga izvlači iz lokalnog minimuma + * Može se smatrati *implicitnim prosjekom modela*, jer možemo reći da tijekom dropouta treniramo malo drugačiji model + +> *Neki ljudi kažu da kada pijana osoba pokušava nešto naučiti, bolje će to zapamtiti sljedećeg jutra u usporedbi s trijeznom osobom, jer mozak s nekim nefunkcionalnim neuronima pokušava bolje prilagoditi kako bi shvatio značenje. Nikada nismo testirali je li to istina ili ne.* + +## Sprječavanje overfittinga + +Jedan od vrlo važnih aspekata dubokog učenja je sposobnost sprječavanja [overfittinga](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Iako može biti primamljivo koristiti vrlo moćan model neuronske mreže, uvijek bismo trebali balansirati broj parametara modela s brojem uzoraka za treniranje. + +> Pobrinite se da razumijete koncept [overfittinga](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) koji smo ranije objasnili! + +Postoji nekoliko načina za sprječavanje overfittinga: + + * Rano zaustavljanje -- kontinuirano praćenje pogreške na validacijskom skupu i zaustavljanje treniranja kada pogreška validacije počne rasti. + * Eksplicitno smanjenje težina / Regularizacija -- dodavanje dodatne kazne funkciji gubitka za visoke apsolutne vrijednosti težina, što sprječava model da daje vrlo nestabilne rezultate + * Prosjek modela -- treniranje nekoliko modela i zatim prosječno izračunavanje rezultata. Ovo pomaže minimizirati varijancu. + * Dropout (Implicitni prosjek modela) + +## Optimizatori / Algoritmi treniranja + +Još jedan važan aspekt treniranja je odabir dobrog algoritma treniranja. Iako je klasični **gradijentni spust** razumna opcija, ponekad može biti prespor ili rezultirati drugim problemima. + +U dubokom učenju koristimo **Stohastički gradijentni spust** (SGD), koji je gradijentni spust primijenjen na minibatcheve, nasumično odabrane iz skupa za treniranje. Težine se prilagođavaju pomoću ove formule: + +wt+1 = wt - η∇ℒ + +### Momentum + +U **momentum SGD-u**, zadržavamo dio gradijenta iz prethodnih koraka. To je slično kao kada se krećemo negdje s inercijom, a primimo udarac u drugom smjeru, naša putanja se ne mijenja odmah, već zadržava dio originalnog kretanja. Ovdje uvodimo još jedan vektor v koji predstavlja *brzinu*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Ovdje parametar γ označava u kojoj mjeri uzimamo inerciju u obzir: γ=0 odgovara klasičnom SGD-u; γ=1 je čista jednadžba kretanja. + +### Adam, Adagrad, itd. + +Budući da u svakom sloju množimo signale s nekom matricom Wi, ovisno o ||Wi||, gradijent može ili nestati i biti blizu 0, ili rasti neograničeno. To je suština problema eksplodirajućih/nestajućih gradijenata. + +Jedno od rješenja ovog problema je koristiti samo smjer gradijenta u jednadžbi i ignorirati apsolutnu vrijednost, tj. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), gdje ||∇ℒ|| = √∑(∇ℒ)2 + +Ovaj algoritam se zove **Adagrad**. Ostali algoritmi koji koriste istu ideju: **RMSProp**, **Adam** + +> **Adam** se smatra vrlo učinkovitim algoritmom za mnoge primjene, pa ako niste sigurni koji koristiti - koristite Adam. + +### Rezanje gradijenta + +Rezanje gradijenta je proširenje gore navedene ideje. Kada je ||∇ℒ|| ≤ θ, uzimamo originalni gradijent u optimizaciji težina, a kada je ||∇ℒ|| > θ - dijelimo gradijent njegovom normom. Ovdje je θ parametar, u većini slučajeva možemo uzeti θ=1 ili θ=10. + +### Smanjenje stope učenja + +Uspjeh treniranja često ovisi o parametru stope učenja η. Logično je pretpostaviti da veće vrijednosti η rezultiraju bržim treniranjem, što je nešto što obično želimo na početku treniranja, a zatim manje vrijednosti η omogućuju fino podešavanje mreže. Stoga, u većini slučajeva želimo smanjiti η tijekom procesa treniranja. + +To se može učiniti množenjem η s nekim brojem (npr. 0.98) nakon svake epohe treniranja, ili korištenjem složenijeg **rasporeda stope učenja**. + +## Različite arhitekture mreža + +Odabir prave arhitekture mreže za vaš problem može biti izazovan. Obično bismo odabrali arhitekturu koja se pokazala učinkovitom za naš specifični zadatak (ili sličan). Evo [dobrog pregleda](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) arhitektura neuronskih mreža za računalni vid. + +> Važno je odabrati arhitekturu koja će biti dovoljno moćna za broj uzoraka za treniranje koje imamo. Odabir previše moćnog modela može rezultirati [overfittingom](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Drugi dobar način bio bi korištenje arhitekture koja će se automatski prilagoditi potrebnoj složenosti. Do određene mjere, **ResNet** arhitektura i **Inception** su samoprilagodljive. [Više o arhitekturama za računalni vid](../07-ConvNets/CNN_Architectures.md). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..16db944c --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Klasifikacija Oxford kućnih ljubimaca koristeći prijenosno učenje + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Zamislite da trebate razviti aplikaciju za vrtić za kućne ljubimce kako biste katalogizirali sve ljubimce. Jedna od sjajnih značajki takve aplikacije bila bi automatsko prepoznavanje pasmine iz fotografije. U ovom zadatku koristit ćemo prijenosno učenje za klasifikaciju stvarnih slika kućnih ljubimaca iz [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) skupa podataka o kućnim ljubimcima. + +## Skup podataka + +Koristit ćemo originalni skup podataka [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), koji sadrži 35 različitih pasmina pasa i mačaka. + +Za preuzimanje skupa podataka, koristite ovaj isječak koda: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Početak rada s bilježnicom + +Započnite laboratorij otvaranjem [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Zaključak + +Prijenosno učenje i unaprijed trenirane mreže omogućuju nam relativno jednostavno rješavanje problema klasifikacije slika iz stvarnog svijeta. Međutim, unaprijed trenirane mreže dobro funkcioniraju na slikama slične vrste, a ako počnemo klasificirati vrlo različite slike (npr. medicinske slike), vjerojatno ćemo dobiti znatno lošije rezultate. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/hr/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..1aa46fae --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoenkoderi + +Prilikom treniranja CNN-ova, jedan od problema je što nam treba puno označenih podataka. U slučaju klasifikacije slika, moramo razdvojiti slike u različite klase, što zahtijeva ručni rad. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Međutim, možda bismo željeli koristiti sirove (neoznačene) podatke za treniranje CNN ekstraktora značajki, što se naziva **samostalno učenje**. Umjesto oznaka, koristit ćemo slike za treniranje kao ulaz i izlaz mreže. Glavna ideja **autoenkodera** je da imamo **enkodersku mrežu** koja pretvara ulaznu sliku u neki **latentni prostor** (obično je to vektor manje dimenzije), a zatim **dekodersku mrežu**, čiji je cilj rekonstruirati izvornu sliku. + +> ✅ [Autoenkoder](https://wikipedia.org/wiki/Autoencoder) je "vrsta umjetne neuronske mreže koja se koristi za učenje učinkovitih kodiranja neoznačenih podataka." + +Budući da treniramo autoenkoder kako bi uhvatio što više informacija iz izvorne slike za točnu rekonstrukciju, mreža pokušava pronaći najbolju **ugradnju** ulaznih slika kako bi uhvatila njihovo značenje. + +![Dijagram Autoenkodera](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hr.jpg) + +> Slika s [Keras bloga](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenariji za korištenje autoenkodera + +Iako rekonstrukcija izvornih slika sama po sebi možda ne izgleda korisna, postoje neki scenariji u kojima su autoenkoderi posebno korisni: + +* **Smanjenje dimenzije slika za vizualizaciju** ili **treniranje ugrađivanja slika**. Autoenkoderi obično daju bolje rezultate od PCA jer uzimaju u obzir prostornu prirodu slika i hijerarhijske značajke. +* **Uklanjanje šuma**, tj. uklanjanje šuma sa slike. Budući da šum nosi puno beskorisnih informacija, autoenkoder ne može sve to uklopiti u relativno mali latentni prostor, pa hvata samo važne dijelove slike. Prilikom treniranja za uklanjanje šuma, počinjemo s izvornim slikama i koristimo slike s umjetno dodanim šumom kao ulaz za autoenkoder. +* **Super-rezolucija**, povećanje rezolucije slike. Počinjemo s visokorezolucijskim slikama i koristimo slike niže rezolucije kao ulaz za autoenkoder. +* **Generativni modeli**. Nakon što istreniramo autoenkoder, dekoderski dio može se koristiti za stvaranje novih objekata počevši od slučajnih latentnih vektora. + +## Varijacijski autoenkoderi (VAE) + +Tradicionalni autoenkoderi na neki način smanjuju dimenziju ulaznih podataka, otkrivajući važne značajke ulaznih slika. Međutim, latentni vektori često nemaju puno smisla. Drugim riječima, uzimajući MNIST dataset kao primjer, nije lako odrediti koji brojevi odgovaraju različitim latentnim vektorima, jer bliski latentni vektori ne moraju nužno odgovarati istim brojevima. + +S druge strane, za treniranje *generativnih* modela bolje je imati neko razumijevanje latentnog prostora. Ova ideja vodi nas do **varijacijskog autoenkodera** (VAE). + +VAE je autoenkoder koji uči predvidjeti *statističku distribuciju* latentnih parametara, tzv. **latentnu distribuciju**. Na primjer, možemo željeti da latentni vektori budu normalno distribuirani s nekom sredinom zmean i standardnom devijacijom zsigma (i sredina i standardna devijacija su vektori neke dimenzije d). Enkoder u VAE-u uči predvidjeti te parametre, a zatim dekoder uzima slučajni vektor iz te distribucije za rekonstrukciju objekta. + +Ukratko: + + * Iz ulaznog vektora predviđamo `z_mean` i `z_log_sigma` (umjesto da predviđamo standardnu devijaciju, predviđamo njezin logaritam) + * Uzorkujemo vektor `sample` iz distribucije N(zmean,exp(zlog\_sigma)) + * Dekoder pokušava dekodirati izvornu sliku koristeći `sample` kao ulazni vektor + + + +> Slika iz [ovog blog posta](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) autora Isaaka Dykemana + +Varijacijski autoenkoderi koriste složenu funkciju gubitka koja se sastoji od dva dijela: + +* **Gubitak rekonstrukcije** je funkcija gubitka koja pokazuje koliko je rekonstruirana slika bliska ciljanoj slici (može biti srednja kvadratna pogreška, ili MSE). To je ista funkcija gubitka kao kod običnih autoenkodera. +* **KL gubitak**, koji osigurava da distribucija latentnih varijabli ostane bliska normalnoj distribuciji. Temelji se na konceptu [Kullback-Leiblerove divergencije](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - metričke mjere sličnosti između dvije statističke distribucije. + +Jedna važna prednost VAE-a je što omogućuju relativno jednostavno generiranje novih slika, jer znamo iz koje distribucije uzorkovati latentne vektore. Na primjer, ako treniramo VAE s 2D latentnim vektorom na MNIST-u, možemo zatim mijenjati komponente latentnog vektora kako bismo dobili različite brojeve: + +vaemnist + +> Slika autora [Dmitryja Soshnikova](http://soshnikov.com) + +Primijetite kako se slike stapaju jedna u drugu dok počinjemo dobivati latentne vektore iz različitih dijelova latentnog prostora parametara. Također možemo vizualizirati ovaj prostor u 2D: + +vaemnist cluster + +> Slika autora [Dmitryja Soshnikova](http://soshnikov.com) + +## ✍️ Vježbe: Autoenkoderi + +Saznajte više o autoenkoderima u ovim odgovarajućim bilježnicama: + +* [Autoenkoderi u TensorFlowu](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoenkoderi u PyTorchu](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Svojstva autoenkodera + +* **Specifični za podatke** - dobro rade samo s vrstom slika na kojima su trenirani. Na primjer, ako treniramo mrežu za super-rezoluciju na cvijeću, neće dobro raditi na portretima. To je zato što mreža može proizvesti sliku više rezolucije koristeći fine detalje iz značajki naučenih iz skupa podataka za treniranje. +* **Gubitak informacija** - rekonstruirana slika nije ista kao izvorna slika. Priroda gubitka definirana je *funkcijom gubitka* korištenom tijekom treniranja. +* Radi na **neoznačenim podacima** + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Zaključak + +U ovoj lekciji naučili ste o različitim vrstama autoenkodera dostupnih AI znanstvenicima. Naučili ste kako ih izgraditi i kako ih koristiti za rekonstrukciju slika. Također ste naučili o VAE-u i kako ga koristiti za generiranje novih slika. + +## 🚀 Izazov + +U ovoj lekciji naučili ste o korištenju autoenkodera za slike. Ali oni se također mogu koristiti za glazbu! Pogledajte projekt Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), koji koristi autoenkodere za učenje rekonstrukcije glazbe. Napravite nekoliko [eksperimenata](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) s ovom bibliotekom kako biste vidjeli što možete stvoriti. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Pregled i samostalno učenje + +Za referencu, pročitajte više o autoenkoderima u ovim resursima: + +* [Izgradnja autoenkodera u Kerasu](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blog post na NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Objašnjenje varijacijskih autoenkodera](https://kvfrans.com/variational-autoencoders-explained/) +* [Uvjetni varijacijski autoenkoderi](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Zadatak + +Na kraju [ove bilježnice koristeći TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), pronaći ćete 'zadatak' - koristite ga kao svoj zadatak. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/10-GANs/README.md b/translations/hr/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..9936882c --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generativne suparničke mreže + +U prethodnom dijelu naučili smo o **generativnim modelima**: modelima koji mogu generirati nove slike slične onima iz skupa za treniranje. VAE je bio dobar primjer generativnog modela. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Međutim, ako pokušamo generirati nešto zaista značajno, poput slike visoke rezolucije, s VAE-om, vidjet ćemo da treniranje ne konvergira dobro. Za ovaj slučaj trebali bismo naučiti o drugoj arhitekturi koja je posebno usmjerena na generativne modele - **Generativne suparničke mreže**, ili GAN-ove. + +Glavna ideja GAN-a je imati dvije neuronske mreže koje se treniraju jedna protiv druge: + + + +> Slika od [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Malo vokabulara: +> * **Generator** je mreža koja uzima neki slučajni vektor i kao rezultat proizvodi sliku +> * **Diskriminator** je mreža koja uzima sliku i treba odrediti je li to stvarna slika (iz skupa za treniranje) ili ju je generirao generator. U suštini, to je klasifikator slika. + +### Diskriminator + +Arhitektura diskriminatora ne razlikuje se od obične mreže za klasifikaciju slika. U najjednostavnijem slučaju može biti potpuno povezan klasifikator, ali najvjerojatnije će biti [konvolucijska mreža](../07-ConvNets/README.md). + +> ✅ GAN temeljen na konvolucijskim mrežama naziva se [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +CNN diskriminator sastoji se od sljedećih slojeva: nekoliko konvolucija+poolinga (s smanjenjem prostorne veličine) i jednog ili više potpuno povezanih slojeva za dobivanje "vektora značajki", te konačnog binarnog klasifikatora. + +> ✅ 'Pooling' u ovom kontekstu je tehnika koja smanjuje veličinu slike. "Pooling slojevi smanjuju dimenzije podataka kombiniranjem izlaza klastera neurona u jednom sloju u jedan neuron u sljedećem sloju." - [izvor](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Generator je malo složeniji. Možete ga smatrati obrnutim diskriminatorom. Počevši od latentnog vektora (umjesto vektora značajki), ima potpuno povezani sloj za pretvaranje u potrebnu veličinu/oblik, praćen dekonvolucijama+skaliranjem. Ovo je slično *dekoderu* dijela [autoenkodera](../09-Autoencoders/README.md). + +> ✅ Budući da je konvolucijski sloj implementiran kao linearni filter koji prolazi kroz sliku, dekonvolucija je u suštini slična konvoluciji i može se implementirati koristeći istu logiku sloja. + + + +> Slika od [Dmitry Soshnikov](http://soshnikov.com) + +### Treniranje GAN-a + +GAN-ovi se nazivaju **suparničkim** jer postoji stalna konkurencija između generatora i diskriminatora. Tijekom ove konkurencije, i generator i diskriminator se poboljšavaju, čime mreža uči proizvoditi sve bolje slike. + +Treniranje se odvija u dvije faze: + +* **Treniranje diskriminatora**. Ovaj zadatak je prilično jednostavan: generiramo seriju slika pomoću generatora, označavajući ih s 0, što označava lažnu sliku, i uzimamo seriju slika iz ulaznog skupa podataka (s oznakom 1, stvarna slika). Dobivamo neki *gubitak diskriminatora* i provodimo povratnu propagaciju. +* **Treniranje generatora**. Ovo je malo složenije jer ne znamo očekivani izlaz za generator izravno. Uzimamo cijelu GAN mrežu koja se sastoji od generatora praćenog diskriminatorom, hranimo je nekim slučajnim vektorima i očekujemo da rezultat bude 1 (što odgovara stvarnim slikama). Zatim zamrzavamo parametre diskriminatora (ne želimo da se trenira u ovom koraku) i provodimo povratnu propagaciju. + +Tijekom ovog procesa, gubici generatora i diskriminatora ne opadaju značajno. U idealnoj situaciji, trebali bi oscilirati, što odgovara poboljšanju performansi obje mreže. + +## ✍️ Vježbe: GAN-ovi + +* [GAN Notebook u TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook u PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problemi s treniranjem GAN-ova + +Poznato je da su GAN-ovi posebno teški za treniranje. Evo nekoliko problema: + +* **Kolaps moda**. Ovim pojmom mislimo da generator nauči proizvoditi jednu uspješnu sliku koja zavarava generator, a ne raznolikost različitih slika. +* **Osjetljivost na hiperparametre**. Često možete vidjeti da GAN uopće ne konvergira, a zatim iznenada smanjenje stope učenja dovodi do konvergencije. +* Održavanje **ravnoteže** između generatora i diskriminatora. U mnogim slučajevima gubitak diskriminatora može relativno brzo pasti na nulu, što rezultira time da generator ne može dalje trenirati. Da bismo to prevladali, možemo pokušati postaviti različite stope učenja za generator i diskriminator ili preskočiti treniranje diskriminatora ako je gubitak već prenizak. +* Treniranje za **visoku rezoluciju**. Odražavajući isti problem kao kod autoenkodera, ovaj problem se javlja jer rekonstrukcija previše slojeva konvolucijske mreže dovodi do artefakata. Ovaj problem se obično rješava tzv. **progresivnim rastom**, kada se prvo nekoliko slojeva trenira na slikama niske rezolucije, a zatim se slojevi "otključavaju" ili dodaju. Drugo rješenje bilo bi dodavanje dodatnih veza između slojeva i treniranje nekoliko rezolucija odjednom - pogledajte ovaj [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048) za detalje. + +## Prijenos stila + +GAN-ovi su izvrstan način za generiranje umjetničkih slika. Druga zanimljiva tehnika je tzv. **prijenos stila**, koji uzima jednu **sliku sadržaja** i ponovno je crta u drugačijem stilu, primjenjujući filtre iz **slike stila**. + +Kako to funkcionira: +* Počinjemo s nasumičnom slikom šuma (ili sa slikom sadržaja, ali radi lakšeg razumijevanja lakše je početi s nasumičnim šumom) +* Naš cilj bi bio stvoriti takvu sliku koja bi bila bliska i slici sadržaja i slici stila. To bi se odredilo pomoću dvije funkcije gubitka: + - **Gubitak sadržaja** se računa na temelju značajki koje CNN izvuče na nekim slojevima iz trenutne slike i slike sadržaja + - **Gubitak stila** se računa između trenutne slike i slike stila na pametan način koristeći Gram matrice (više detalja u [primjeru notebooka](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* Kako bismo sliku učinili glađom i uklonili šum, uvodimo i **Gubitak varijacije**, koji računa prosječnu udaljenost između susjednih piksela +* Glavna petlja optimizacije prilagođava trenutnu sliku koristeći gradijentni spust (ili neki drugi algoritam optimizacije) kako bi se minimizirao ukupni gubitak, koji je ponderirani zbroj svih triju gubitaka. + +## ✍️ Primjer: [Prijenos stila](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Zaključak + +U ovoj lekciji naučili ste o GAN-ovima i kako ih trenirati. Također ste naučili o posebnim izazovima s kojima se ovaj tip neuronske mreže može suočiti i nekim strategijama kako ih prevladati. + +## 🚀 Izazov + +Prođite kroz [Style Transfer notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) koristeći vlastite slike. + +## Pregled i samostalno učenje + +Za referencu, pročitajte više o GAN-ovima u ovim resursima: + +* Marco Pasini, [10 Lekcija koje sam naučio trenirajući GAN-ove godinu dana](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 arhitektura koju treba razmotriti +* [Stvaranje generativne umjetnosti koristeći GAN-ove na Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Zadatak + +Ponovno pregledajte jedan od dva notebooka povezana s ovom lekcijom i ponovno trenirajte GAN na vlastitim slikama. Što možete stvoriti? + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..d4ce2b31 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Detekcija objekata + +Modeli za klasifikaciju slika koje smo dosad obrađivali uzimaju sliku i daju kategorijski rezultat, poput klase 'broj' u MNIST problemu. Međutim, u mnogim slučajevima ne želimo samo znati da slika prikazuje objekte - želimo odrediti njihovu točnu lokaciju. Upravo je to svrha **detekcije objekata**. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detekcija objekata](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hr.png) + +> Slika s [YOLO v2 web stranice](https://pjreddie.com/darknet/yolov2/) + +## Naivan pristup detekciji objekata + +Pretpostavimo da želimo pronaći mačku na slici. Vrlo naivan pristup detekciji objekata bio bi sljedeći: + +1. Podijeliti sliku na niz pločica. +2. Provoditi klasifikaciju slike na svakoj pločici. +3. Pločice koje daju dovoljno visoku aktivaciju mogu se smatrati da sadrže traženi objekt. + +![Naivna detekcija objekata](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hr.png) + +> *Slika iz [vježbenice](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Međutim, ovaj pristup je daleko od idealnog jer omogućuje algoritmu da vrlo neprecizno odredi okvir objekta. Za precizniju lokaciju potrebno je provesti neku vrstu **regresije** kako bi se predvidjele koordinate okvira - a za to su potrebni specifični skupovi podataka. + +## Regresija za detekciju objekata + +[Ovaj blog post](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) pruža odličan uvod u detekciju oblika. + +## Skupovi podataka za detekciju objekata + +Možete naići na sljedeće skupove podataka za ovu zadaću: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 klasa +* [COCO](http://cocodataset.org/#home) - Uobičajeni objekti u kontekstu. 80 klasa, okviri i maske za segmentaciju + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hr.jpg) + +## Metrike za detekciju objekata + +### Presjek preko unije (Intersection over Union) + +Dok je za klasifikaciju slika lako izmjeriti koliko dobro algoritam radi, za detekciju objekata moramo izmjeriti i točnost klase, kao i preciznost predviđene lokacije okvira. Za ovo drugo koristimo tzv. **Presjek preko unije** (IoU), koji mjeri koliko se dobro dva okvira (ili dva proizvoljna područja) preklapaju. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hr.png) + +> *Slika 2 iz [ovog izvrsnog blog posta o IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Ideja je jednostavna - podijelimo područje presjeka između dvije figure s područjem njihove unije. Za dva identična područja IoU bi bio 1, dok bi za potpuno nepovezana područja bio 0. Inače će varirati od 0 do 1. Obično uzimamo u obzir samo one okvire za koje je IoU iznad određene vrijednosti. + +### Prosječna preciznost (Average Precision) + +Pretpostavimo da želimo izmjeriti koliko dobro je prepoznata određena klasa objekata $C$. Za mjerenje koristimo metriku **Prosječne preciznosti**, koja se računa na sljedeći način: + +1. Razmotrite krivulju preciznosti i prisjećanja (Precision-Recall) koja pokazuje točnost ovisno o vrijednosti praga detekcije (od 0 do 1). +2. Ovisno o pragu, dobit ćemo više ili manje objekata detektiranih na slici, te različite vrijednosti preciznosti i prisjećanja. +3. Krivulja će izgledati ovako: + + + +> *Slika iz [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Prosječna preciznost za određenu klasu $C$ je područje ispod ove krivulje. Preciznije, os prisjećanja obično se dijeli na 10 dijelova, a preciznost se prosječuje preko svih tih točaka: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP i IoU + +Razmatramo samo one detekcije za koje je IoU iznad određene vrijednosti. Na primjer, u PASCAL VOC skupu podataka obično se pretpostavlja $\mbox{IoU Threshold} = 0.5$, dok se u COCO AP mjeri za različite vrijednosti $\mbox{IoU Threshold}$. + + + +> *Slika iz [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Prosječna preciznost po klasama - mAP + +Glavna metrika za detekciju objekata naziva se **Prosječna preciznost po klasama**, ili **mAP**. To je vrijednost Prosječne preciznosti, prosječna preko svih klasa objekata, a ponekad i preko $\mbox{IoU Threshold}$. Detaljniji opis procesa izračuna **mAP** možete pronaći +[u ovom blog postu](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), kao i [ovdje s primjerima koda](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Različiti pristupi detekciji objekata + +Postoje dvije široke kategorije algoritama za detekciju objekata: + +* **Mreže za predlaganje regija** (R-CNN, Fast R-CNN, Faster R-CNN). Glavna ideja je generirati **regije interesa** (ROI) i provoditi CNN preko njih, tražeći maksimalnu aktivaciju. Ovo je donekle slično naivnom pristupu, osim što se ROI generiraju na pametniji način. Jedan od glavnih nedostataka ovih metoda je što su spore, jer zahtijevaju mnogo prolaza CNN klasifikatora preko slike. +* **Jedan prolaz** (YOLO, SSD, RetinaNet) metode. U tim arhitekturama dizajniramo mrežu da predviđa i klase i ROI u jednom prolazu. + +### R-CNN: CNN baziran na regijama + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) koristi [Selektivno pretraživanje](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) za generiranje hijerarhijske strukture ROI regija, koje se zatim prosljeđuju kroz CNN ekstraktore značajki i SVM klasifikatore za određivanje klase objekta, te linearnu regresiju za određivanje koordinata *okvira*. [Službeni rad](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hr.png) + +> *Slika iz van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hr.png) + +> *Slike iz [ovog bloga](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Brzi R-CNN + +Ovaj pristup je sličan R-CNN-u, ali regije se definiraju nakon što su primijenjeni slojevi konvolucije. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hr.png) + +> Slika iz [službenog rada](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 + +### Brži R-CNN + +Glavna ideja ovog pristupa je korištenje neuronske mreže za predviđanje ROI - tzv. *Mreža za predlaganje regija*. [Rad](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hr.png) + +> Slika iz [službenog rada](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Potpuno konvolucijska mreža bazirana na regijama + +Ovaj algoritam je još brži od Faster R-CNN-a. Glavna ideja je sljedeća: + +1. Ekstrahiramo značajke koristeći ResNet-101. +2. Značajke se obrađuju pomoću **Pozicijski osjetljive mape rezultata**. Svaki objekt iz $C$ klasa dijeli se na $k\times k$ regije, i treniramo mrežu da predviđa dijelove objekata. +3. Za svaki dio iz $k\times k$ regija sve mreže glasaju za klase objekata, a klasa objekta s najviše glasova se odabire. + +![r-fcn slika](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hr.png) + +> Slika iz [službenog rada](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO je algoritam za detekciju u stvarnom vremenu s jednim prolazom. Glavna ideja je sljedeća: + + * Slika se dijeli na $S\times S$ regije. + * Za svaku regiju, **CNN** predviđa $n$ mogućih objekata, koordinate *okvira* i *povjerenje*=*vjerojatnost* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hr.png) + +> Slika iz [službenog rada](https://arxiv.org/abs/1506.02640) + +### Ostali algoritmi + +* RetinaNet: [službeni rad](https://arxiv.org/abs/1708.02002) + - [PyTorch implementacija u Torchvisionu](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras implementacija](https://github.com/fizyr/keras-retinanet) + - [Detekcija objekata s RetinaNetom](https://keras.io/examples/vision/retinanet/) u Keras primjerima +* SSD (Single Shot Detector): [službeni rad](https://arxiv.org/abs/1512.02325) + +## ✍️ Vježbe: Detekcija objekata + +Nastavite učenje u sljedećoj vježbenici: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Zaključak + +U ovoj lekciji ste prošli kroz razne načine na koje se detekcija objekata može ostvariti! + +## 🚀 Izazov + +Pročitajte ove članke i vježbenice o YOLO-u i isprobajte ih sami: + +* [Dobar blog post](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) koji opisuje YOLO + * [Službena stranica](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras implementacija](https://github.com/experiencor/keras-yolo2), [vježbenica korak-po-korak](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras implementacija](https://github.com/experiencor/keras-yolo2), [vježbenica korak-po-korak](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) + +## Pregled i samostalno učenje + +* [Detekcija objekata](https://tjmachinelearning.com/lectures/1718/obj/) autora Nikhila Sardane +* [Dobra usporedba algoritama za detekciju objekata](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Pregled algoritama dubokog učenja za detekciju objekata](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Uvod u osnovne algoritme za detekciju objekata korak-po-korak](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementacija Faster R-CNN-a u Pythonu za detekciju objekata](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Zadatak: Detekcija objekata](lab/README.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..e53f2c29 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Detekcija glava koristeći Hollywood Heads Dataset + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +Brojanje broja ljudi na video nadzornim kamerama važan je zadatak koji nam omogućuje procjenu broja posjetitelja u trgovinama, najprometnijih sati u restoranima itd. Kako bismo riješili ovaj zadatak, potrebno je moći detektirati ljudske glave iz različitih kutova. Za treniranje modela za detekciju objekata koji prepoznaje ljudske glave, možemo koristiti [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## Dataset + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) sadrži 369,846 ljudskih glava označenih u 224,740 filmskih okvira iz holivudskih filmova. Dataset je dostupan u formatu [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), gdje za svaku sliku postoji i XML datoteka s opisom koja izgleda ovako: + +```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 + + +``` + +U ovom datasetu postoji samo jedna klasa objekata `head`, a za svaku glavu dobivate koordinate okvira (bounding box). XML datoteke možete parsirati koristeći Python biblioteke ili koristiti [ovu biblioteku](https://pypi.org/project/pascal-voc/) za direktan rad s PASCAL VOC formatom. + +## Treniranje modela za detekciju objekata + +Model za detekciju objekata možete trenirati na jedan od sljedećih načina: + +* Koristeći [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) i njegov Python API za programatsko treniranje modela u oblaku. Custom Vision neće moći koristiti više od nekoliko stotina slika za treniranje modela, pa ćete možda morati ograničiti dataset. +* Koristeći primjer iz [Keras tutoriala](https://keras.io/examples/vision/retinanet/) za treniranje RetunaNet modela. +* Koristeći [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) ugrađeni modul u torchvision. + +## Zaključak + +Detekcija objekata je zadatak koji se često zahtijeva u industriji. Iako postoje usluge koje se mogu koristiti za detekciju objekata (kao što je [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)), važno je razumjeti kako detekcija objekata funkcionira i biti sposoban trenirati vlastite modele. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/hr/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..21c3a51c --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentacija + +Ranije smo učili o Detekciji objekata, koja nam omogućuje lociranje objekata na slici predviđanjem njihovih *bounding boxova*. Međutim, za neke zadatke ne trebamo samo bounding boxove, već i precizniju lokalizaciju objekata. Taj zadatak zove se **segmentacija**. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentacija se može promatrati kao **klasifikacija piksela**, gdje za **svaki** piksel slike moramo predvidjeti njegovu klasu (*pozadina* je jedna od klasa). Postoje dva glavna algoritma za segmentaciju: + +* **Semantička segmentacija** samo određuje klasu piksela, bez razlikovanja između različitih objekata iste klase. +* **Segmentacija instanci** dijeli klase na različite instance. + +Kod segmentacije instanci, ove ovce su različiti objekti, dok kod semantičke segmentacije sve ovce pripadaju jednoj klasi. + + + +> Slika iz [ovog blog posta](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Postoje različite neuronske arhitekture za segmentaciju, ali sve imaju istu strukturu. Na neki način, slične su autoenkoderu o kojem ste ranije učili, ali umjesto rekonstrukcije originalne slike, naš cilj je rekonstrukcija **maske**. Dakle, mreža za segmentaciju ima sljedeće dijelove: + +* **Encoder** izvlači značajke iz ulazne slike. +* **Decoder** transformira te značajke u **masku slike**, iste veličine i s brojem kanala koji odgovara broju klasa. + + + +> Slika iz [ove publikacije](https://arxiv.org/pdf/2001.05566.pdf) + +Posebno treba spomenuti funkciju gubitka koja se koristi za segmentaciju. Kod klasičnih autoenkodera, potrebno je izmjeriti sličnost između dvije slike, za što se može koristiti srednja kvadratna pogreška (MSE). Kod segmentacije, svaki piksel u ciljnoj maski slike predstavlja broj klase (jednoznačno kodiran duž treće dimenzije), pa je potrebno koristiti funkcije gubitka specifične za klasifikaciju - gubitak unakrsne entropije, prosječan za sve piksele. Ako je maska binarna, koristi se **gubitak binarne unakrsne entropije** (BCE). + +> ✅ Jednoznačno kodiranje je način kodiranja oznake klase u vektor duljine jednake broju klasa. Pogledajte [ovaj članak](https://datagy.io/sklearn-one-hot-encode/) o ovoj tehnici. + +## Segmentacija u medicinskom snimanju + +U ovoj lekciji vidjet ćemo segmentaciju u praksi treniranjem mreže za prepoznavanje ljudskih nevusa (poznatih i kao madeži) na medicinskim slikama. Koristit ćemo PH2 bazu podataka dermoskopskih slika kao izvor slika. Ovaj skup podataka sadrži 200 slika tri klase: tipični nevus, atipični nevus i melanom. Sve slike također sadrže odgovarajuću **masku** koja ocrtava nevus. + +> ✅ Ova tehnika je posebno prikladna za ovu vrstu medicinskog snimanja, ali koje druge stvarne primjene možete zamisliti? + +navi + +> Slika iz PH2 baze podataka + +Trenirat ćemo model za segmentaciju bilo kojeg nevusa od njegove pozadine. + +## ✍️ Vježbe: Semantička segmentacija + +Otvorite dolje navedene bilježnice kako biste saznali više o različitim arhitekturama za semantičku segmentaciju, vježbali rad s njima i vidjeli ih u praksi. + +* [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) + +## Zaključak + +Segmentacija je vrlo moćna tehnika za klasifikaciju slika, koja ide dalje od bounding boxova do klasifikacije na razini piksela. To je tehnika koja se koristi u medicinskom snimanju, među ostalim primjenama. + +## 🚀 Izazov + +Segmentacija tijela samo je jedan od uobičajenih zadataka koje možemo raditi sa slikama ljudi. Drugi važni zadaci uključuju **detekciju kostura** i **detekciju poza**. Isprobajte [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) biblioteku kako biste vidjeli kako se detekcija poza može koristiti. + +## Pregled i samostalno učenje + +Ovaj [Wikipedia članak](https://wikipedia.org/wiki/Image_segmentation) nudi dobar pregled različitih primjena ove tehnike. Saznajte više o poddomenama segmentacije instanci i panoptičke segmentacije u ovom području istraživanja. + +## [Zadatak](lab/README.md) + +U ovom laboratorijskom zadatku pokušajte **segmentaciju ljudskog tijela** koristeći [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) s Kagglea. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/hr/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..c1cfe086 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentacija ljudskog tijela + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +U video produkciji, primjerice u vremenskim prognozama, često je potrebno izrezati sliku osobe sa snimke i postaviti je na drugu pozadinu. To se obično radi pomoću tehnika **chroma key**, gdje se osoba snima ispred jednobojne pozadine koja se kasnije uklanja. U ovoj vježbi ćemo trenirati model neuronske mreže za izrezivanje siluete osobe. + +## Skup podataka + +Koristit ćemo [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) s Kagglea. Preuzmite skup podataka ručno s Kagglea. + +## Početna bilježnica + +Započnite laboratorijsku vježbu otvaranjem [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Zaključak + +Segmentacija tijela samo je jedan od uobičajenih zadataka koje možemo raditi s fotografijama ljudi. Ostali važni zadaci uključuju **detekciju kostura** i **detekciju poza**. Pogledajte biblioteku [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) kako biste vidjeli kako se ti zadaci mogu implementirati. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/4-ComputerVision/README.md b/translations/hr/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..aaeeb792 --- /dev/null +++ b/translations/hr/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Računalni vid + +![Sažetak sadržaja o računalnom vidu u obliku crteža](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hr.png) + +U ovom dijelu ćemo naučiti o: + +* [Uvod u računalni vid i OpenCV](06-IntroCV/README.md) +* [Konvolucijske neuronske mreže](07-ConvNets/README.md) +* [Unaprijed istrenirane mreže i prijenos učenja](08-TransferLearning/README.md) +* [Autoenkoderi](09-Autoencoders/README.md) +* [Generativne suparničke mreže](10-GANs/README.md) +* [Detekcija objekata](11-ObjectDetection/README.md) +* [Semantička segmentacija](12-Segmentation/README.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/13-TextRep/README.md b/translations/hr/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..e6b37821 --- /dev/null +++ b/translations/hr/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Predstavljanje teksta kao tenzora + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Klasifikacija teksta + +U prvom dijelu ovog poglavlja fokusirat ćemo se na zadatak **klasifikacije teksta**. Koristit ćemo [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) dataset, koji sadrži vijesti poput sljedeće: + +* Kategorija: Znanost/Tehnologija +* Naslov: Ky. tvrtka dobila potporu za proučavanje peptida (AP) +* Tekst: AP - Tvrtka koju je osnovao istraživač kemije sa Sveučilišta u Louisvilleu dobila je potporu za razvoj... + +Naš cilj bit će klasificirati vijest u jednu od kategorija na temelju teksta. + +## Predstavljanje teksta + +Ako želimo rješavati zadatke obrade prirodnog jezika (NLP) pomoću neuronskih mreža, trebamo način za predstavljanje teksta kao tenzora. Računala već predstavljaju tekstualne znakove kao brojeve koji se mapiraju na fontove na vašem ekranu koristeći kodiranja poput ASCII ili UTF-8. + +Slika koja prikazuje dijagram mapiranja znaka na ASCII i binarnu reprezentaciju + +> [Izvor slike](https://www.seobility.net/en/wiki/ASCII) + +Kao ljudi, razumijemo što svako slovo **predstavlja** i kako se svi znakovi spajaju u riječi rečenice. Međutim, računala sama po sebi nemaju takvo razumijevanje, i neuronska mreža mora naučiti značenje tijekom treniranja. + +Stoga možemo koristiti različite pristupe za predstavljanje teksta: + +* **Reprezentacija na razini znakova**, gdje tekst predstavljamo tretirajući svaki znak kao broj. Ako imamo *C* različitih znakova u našem tekstualnom korpusu, riječ *Hello* bila bi predstavljena kao 5x*C* tenzor. Svako slovo odgovara stupcu tenzora u one-hot kodiranju. +* **Reprezentacija na razini riječi**, gdje stvaramo **rječnik** svih riječi u našem tekstu, a zatim predstavljamo riječi koristeći one-hot kodiranje. Ovaj pristup je donekle bolji jer svako slovo samo po sebi nema puno značenja, pa korištenjem semantički viših koncepata - riječi - pojednostavljujemo zadatak za neuronsku mrežu. Međutim, zbog velike veličine rječnika, moramo se nositi s visokodimenzionalnim rijetkim tenzorima. + +Bez obzira na način predstavljanja, prvo trebamo pretvoriti tekst u niz **tokena**, pri čemu je jedan token znak, riječ ili ponekad čak dio riječi. Zatim token pretvaramo u broj, obično koristeći **rječnik**, a taj broj može se unijeti u neuronsku mrežu koristeći one-hot kodiranje. + +## N-grami + +U prirodnom jeziku precizno značenje riječi može se odrediti samo u kontekstu. Na primjer, značenja izraza *neuronska mreža* i *ribička mreža* potpuno su različita. Jedan od načina da to uzmemo u obzir je izgradnja modela na parovima riječi, tretirajući parove riječi kao zasebne tokene u rječniku. Na taj način, rečenica *Volim ići na pecanje* bit će predstavljena sljedećim nizom tokena: *Volim ići*, *ići na*, *na pecanje*. Problem s ovim pristupom je što veličina rječnika značajno raste, a kombinacije poput *na pecanje* i *na kupovinu* predstavljene su različitim tokenima, koji ne dijele nikakvu semantičku sličnost unatoč istom glagolu. + +U nekim slučajevima možemo razmotriti korištenje tri-grama -- kombinacija od tri riječi -- također. Ovaj pristup često se naziva **n-grami**. Također, ima smisla koristiti n-grame s reprezentacijom na razini znakova, gdje n-grami otprilike odgovaraju različitim slogovima. + +## Bag-of-Words i TF/IDF + +Kod rješavanja zadataka poput klasifikacije teksta, trebamo biti u mogućnosti predstaviti tekst jednim vektorom fiksne veličine, koji ćemo koristiti kao ulaz za završni gusti klasifikator. Jedan od najjednostavnijih načina za to je kombiniranje svih pojedinačnih reprezentacija riječi, npr. njihovim zbrajanjem. Ako zbrojimo one-hot kodiranja svake riječi, dobit ćemo vektor frekvencija, koji pokazuje koliko se puta svaka riječ pojavljuje u tekstu. Takva reprezentacija teksta naziva se **bag-of-words** (BoW). + + + +> Slika autora + +BoW u osnovi predstavlja koje se riječi pojavljuju u tekstu i u kojim količinama, što može biti dobar pokazatelj o čemu se tekst radi. Na primjer, članak o politici vjerojatno sadrži riječi poput *predsjednik* i *država*, dok bi znanstvena publikacija imala nešto poput *sudarač*, *otkriveno*, itd. Dakle, frekvencije riječi u mnogim slučajevima mogu biti dobar pokazatelj sadržaja teksta. + +Problem s BoW-om je što se određene uobičajene riječi, poput *i*, *je*, itd., pojavljuju u većini tekstova i imaju najviše frekvencije, maskirajući riječi koje su zaista važne. Možemo smanjiti važnost tih riječi uzimajući u obzir učestalost pojavljivanja riječi u cijeloj kolekciji dokumenata. Ovo je glavna ideja iza TF/IDF pristupa, koji je detaljnije obrađen u priloženim bilježnicama ovog poglavlja. + +Međutim, nijedan od ovih pristupa ne može u potpunosti uzeti u obzir **semantiku** teksta. Za to su nam potrebni snažniji modeli neuronskih mreža, o kojima ćemo raspravljati kasnije u ovom poglavlju. + +## ✍️ Vježbe: Predstavljanje teksta + +Nastavite učiti u sljedećim bilježnicama: + +* [Predstavljanje teksta s PyTorchom](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Predstavljanje teksta s TensorFlowom](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Zaključak + +Do sada smo proučavali tehnike koje mogu dodati težinu frekvencijama različitih riječi. Međutim, one nisu sposobne predstaviti značenje ili redoslijed. Kao što je poznati lingvist J. R. Firth rekao 1935. godine: "Potpuno značenje riječi uvijek je kontekstualno, i nijedno proučavanje značenja izvan konteksta ne može se smatrati ozbiljnim." Kasnije u tečaju naučit ćemo kako uhvatiti kontekstualne informacije iz teksta koristeći modele jezika. + +## 🚀 Izazov + +Isprobajte neke druge vježbe koristeći bag-of-words i različite modele podataka. Možete se inspirirati ovim [natjecanjem na Kaggleu](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Pregled i samostalno učenje + +Uvježbajte svoje vještine s tehnikama ugrađivanja teksta i bag-of-words na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste). + +## [Zadatak: Bilježnice](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/13-TextRep/assignment.md b/translations/hr/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..5877c00b --- /dev/null +++ b/translations/hr/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Zadatak: Bilježnice + +Koristeći bilježnice povezane s ovom lekcijom (bilo PyTorch ili TensorFlow verziju), ponovno ih pokrenite koristeći vlastiti skup podataka, možda neki s Kagglea, uz odgovarajuće navođenje izvora. Prepravite bilježnicu kako biste istaknuli vlastite zaključke. Isprobajte neke inovativne skupove podataka koji bi mogli biti iznenađujući, poput [ovog o viđenjima NLO-a](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) od NUFORC-a. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/14-Embeddings/README.md b/translations/hr/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..814275a3 --- /dev/null +++ b/translations/hr/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Ugrađivanja + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Kada smo trenirali klasifikatore temeljene na BoW ili TF/IDF, radili smo s vektorima vreće riječi visoke dimenzionalnosti duljine `vocab_size`, te smo eksplicitno pretvarali vektore s niskodimenzionalnim pozicijskim prikazom u rijetke one-hot prikaze. Međutim, ovaj one-hot prikaz nije memorijski učinkovit. Osim toga, svaka se riječ tretira neovisno o drugima, tj. one-hot kodirani vektori ne izražavaju nikakvu semantičku sličnost između riječi. + +Ideja **ugrađivanja** je predstavljati riječi pomoću vektora niže dimenzionalnosti, koji na neki način odražavaju semantičko značenje riječi. Kasnije ćemo raspraviti kako izgraditi značajna ugrađivanja riječi, ali za sada razmotrimo ugrađivanja kao način smanjenja dimenzionalnosti vektora riječi. + +Dakle, sloj za ugrađivanje uzima riječ kao ulaz i proizvodi izlazni vektor određene `embedding_size`. Na neki način, to je vrlo slično sloju `Linear`, ali umjesto da uzima one-hot kodirani vektor, može uzeti broj riječi kao ulaz, omogućujući nam da izbjegnemo stvaranje velikih one-hot kodiranih vektora. + +Korištenjem sloja za ugrađivanje kao prvog sloja u našoj mreži klasifikatora, možemo prijeći s modela vreće riječi na model **vreće ugrađivanja**, gdje prvo pretvaramo svaku riječ u našem tekstu u odgovarajuće ugrađivanje, a zatim izračunavamo neku agregatnu funkciju nad svim tim ugrađivanjima, poput `sum`, `average` ili `max`. + +![Slika koja prikazuje klasifikator s ugrađivanjem za pet riječi u nizu.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hr.png) + +> Slika autora + +## ✍️ Vježbe: Ugrađivanja + +Nastavite učiti u sljedećim bilježnicama: +* [Ugrađivanja s PyTorchom](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Ugrađivanja s TensorFlowom](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Semantička ugrađivanja: Word2Vec + +Iako je sloj za ugrađivanje naučio mapirati riječi u vektorski prikaz, taj prikaz nije nužno imao mnogo semantičkog značenja. Bilo bi korisno naučiti vektorski prikaz takav da slične riječi ili sinonimi odgovaraju vektorima koji su blizu jedni drugima prema nekoj vektorskoj udaljenosti (npr. Euklidskoj udaljenosti). + +Da bismo to postigli, trebamo unaprijed trenirati naš model za ugrađivanje na velikoj zbirci teksta na specifičan način. Jedan od načina treniranja semantičkih ugrađivanja naziva se [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Temelji se na dvije glavne arhitekture koje se koriste za stvaranje distribuiranog prikaza riječi: + + - **Kontinuirana vreća riječi** (CBoW) — u ovoj arhitekturi treniramo model da predvidi riječ iz okolnog konteksta. S obzirom na ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, cilj modela je predvidjeti $W_0$ iz $(W_{-2},W_{-1},W_1,W_2)$. + - **Kontinuirani skip-gram** je suprotan CBoW-u. Model koristi okolni prozor kontekstualnih riječi za predviđanje trenutne riječi. + +CBoW je brži, dok je skip-gram sporiji, ali bolje predstavlja rijetke riječi. + +![Slika koja prikazuje algoritme CBoW i Skip-Gram za pretvaranje riječi u vektore.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hr.png) + +> Slika iz [ovog rada](https://arxiv.org/pdf/1301.3781.pdf) + +Unaprijed trenirana ugrađivanja Word2Vec (kao i drugi slični modeli, poput GloVe) također se mogu koristiti umjesto sloja za ugrađivanje u neuronskim mrežama. Međutim, moramo se nositi s rječnicima, jer se rječnik korišten za unaprijed treniranje Word2Vec/GloVe vjerojatno razlikuje od rječnika u našem tekstualnom korpusu. Pogledajte gore navedene bilježnice kako biste vidjeli kako se ovaj problem može riješiti. + +## Kontekstualna ugrađivanja + +Jedno ključno ograničenje tradicionalnih unaprijed treniranih prikaza ugrađivanja poput Word2Vec-a je problem razlučivanja značenja riječi. Iako unaprijed trenirana ugrađivanja mogu uhvatiti dio značenja riječi u kontekstu, svako moguće značenje riječi kodirano je u isto ugrađivanje. To može uzrokovati probleme u modelima koji dolaze kasnije, budući da mnoge riječi, poput riječi 'play', imaju različita značenja ovisno o kontekstu u kojem se koriste. + +Na primjer, riječ 'play' u ove dvije različite rečenice ima prilično različita značenja: + +- Otišao sam na **predstavu** u kazalištu. +- John želi **igrati** s prijateljima. + +Unaprijed trenirana ugrađivanja gore predstavljaju oba ova značenja riječi 'play' u istom ugrađivanju. Kako bismo prevladali ovo ograničenje, trebamo izgraditi ugrađivanja temeljena na **jezičnom modelu**, koji je treniran na velikom korpusu teksta i *zna* kako se riječi mogu slagati u različitim kontekstima. Rasprava o kontekstualnim ugrađivanjima izlazi izvan okvira ovog vodiča, ali vratit ćemo im se kada budemo govorili o jezičnim modelima kasnije u tečaju. + +## Zaključak + +U ovoj lekciji otkrili ste kako izgraditi i koristiti slojeve za ugrađivanje u TensorFlowu i Pytorchu kako biste bolje odrazili semantička značenja riječi. + +## 🚀 Izazov + +Word2Vec je korišten za neke zanimljive primjene, uključujući generiranje stihova pjesama i poezije. Pogledajte [ovaj članak](https://www.politetype.com/blog/word2vec-color-poems) koji objašnjava kako je autor koristio Word2Vec za generiranje poezije. Pogledajte i [ovaj video Dana Shiffmanna](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) kako biste otkrili drugačije objašnjenje ove tehnike. Zatim pokušajte primijeniti ove tehnike na vlastiti tekstualni korpus, možda preuzet s Kaggla. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Pregled i samostalno učenje + +Pročitajte ovaj rad o Word2Vec-u: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Zadatak: Bilježnice](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/hr/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..9479b6ca --- /dev/null +++ b/translations/hr/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Zadatak: Bilježnice + +Koristeći bilježnice povezane s ovom lekcijom (bilo PyTorch ili TensorFlow verziju), ponovno ih pokrenite koristeći vlastiti skup podataka, možda neki s Kagglea, uz odgovarajuće navođenje izvora. Prepravite bilježnicu kako biste istaknuli vlastite zaključke. Isprobajte drugačiju vrstu skupa podataka i dokumentirajte svoja otkrića, koristeći tekst poput [ovih stihova Beatlesa](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/hr/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..cc0b1104 --- /dev/null +++ b/translations/hr/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Modeliranje jezika + +Semantičke ugrađene reprezentacije, poput Word2Vec i GloVe, zapravo su prvi korak prema **modeliranju jezika** - stvaranju modela koji na neki način *razumiju* (ili *predstavljaju*) prirodu jezika. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Glavna ideja modeliranja jezika je treniranje na nepodacima bez oznaka na nesuperviziran način. Ovo je važno jer imamo ogromne količine teksta bez oznaka, dok bi količina teksta s oznakama uvijek bila ograničena trudom koji možemo uložiti u označavanje. Najčešće možemo izgraditi modele jezika koji mogu **predvidjeti nedostajuće riječi** u tekstu, jer je lako sakriti nasumičnu riječ u tekstu i koristiti je kao uzorak za treniranje. + +## Treniranje ugrađenih reprezentacija + +U našim prethodnim primjerima koristili smo unaprijed trenirane semantičke ugrađene reprezentacije, ali zanimljivo je vidjeti kako se te reprezentacije mogu trenirati. Postoji nekoliko mogućih ideja koje se mogu koristiti: + +* **N-Gram** modeliranje jezika, gdje predviđamo token gledajući N prethodnih tokena (N-gram) +* **Kontinuirana vreća riječi** (CBoW), gdje predviđamo srednji token $W_0$ u nizu tokena $W_{-N}$, ..., $W_N$. +* **Skip-gram**, gdje predviđamo skup susjednih tokena {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} iz srednjeg tokena $W_0$. + +![slika iz rada o pretvaranju riječi u vektore](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hr.png) + +> Slika iz [ovog rada](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Primjeri bilježnica: Treniranje CBoW modela + +Nastavite učiti kroz sljedeće bilježnice: + +* [Treniranje CBoW Word2Vec s TensorFlowom](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Treniranje CBoW Word2Vec s PyTorchom](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Zaključak + +U prethodnoj lekciji vidjeli smo da ugrađene reprezentacije riječi djeluju poput magije! Sada znamo da treniranje ugrađenih reprezentacija riječi nije vrlo složen zadatak, i trebali bismo biti u mogućnosti trenirati vlastite ugrađene reprezentacije za tekst specifičan za određeno područje ako je potrebno. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Pregled i samostalno učenje + +* [Službeni PyTorch vodič o modeliranju jezika](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Službeni TensorFlow vodič o treniranju Word2Vec modela](https://www.TensorFlow.org/tutorials/text/word2vec). +* Korištenje okvira **gensim** za treniranje najčešće korištenih ugrađenih reprezentacija u nekoliko linija koda opisano je [u ovoj dokumentaciji](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Zadatak: Trenirajte Skip-Gram model](lab/README.md) + +U laboratoriju vas izazivamo da izmijenite kod iz ove lekcije kako biste trenirali Skip-Gram model umjesto CBoW. [Pročitajte detalje](lab/README.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/hr/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..c43dbb82 --- /dev/null +++ b/translations/hr/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Treniranje Skip-Gram modela + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +U ovoj vježbi izazivamo vas da trenirate Word2Vec model koristeći Skip-Gram tehniku. Trenirajte mrežu s ugradnjom (embedding) kako biste predvidjeli susjedne riječi unutar Skip-Gram prozora širine $N$ tokena. Možete koristiti [kod iz ove lekcije](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) i malo ga prilagoditi. + +## Skup podataka + +Slobodno koristite bilo koju knjigu. Mnogo besplatnih tekstova možete pronaći na [Project Gutenberg](https://www.gutenberg.org/), na primjer, ovdje je izravan link na [Alisine pustolovine u zemlji čudesa](https://www.gutenberg.org/files/11/11-0.txt)) Lewisa Carrolla. Ili, možete koristiti Shakespeareove drame, koje možete preuzeti koristeći sljedeći kod: + +```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') +``` + +## Istražujte! + +Ako imate vremena i želite dublje istražiti temu, pokušajte istražiti nekoliko stvari: + +* Kako veličina ugradnje (embedding) utječe na rezultate? +* Kako različiti stilovi teksta utječu na rezultat? +* Uzmite nekoliko vrlo različitih vrsta riječi i njihovih sinonima, dobijte njihove vektorske reprezentacije, primijenite PCA za smanjenje dimenzija na 2 i prikažite ih u 2D prostoru. Vidite li neke uzorke? + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/16-RNN/README.md b/translations/hr/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..1a6cee0c --- /dev/null +++ b/translations/hr/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rekurentne neuronske mreže + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +U prethodnim odjeljcima koristili smo bogate semantičke reprezentacije teksta i jednostavan linearni klasifikator na vrhu ugrađenih vektora. Ova arhitektura hvata agregirano značenje riječi u rečenici, ali ne uzima u obzir **redoslijed** riječi, jer operacija agregacije na vrhu ugrađenih vektora uklanja ovu informaciju iz izvornog teksta. Budući da ovi modeli ne mogu modelirati redoslijed riječi, nisu sposobni riješiti složenije ili dvosmislene zadatke poput generiranja teksta ili odgovaranja na pitanja. + +Kako bismo uhvatili značenje sekvenci teksta, trebamo koristiti drugu arhitekturu neuronske mreže, koja se naziva **rekurentna neuronska mreža** ili RNN. U RNN-u, rečenicu prosljeđujemo kroz mrežu jedan simbol po simbol, a mreža proizvodi neko **stanje**, koje zatim ponovno prosljeđujemo mreži s idućim simbolom. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hr.png) + +> Slika autora + +Za danu ulaznu sekvencu tokena X0,...,Xn, RNN stvara sekvencu blokova neuronske mreže i trenira ovu sekvencu od početka do kraja koristeći unatrag širenje pogreške (backpropagation). Svaki blok mreže uzima par (Xi,Si) kao ulaz i proizvodi Si+1 kao rezultat. Konačno stanje Sn ili (izlaz Yn) ide u linearni klasifikator kako bi proizveo rezultat. Svi blokovi mreže dijele iste težine i treniraju se od početka do kraja koristeći jedan prolaz unatrag širenja pogreške. + +Budući da se vektori stanja S0,...,Sn prosljeđuju kroz mrežu, ona može naučiti sekvencijalne ovisnosti između riječi. Na primjer, kada se riječ *ne* pojavi negdje u sekvenci, mreža može naučiti negirati određene elemente unutar vektora stanja, što rezultira negacijom. + +> ✅ Budući da su težine svih RNN blokova na slici gore zajedničke, ista slika može se prikazati kao jedan blok (desno) s povratnom petljom, koja prosljeđuje izlazno stanje mreže natrag na ulaz. + +## Anatomija RNN ćelije + +Pogledajmo kako je organizirana jednostavna RNN ćelija. Ona prihvaća prethodno stanje Si-1 i trenutni simbol Xi kao ulaze, te mora proizvesti izlazno stanje Si (a ponekad nas zanima i neki drugi izlaz Yi, kao u slučaju generativnih mreža). + +Jednostavna RNN ćelija ima dvije matrice težina unutra: jedna transformira ulazni simbol (nazovimo je W), a druga transformira ulazno stanje (H). U ovom slučaju izlaz mreže se računa kao σ(W×Xi+H×Si-1+b), gdje je σ funkcija aktivacije, a b dodatna pristranost. + +Anatomija RNN ćelije + +> Slika autora + +U mnogim slučajevima, ulazni tokeni prolaze kroz sloj ugrađivanja prije ulaska u RNN kako bi se smanjila dimenzionalnost. U ovom slučaju, ako je dimenzija ulaznih vektora *emb_size*, a vektor stanja *hid_size* - veličina W je *emb_size*×*hid_size*, a veličina H je *hid_size*×*hid_size*. + +## Long Short Term Memory (LSTM) + +Jedan od glavnih problema klasičnih RNN-ova je takozvani problem **nestajućih gradijenata**. Budući da se RNN-ovi treniraju od početka do kraja u jednom prolazu unatrag širenja pogreške, teško je propagirati pogrešku do prvih slojeva mreže, pa mreža ne može naučiti odnose između udaljenih tokena. Jedan od načina za izbjegavanje ovog problema je uvođenje **eksplicitnog upravljanja stanjem** pomoću takozvanih **vrata**. Postoje dvije poznate arhitekture ovog tipa: **Long Short Term Memory** (LSTM) i **Gated Relay Unit** (GRU). + +![Slika koja prikazuje primjer ćelije Long Short Term Memory](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Izvor slike TBD + +LSTM mreža je organizirana na način sličan RNN-u, ali postoje dva stanja koja se prenose iz sloja u sloj: stvarno stanje C i skriveni vektor H. U svakoj jedinici, skriveni vektor Hi se spaja s ulazom Xi, i oni kontroliraju što se događa sa stanjem C putem **vrata**. Svaka vrata su neuronska mreža sa sigmoidnom aktivacijom (izlaz u rasponu [0,1]), koja se može smatrati maskom bitova kada se pomnoži s vektorom stanja. Postoje sljedeća vrata (s lijeva na desno na slici gore): + +* **Vrata zaborava** uzimaju skriveni vektor i određuju koje komponente vektora C trebamo zaboraviti, a koje proslijediti. +* **Vrata ulaza** uzimaju neke informacije iz ulaznog i skrivenog vektora i ubacuju ih u stanje. +* **Vrata izlaza** transformiraju stanje putem linearnog sloja s *tanh* aktivacijom, zatim odabiru neke od njegovih komponenti koristeći skriveni vektor Hi kako bi proizveli novo stanje Ci+1. + +Komponente stanja C mogu se smatrati zastavicama koje se mogu uključiti i isključiti. Na primjer, kada u sekvenci naiđemo na ime *Alice*, možemo pretpostaviti da se odnosi na ženski lik i podići zastavicu u stanju da imamo ženski imenicu u rečenici. Kada dalje naiđemo na frazu *i Tom*, podići ćemo zastavicu da imamo množinsku imenicu. Tako manipulacijom stanjem možemo navodno pratiti gramatička svojstva dijelova rečenice. + +> ✅ Izvrstan resurs za razumijevanje unutarnjeg funkcioniranja LSTM-a je ovaj odličan članak [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Christophera Olaha. + +## Dvosmjerni i višeslojni RNN-ovi + +Razgovarali smo o rekurentnim mrežama koje djeluju u jednom smjeru, od početka sekvence do kraja. To izgleda prirodno, jer podsjeća na način na koji čitamo i slušamo govor. Međutim, budući da u mnogim praktičnim slučajevima imamo nasumičan pristup ulaznoj sekvenci, može imati smisla pokrenuti rekurentni izračun u oba smjera. Takve mreže nazivaju se **dvosmjerni** RNN-ovi. Kada se radi s dvosmjernom mrežom, trebali bismo imati dva skrivena vektora stanja, jedan za svaki smjer. + +Rekurentna mreža, bilo jednosmjerna ili dvosmjerna, hvata određene uzorke unutar sekvence i može ih pohraniti u vektor stanja ili proslijediti u izlaz. Kao i kod konvolucijskih mreža, možemo izgraditi drugi rekurentni sloj na vrhu prvog kako bismo uhvatili uzorke višeg nivoa i izgradili od uzoraka nižeg nivoa koje je izvukao prvi sloj. To nas vodi do pojma **višeslojnog RNN-a** koji se sastoji od dva ili više rekurentnih mreža, gdje se izlaz prethodnog sloja prosljeđuje sljedećem sloju kao ulaz. + +![Slika koja prikazuje višeslojni LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hr.jpg) + +*Slika iz [ovog divnog posta](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) Fernanda Lópeza* + +## ✍️ Vježbe: Ugrađivanja + +Nastavite učiti u sljedećim bilježnicama: + +* [RNN-ovi s PyTorchom](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN-ovi s TensorFlowom](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Zaključak + +U ovoj jedinici vidjeli smo da se RNN-ovi mogu koristiti za klasifikaciju sekvenci, ali zapravo mogu obraditi mnogo više zadataka, poput generiranja teksta, strojnog prevođenja i drugih. Te zadatke ćemo razmotriti u sljedećoj jedinici. + +## 🚀 Izazov + +Pročitajte literaturu o LSTM-ovima i razmotrite njihove primjene: + +- [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) + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Pregled i samostalno učenje + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Christophera Olaha. + +## [Zadatak: Bilježnice](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/16-RNN/assignment.md b/translations/hr/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..895d923d --- /dev/null +++ b/translations/hr/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Zadatak: Bilježnice + +Koristeći bilježnice povezane s ovom lekcijom (bilo PyTorch ili TensorFlow verziju), ponovno ih pokrenite koristeći vlastiti skup podataka, možda jedan s Kagglea, uz odgovarajuće navođenje izvora. Prepravite bilježnicu kako biste istaknuli vlastite zaključke. Isprobajte drugačiju vrstu skupa podataka i dokumentirajte svoja otkrića, koristeći tekst poput [ovog Kaggle natjecateljskog skupa podataka o vremenskim tweetovima](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/hr/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..3c6dbfc1 --- /dev/null +++ b/translations/hr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generativne mreže + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rekurentne neuronske mreže (RNN) i njihove varijante s kontroliranim ćelijama, poput ćelija za dugoročno kratkoročno pamćenje (LSTM) i kontroliranih rekurentnih jedinica (GRU), omogućile su modeliranje jezika jer mogu naučiti redoslijed riječi i pružiti predviđanja za sljedeću riječ u nizu. To nam omogućuje korištenje RNN-a za **generativne zadatke**, poput generiranja običnog teksta, strojnog prevođenja, pa čak i opisivanja slika. + +> ✅ Razmislite o svim situacijama u kojima ste imali koristi od generativnih zadataka, poput dovršavanja teksta dok tipkate. Istražite svoje omiljene aplikacije kako biste vidjeli koriste li RNN-e. + +U arhitekturi RNN-a koju smo raspravili u prethodnoj jedinici, svaka RNN jedinica proizvodila je sljedeće skriveno stanje kao izlaz. Međutim, možemo dodati još jedan izlaz svakoj rekurentnoj jedinici, što bi nam omogućilo da generiramo **niz** (jednak duljini izvornog niza). Štoviše, možemo koristiti RNN jedinice koje ne prihvaćaju ulaz u svakom koraku, već samo uzimaju početni vektor stanja i zatim proizvode niz izlaza. + +To omogućuje različite neuronske arhitekture prikazane na slici ispod: + +![Slika koja prikazuje uobičajene obrasce rekurentnih neuronskih mreža.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hr.jpg) + +> Slika iz blog posta [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) autora [Andrej Karpaty](http://karpathy.github.io/) + +* **Jedan-na-jedan** je tradicionalna neuronska mreža s jednim ulazom i jednim izlazom +* **Jedan-na-više** je generativna arhitektura koja prihvaća jednu ulaznu vrijednost i generira niz izlaznih vrijednosti. Na primjer, ako želimo trenirati mrežu za **opisivanje slika** koja bi proizvela tekstualni opis slike, možemo sliku koristiti kao ulaz, proslijediti je kroz CNN kako bismo dobili skriveno stanje, a zatim rekurentni lanac generira opis riječ po riječ +* **Više-na-jedan** odgovara arhitekturama RNN-a koje smo opisali u prethodnoj jedinici, poput klasifikacije teksta +* **Više-na-više**, ili **niz-na-niz**, odgovara zadacima poput **strojnog prevođenja**, gdje prvo RNN prikuplja sve informacije iz ulaznog niza u skriveno stanje, a drugi RNN lanac razmotava ovo stanje u izlazni niz. + +U ovoj jedinici fokusirat ćemo se na jednostavne generativne modele koji nam pomažu generirati tekst. Radi jednostavnosti, koristit ćemo tokenizaciju na razini znakova. + +Trenirat ćemo ovaj RNN da generira tekst korak po korak. U svakom koraku uzet ćemo niz znakova duljine `nchars` i tražiti od mreže da generira sljedeći izlazni znak za svaki ulazni znak: + +![Slika koja prikazuje primjer generiranja riječi 'HELLO' pomoću RNN-a.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hr.png) + +Tijekom generiranja teksta (tijekom inferencije), započinjemo s nekim **poticajem**, koji se prosljeđuje kroz RNN ćelije kako bi se generiralo njegovo međustanje, a zatim iz tog stanja započinje generiranje. Generiramo jedan znak odjednom, prosljeđujemo stanje i generirani znak sljedećoj RNN ćeliji kako bismo generirali sljedeći znak, sve dok ne generiramo dovoljno znakova. + + + +> Slika autora + +## ✍️ Vježbe: Generativne mreže + +Nastavite učiti u sljedećim bilježnicama: + +* [Generativne mreže s PyTorchom](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generativne mreže s TensorFlowom](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Mekano generiranje teksta i temperatura + +Izlaz svake RNN ćelije je distribucija vjerojatnosti znakova. Ako uvijek uzmemo znak s najvećom vjerojatnošću kao sljedeći znak u generiranom tekstu, tekst često može postati "cikliran" između istih sekvenci znakova iznova i iznova, kao u ovom primjeru: + +``` +today of the second the company and a second the company ... +``` + +Međutim, ako pogledamo distribuciju vjerojatnosti za sljedeći znak, može se dogoditi da razlika između nekoliko najviših vjerojatnosti nije velika, npr. jedan znak može imati vjerojatnost 0.2, drugi - 0.19, itd. Na primjer, kada tražimo sljedeći znak u nizu '*play*', sljedeći znak može jednako dobro biti razmak ili **e** (kao u riječi *player*). + +To nas dovodi do zaključka da nije uvijek "pravedno" odabrati znak s većom vjerojatnošću, jer odabir drugog najvišeg i dalje može dovesti do smislenog teksta. Mudrije je **uzorkovati** znakove iz distribucije vjerojatnosti koju daje izlaz mreže. Također možemo koristiti parametar, **temperaturu**, koji će izravnati distribuciju vjerojatnosti ako želimo dodati više slučajnosti ili je učiniti strmijom ako želimo više slijediti znakove s najvećom vjerojatnošću. + +Istražite kako je ovo mekano generiranje teksta implementirano u bilježnicama povezanima gore. + +## Zaključak + +Iako generiranje teksta može biti korisno samo po sebi, glavne prednosti dolaze iz mogućnosti generiranja teksta pomoću RNN-a iz nekog početnog vektora značajki. Na primjer, generiranje teksta koristi se kao dio strojnog prevođenja (niz-na-niz, u ovom slučaju vektor stanja iz *enkodera* koristi se za generiranje ili *dekodiranje* prevedene poruke) ili generiranja tekstualnog opisa slike (u kojem slučaju vektor značajki dolazi iz CNN ekstraktora). + +## 🚀 Izazov + +Proučite neke lekcije na Microsoft Learn o ovoj temi + +* Generiranje teksta s [PyTorchom](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/6-generative-networks/?WT.mc_id=academic-77998-cacaste)/[TensorFlowom](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/5-generative-networks/?WT.mc_id=academic-77998-cacaste) + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Pregled i samostalno učenje + +Evo nekoliko članaka za proširenje vašeg znanja: + +* Različiti pristupi generiranju teksta s Markovim lancem, LSTM-om i GPT-2: [blog post](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Primjer generiranja teksta u [Keras dokumentaciji](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Zadatak](lab/README.md) + +Vidjeli smo kako generirati tekst znak po znak. U laboratoriju ćete istražiti generiranje teksta na razini riječi. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/hr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..ea8f349c --- /dev/null +++ b/translations/hr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generiranje teksta na razini riječi pomoću RNN-a + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +U ovoj vježbi trebate uzeti bilo koju knjigu i koristiti je kao skup podataka za treniranje generatora teksta na razini riječi. + +## Skup podataka + +Možete koristiti bilo koju knjigu. Puno besplatnih tekstova možete pronaći na [Project Gutenberg](https://www.gutenberg.org/), na primjer, ovdje je direktna poveznica na [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) autora Lewisa Carrolla. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/18-Transformers/README.md b/translations/hr/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..2f5f651a --- /dev/null +++ b/translations/hr/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mehanizmi pažnje i Transformeri + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Jedan od najvažnijih problema u području obrade prirodnog jezika (NLP) je **strojno prevođenje**, ključni zadatak koji stoji iza alata poput Google Prevoditelja. U ovom ćemo se dijelu fokusirati na strojno prevođenje ili, općenitije, na bilo koji zadatak *sekvenca-u-sekvencu* (koji se također naziva **transdukcija rečenica**). + +Kod RNN-ova, sekvenca-u-sekvencu implementira se pomoću dvaju rekurentnih mreža, gdje jedna mreža, **enkoder**, sažima ulaznu sekvencu u skriveno stanje, dok druga mreža, **dekoder**, razvija to skriveno stanje u prevedeni rezultat. Ovaj pristup ima nekoliko problema: + +* Završno stanje enkoderske mreže teško pamti početak rečenice, što uzrokuje lošu kvalitetu modela za duge rečenice. +* Sve riječi u sekvenci imaju isti utjecaj na rezultat. Međutim, u stvarnosti, određene riječi u ulaznoj sekvenci često imaju veći utjecaj na izlazne sekvence od drugih. + +**Mehanizmi pažnje** omogućuju ponderiranje kontekstualnog utjecaja svakog ulaznog vektora na svaku izlaznu predikciju RNN-a. To se postiže stvaranjem prečaca između međustanja ulaznog RNN-a i izlaznog RNN-a. Na taj način, prilikom generiranja izlaznog simbola yt, uzimamo u obzir sva skrivena stanja ulaza hi, s različitim težinskim koeficijentima αt,i. + +![Slika koja prikazuje enkoder/dekoder model s aditivnim slojem pažnje](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hr.png) + +> Enkoder-dekoder model s aditivnim mehanizmom pažnje u [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citirano iz [ovog blog posta](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matrica pažnje {αi,j} predstavlja stupanj u kojem određene ulazne riječi sudjeluju u generiranju određene riječi u izlaznoj sekvenci. Ispod je primjer takve matrice: + +![Slika koja prikazuje uzorak poravnanja pronađenog pomoću RNNsearch-50, preuzeto iz Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hr.png) + +> Slika iz [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Slika 3) + +Mehanizmi pažnje odgovorni su za većinu trenutnih ili gotovo trenutnih dostignuća u NLP-u. Međutim, dodavanje pažnje značajno povećava broj parametara modela, što je dovelo do problema skaliranja s RNN-ovima. Ključno ograničenje skaliranja RNN-ova je rekurzivna priroda modela, koja otežava grupiranje i paralelizaciju treninga. Kod RNN-a svaki element sekvence mora se obraditi redoslijedom, što znači da se ne može lako paralelizirati. + +![Enkoder Dekoder s Pažnjom](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Slika iz [Googleovog bloga](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Usvajanje mehanizama pažnje u kombinaciji s ovim ograničenjem dovelo je do stvaranja sadašnjih vrhunskih Transformer modela koje poznajemo i koristimo, poput BERT-a i Open-GPT3. + +## Transformer modeli + +Jedna od glavnih ideja iza transformera je izbjegavanje sekvencijalne prirode RNN-ova i stvaranje modela koji se može paralelizirati tijekom treninga. To se postiže implementacijom dviju ideja: + +* pozicijsko kodiranje +* korištenje mehanizma samopažnje za hvatanje obrazaca umjesto RNN-ova (ili CNN-ova) (zbog čega se rad koji uvodi transformere zove *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Pozicijsko kodiranje/ugrađivanje + +Ideja pozicijskog kodiranja je sljedeća. +1. Kod korištenja RNN-ova, relativni položaj tokena predstavlja se brojem koraka i stoga ne treba biti eksplicitno predstavljen. +2. Međutim, kada prijeđemo na pažnju, moramo znati relativne položaje tokena unutar sekvence. +3. Da bismo dobili pozicijsko kodiranje, proširujemo našu sekvencu tokena sekvencom položaja tokena u sekvenci (tj. sekvencom brojeva 0, 1, ...). +4. Zatim miješamo položaj tokena s vektorom ugrađivanja tokena. Za transformaciju položaja (cijelog broja) u vektor možemo koristiti različite pristupe: + +* Ugrađivanje koje se trenira, slično ugrađivanju tokena. Ovo je pristup koji ovdje razmatramo. Primjenjujemo slojeve ugrađivanja na tokene i njihove položaje, što rezultira vektorima ugrađivanja iste dimenzije, koje zatim zbrajamo. +* Fiksna funkcija kodiranja položaja, kako je predloženo u izvornom radu. + + + +> Slika autora + +Rezultat koji dobivamo s pozicijskim ugrađivanjem uključuje i izvorni token i njegov položaj unutar sekvence. + +### Samopažnja s više glava + +Zatim trebamo uhvatiti neke obrasce unutar naše sekvence. Da bismo to učinili, transformeri koriste mehanizam **samopažnje**, koji je u osnovi pažnja primijenjena na istu sekvencu kao ulaz i izlaz. Primjena samopažnje omogućuje nam uzimanje u obzir **konteksta** unutar rečenice i uočavanje koji su riječi međusobno povezane. Na primjer, omogućuje nam da vidimo na koje riječi se odnose zamjenice poput *to*, i također uzmemo u obzir kontekst: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hr.png) + +> Slika iz [Googleovog bloga](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +U transformerima koristimo **pažnju s više glava** kako bismo mreži dali mogućnost hvatanja različitih vrsta ovisnosti, npr. dugoročnih naspram kratkoročnih odnosa riječi, koreferencija naspram nečeg drugog itd. + +[TensorFlow bilježnica](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) sadrži više detalja o implementaciji slojeva transformera. + +### Pažnja enkoder-dekoder + +U transformerima se pažnja koristi na dva mjesta: + +* Za hvatanje obrazaca unutar ulaznog teksta pomoću samopažnje +* Za prevođenje sekvenci - to je sloj pažnje između enkodera i dekodera. + +Pažnja enkoder-dekoder vrlo je slična mehanizmu pažnje korištenom u RNN-ovima, kako je opisano na početku ovog dijela. Ovaj animirani dijagram objašnjava ulogu pažnje enkoder-dekoder. + +![Animirani GIF koji prikazuje kako se evaluacije provode u transformer modelima.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Budući da se svaka ulazna pozicija neovisno mapira na svaku izlaznu poziciju, transformeri se mogu bolje paralelizirati od RNN-ova, što omogućuje mnogo veće i izražajnije jezične modele. Svaka glava pažnje može se koristiti za učenje različitih odnosa između riječi, što poboljšava zadatke obrade prirodnog jezika. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) je vrlo velika višeslojna mreža transformera s 12 slojeva za *BERT-base* i 24 za *BERT-large*. Model se prvo unaprijed trenira na velikom korpusu tekstualnih podataka (Wikipedia + knjige) koristeći nenadzirano učenje (predviđanje maskiranih riječi u rečenici). Tijekom unaprijed treniranja model usvaja značajnu razinu razumijevanja jezika, koja se zatim može iskoristiti s drugim skupovima podataka pomoću finog podešavanja. Ovaj proces naziva se **prijenosno učenje**. + +![slika s http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hr.png) + +> Izvor slike [ovdje](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Vježbe: Transformeri + +Nastavite učiti u sljedećim bilježnicama: + +* [Transformeri u PyTorch-u](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformeri u TensorFlow-u](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Zaključak + +U ovoj lekciji naučili ste o Transformerima i mehanizmima pažnje, ključnim alatima u NLP alatu. Postoji mnogo varijacija arhitektura Transformera, uključujući BERT, DistilBERT, BigBird, OpenGPT3 i druge, koje se mogu fino podešavati. Paket [HuggingFace](https://github.com/huggingface/) pruža repozitorij za treniranje mnogih od ovih arhitektura s PyTorch-om i TensorFlow-om. + +## 🚀 Izazov + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Pregled i samostalno učenje + +* [Blog post](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), koji objašnjava klasični rad [Attention is all you need](https://arxiv.org/abs/1706.03762) o transformerima. +* [Serija blog postova](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) o transformerima, koja detaljno objašnjava arhitekturu. + +## [Zadatak](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/18-Transformers/assignment.md b/translations/hr/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..3c41c617 --- /dev/null +++ b/translations/hr/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Zadatak: Transformeri + +Eksperimentirajte s Transformerima na HuggingFace! Isprobajte neke od skripti koje pružaju za rad s raznim modelima dostupnim na njihovoj stranici: https://huggingface.co/docs/transformers/run_scripts. Isprobajte jedan od njihovih skupova podataka, a zatim uvezite jedan svoj iz ovog kurikuluma ili s Kagglea i provjerite možete li generirati zanimljive tekstove. Izradite bilježnicu s vašim rezultatima. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za nesporazume ili pogrešne interpretacije koje mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/19-NER/README.md b/translations/hr/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..331aacad --- /dev/null +++ b/translations/hr/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Prepoznavanje imenovanih entiteta + +Do sada smo se uglavnom fokusirali na jedan NLP zadatak - klasifikaciju. Međutim, postoje i drugi NLP zadaci koji se mogu ostvariti pomoću neuronskih mreža. Jedan od tih zadataka je **[Prepoznavanje imenovanih entiteta](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), koji se bavi prepoznavanjem specifičnih entiteta unutar teksta, poput mjesta, imena osoba, vremenskih intervala, kemijskih formula i slično. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Primjer korištenja NER-a + +Pretpostavimo da želite razviti chatbot za prirodni jezik, sličan Amazon Alexi ili Google Asistentu. Način na koji inteligentni chatbotovi funkcioniraju je da *razumiju* što korisnik želi, radeći klasifikaciju teksta na ulaznoj rečenici. Rezultat te klasifikacije je takozvana **namjera** (intent), koja određuje što chatbot treba učiniti. + +Bot NER + +> Slika autora + +Međutim, korisnik može pružiti neke parametre kao dio fraze. Na primjer, kada pita za vremensku prognozu, može navesti lokaciju ili datum. Bot bi trebao razumjeti te entitete i popuniti odgovarajuće parametarske prostore prije nego što izvrši radnju. Upravo tu dolazi NER. + +> ✅ Drugi primjer bio bi [analiza znanstvenih medicinskih radova](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Jedna od glavnih stvari koje trebamo tražiti su specifični medicinski termini, poput bolesti i medicinskih supstanci. Dok se mali broj bolesti vjerojatno može izdvojiti pretragom podniza, složeniji entiteti, poput kemijskih spojeva i naziva lijekova, zahtijevaju složeniji pristup. + +## NER kao klasifikacija tokena + +NER modeli su u suštini **modeli za klasifikaciju tokena**, jer za svaki ulazni token trebamo odlučiti pripada li nekom entitetu ili ne, a ako pripada - kojoj klasi entiteta. + +Razmotrimo sljedeći naslov rada: + +**Regurgitacija trikuspidnog zaliska** i **litijev karbonat** **toksičnost** kod novorođenčeta. + +Entiteti ovdje su: + +* Regurgitacija trikuspidnog zaliska je bolest (`DIS`) +* Litijev karbonat je kemijska supstanca (`CHEM`) +* Toksičnost je također bolest (`DIS`) + +Primijetite da jedan entitet može obuhvatiti nekoliko tokena. I, kao u ovom slučaju, trebamo razlikovati dva uzastopna entiteta. Stoga je uobičajeno koristiti dvije klase za svaki entitet - jednu koja označava prvi token entiteta (često se koristi prefiks `B-` za **početak**), i drugu za nastavak entiteta (`I-`, za **unutarnji token**). Također koristimo `O` kao klasu za predstavljanje svih **ostalih** tokena. Takvo označavanje tokena naziva se [BIO označavanje](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ili IOB). Kada se označi, naš naslov izgleda ovako: + +Token | Oznaka +------|------- +Trikuspid | B-DIS +zaliska | I-DIS +regurgitacija | I-DIS +i | O +litijev | B-CHEM +karbonat | I-CHEM +toksičnost | B-DIS +kod | O +novorođenčeta | O +. | O + +Budući da trebamo uspostaviti jedno-na-jedan korespondenciju između tokena i klasa, možemo trenirati desni **mnogi-na-mnogi** model neuronske mreže iz ove slike: + +![Slika koja prikazuje uobičajene obrasce rekurentnih neuronskih mreža.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hr.jpg) + +> *Slika iz [ovog blog posta](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) autora [Andreja Karpathyja](http://karpathy.github.io/). NER modeli za klasifikaciju tokena odgovaraju desnoj mrežnoj arhitekturi na ovoj slici.* + +## Treniranje NER modela + +Budući da je NER model u suštini model za klasifikaciju tokena, možemo koristiti RNN-ove s kojima smo već upoznati za ovaj zadatak. U ovom slučaju, svaki blok rekurentne mreže vraća ID tokena. Sljedeća bilježnica s primjerima pokazuje kako trenirati LSTM za klasifikaciju tokena. + +## ✍️ Primjeri bilježnica: NER + +Nastavite s učenjem u sljedećoj bilježnici: + +* [NER s TensorFlowom](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Zaključak + +NER model je **model za klasifikaciju tokena**, što znači da se može koristiti za klasifikaciju tokena. Ovo je vrlo čest zadatak u NLP-u, koji pomaže prepoznati specifične entitete unutar teksta, uključujući mjesta, imena, datume i još mnogo toga. + +## 🚀 Izazov + +Dovršite zadatak povezan ispod kako biste trenirali model za prepoznavanje imenovanih entiteta za medicinske termine, a zatim ga isprobajte na drugom skupu podataka. + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Pregled i samostalno učenje + +Pročitajte blog [Nevjerojatna učinkovitost rekurentnih neuronskih mreža](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) i pratite odjeljak Daljnje čitanje u tom članku kako biste produbili svoje znanje. + +## [Zadatak](lab/README.md) + +U zadatku za ovu lekciju, morat ćete trenirati model za prepoznavanje medicinskih entiteta. Možete započeti s treniranjem LSTM modela kako je opisano u ovoj lekciji, a zatim nastaviti s korištenjem BERT transformera. Pročitajte [upute](lab/README.md) za sve detalje. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/19-NER/lab/README.md b/translations/hr/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..f2acb769 --- /dev/null +++ b/translations/hr/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Laboratorijska vježba iz [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Zadatak + +U ovom laboratoriju trebate trenirati model za prepoznavanje imenovanih entiteta (NER) za medicinske pojmove. + +## Skup podataka + +Za treniranje NER modela potreban nam je pravilno označen skup podataka s medicinskim entitetima. [BC5CDR skup podataka](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) sadrži označene entitete bolesti i kemikalija iz više od 1500 radova. Skup podataka možete preuzeti nakon registracije na njihovoj web stranici. + +BC5CDR skup podataka izgleda ovako: + +``` +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 +... +``` + +U ovom skupu podataka, naslov rada i sažetak nalaze se u prva dva retka, a zatim slijede pojedinačni entiteti s početnim i završnim pozicijama unutar bloka naslov+sažetak. Osim vrste entiteta, dobivate i ontološki ID tog entiteta unutar neke medicinske ontologije. + +Trebat ćete napisati Python kod za pretvaranje ovog skupa podataka u BIO kodiranje. + +## Mreža + +Prvi pokušaj NER-a može se napraviti korištenjem LSTM mreže, kao što ste vidjeli u našem primjeru tijekom lekcije. Međutim, u NLP zadacima, [transformerska arhitektura](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), a posebno [BERT jezični modeli](https://en.wikipedia.org/wiki/BERT_(language_model)) pokazuju znatno bolje rezultate. Prethodno trenirani BERT modeli razumiju opću strukturu jezika i mogu se dodatno prilagoditi za specifične zadatke s relativno malim skupovima podataka i računalnim troškovima. + +Budući da planiramo primijeniti NER na medicinski scenarij, logično je koristiti BERT model treniran na medicinskim tekstovima. Microsoft Research objavio je prethodno trenirani model pod nazivom [PubMedBERT][PubMedBERT] ([publikacija][PubMedBERT-Pub]), koji je dodatno treniran koristeći tekstove iz [PubMed](https://pubmed.ncbi.nlm.nih.gov/) repozitorija. + +*De facto* standard za treniranje transformerskih modela je biblioteka [Hugging Face Transformers](https://huggingface.co/). Također sadrži repozitorij unaprijed treniranih modela koje održava zajednica, uključujući PubMedBERT. Za učitavanje i korištenje ovog modela, potrebno je samo nekoliko linija koda: + +```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) +``` + +Ovo nam daje sam `model`, izgrađen za zadatak klasifikacije tokena koristeći `classes` broj klasa, kao i `tokenizer` objekt koji može podijeliti ulazni tekst na tokene. Trebat ćete pretvoriti skup podataka u BIO format, uzimajući u obzir tokenizaciju PubMedBERT-a. Kao inspiraciju možete koristiti [ovaj Python kod](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88). + +## Zaključak + +Ovaj zadatak vrlo je sličan stvarnom zadatku koji biste mogli imati ako želite dobiti više uvida u velike količine tekstova na prirodnom jeziku. U našem slučaju, možemo primijeniti naš trenirani model na [skup podataka radova povezanih s COVID-om](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) i vidjeti koje uvide možemo dobiti. [Ovaj blog post](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) i [ovaj rad](https://www.mdpi.com/2504-2289/6/1/4) opisuju istraživanja koja se mogu provesti na ovom korpusu radova koristeći NER. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/20-LangModels/README.md b/translations/hr/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..d02d85c9 --- /dev/null +++ b/translations/hr/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Pre-Trained Large Language Models + +U svim našim prethodnim zadacima trenirali smo neuronsku mrežu da obavlja određeni zadatak koristeći označeni skup podataka. Kod velikih transformacijskih modela, poput BERT-a, koristimo modeliranje jezika u samonadziranom načinu kako bismo izgradili jezični model, koji se zatim specijalizira za specifične zadatke uz dodatnu obuku specifičnu za domenu. Međutim, pokazalo se da veliki jezični modeli mogu riješiti mnoge zadatke i bez ikakve obuke specifične za domenu. Obitelj modela sposobnih za to naziva se **GPT**: Generativni unaprijed trenirani transformator. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generiranje teksta i Perpleksnost + +Ideja da neuronska mreža može obavljati opće zadatke bez dodatne obuke predstavljena je u radu [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Glavna ideja je da se mnogi drugi zadaci mogu modelirati pomoću **generiranja teksta**, jer razumijevanje teksta u suštini znači sposobnost njegovog stvaranja. Budući da je model treniran na ogromnoj količini teksta koji obuhvaća ljudsko znanje, on također postaje informiran o širokom spektru tema. + +> Razumijevanje i sposobnost stvaranja teksta također podrazumijeva poznavanje svijeta oko nas. Ljudi također u velikoj mjeri uče čitajući, a GPT mreža je u tom pogledu slična. + +Mreže za generiranje teksta rade predviđanjem vjerojatnosti sljedeće riječi $$P(w_N)$$. Međutim, bezuvjetna vjerojatnost sljedeće riječi jednaka je učestalosti te riječi u korpusu teksta. GPT nam može dati **uvjetnu vjerojatnost** sljedeće riječi, s obzirom na prethodne: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Više o vjerojatnostima možete pročitati u našem [kurikulumu za početnike u znanosti o podacima](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Kvaliteta modela za generiranje jezika može se definirati pomoću **perpleksnosti**. To je intrinzična metrika koja nam omogućuje mjerenje kvalitete modela bez ikakvog skupa podataka specifičnog za zadatak. Temelji se na konceptu *vjerojatnosti rečenice* - model dodjeljuje visoku vjerojatnost rečenici koja je vjerojatno stvarna (tj. model nije **zbunjen** njome) i nisku vjerojatnost rečenicama koje manje imaju smisla (npr. *Može li to što?*). Kada modelu damo rečenice iz stvarnog korpusa teksta, očekujemo da će imati visoku vjerojatnost i nisku **perpleksnost**. Matematički, ona se definira kao normalizirana inverzna vjerojatnost testnog skupa: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Možete eksperimentirati s generiranjem teksta koristeći [GPT-pokretan uređivač teksta od Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. U ovom uređivaču započinjete pisanje svog teksta, a pritiskom na **[TAB]** dobit ćete nekoliko opcija za nastavak. Ako su prekratke ili niste zadovoljni njima - ponovno pritisnite [TAB], i dobit ćete više opcija, uključujući dulje dijelove teksta. + +## GPT je Obitelj + +GPT nije jedan model, već zbirka modela koje je razvio i trenirao [OpenAI](https://openai.com). + +Unutar GPT modela nalazimo: + +| [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) | +| -- | -- | -- | +| Jezični model s do 1,5 milijardi parametara. | Jezični model s do 175 milijardi parametara. | 100T parametara, prihvaća i slike i tekst kao ulaz, a daje tekst kao izlaz. | + +Modeli GPT-3 i GPT-4 dostupni su [kao kognitivna usluga putem Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) i kao [OpenAI API](https://openai.com/api/). + +## Inženjering Upita (Prompt Engineering) + +Budući da je GPT treniran na ogromnim količinama podataka kako bi razumio jezik i kod, daje odgovore na temelju ulaza (upita). Upiti su ulazi ili upiti za GPT gdje se modelima daju upute o zadacima koje trebaju izvršiti. Kako biste dobili željeni rezultat, potrebno je osmisliti najučinkovitiji upit, što uključuje odabir pravih riječi, formata, fraza ili čak simbola. Ovaj pristup naziva se [Inženjering upita](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Ova dokumentacija](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) pruža više informacija o inženjeringu upita. + +## ✍️ Primjer Bilježnice: [Igranje s OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Nastavite učiti kroz sljedeće bilježnice: + +* [Generiranje teksta s OpenAI-GPT i Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Zaključak + +Novi opći unaprijed trenirani jezični modeli ne modeliraju samo strukturu jezika, već sadrže i ogromnu količinu prirodnog jezika. Stoga se mogu učinkovito koristiti za rješavanje nekih NLP zadataka u zero-shot ili few-shot postavkama. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/5-NLP/README.md b/translations/hr/lessons/5-NLP/README.md new file mode 100644 index 00000000..af3ed66f --- /dev/null +++ b/translations/hr/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Obrada Prirodnog Jezika + +![Sažetak NLP zadataka u crtežu](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hr.png) + +U ovom dijelu fokusirat ćemo se na korištenje neuronskih mreža za rješavanje zadataka povezanih s **Obradom Prirodnog Jezika (NLP)**. Postoji mnogo NLP problema koje želimo da računala mogu riješiti: + +* **Klasifikacija teksta** je tipičan problem klasifikacije koji se odnosi na tekstualne sekvence. Primjeri uključuju klasifikaciju e-mail poruka kao spam ili ne-spam, ili kategorizaciju članaka kao sport, biznis, politika itd. Također, pri razvoju chat botova često trebamo razumjeti što korisnik želi reći — u tom slučaju bavimo se **klasifikacijom namjere**. Često, kod klasifikacije namjere, moramo raditi s mnogo kategorija. +* **Analiza sentimenta** je tipičan regresijski problem, gdje trebamo dodijeliti broj (sentiment) koji odgovara tome koliko je značenje rečenice pozitivno/negativno. Naprednija verzija analize sentimenta je **analiza sentimenta po aspektima** (ABSA), gdje sentiment ne dodjeljujemo cijeloj rečenici, već različitim dijelovima (aspektima), npr. *U ovom restoranu mi se svidjela kuhinja, ali atmosfera je bila grozna*. +* **Prepoznavanje imenovanih entiteta** (NER) odnosi se na problem izdvajanja određenih entiteta iz teksta. Na primjer, trebamo razumjeti da u frazi *Moram letjeti za Pariz sutra* riječ *sutra* označava DATUM, a *Pariz* je LOKACIJA. +* **Ekstrakcija ključnih riječi** je slična NER-u, ali trebamo automatski izdvojiti riječi važne za značenje rečenice, bez prethodnog treniranja za specifične tipove entiteta. +* **Grupiranje teksta** može biti korisno kada želimo grupirati slične rečenice, na primjer, slične zahtjeve u razgovorima tehničke podrške. +* **Odgovaranje na pitanja** odnosi se na sposobnost modela da odgovori na specifično pitanje. Model prima tekstualni odlomak i pitanje kao ulaz, te treba pružiti mjesto u tekstu gdje se nalazi odgovor na pitanje (ili, ponekad, generirati tekst odgovora). +* **Generiranje teksta** je sposobnost modela da generira novi tekst. To se može smatrati zadatkom klasifikacije koji predviđa sljedeće slovo/riječ na temelju nekog *tekstualnog upita*. Napredni modeli za generiranje teksta, poput GPT-3, mogu rješavati druge NLP zadatke poput klasifikacije koristeći tehniku zvanu [programiranje upita](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ili [inženjering upita](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Sažimanje teksta** je tehnika kada želimo da računalo "pročita" dugi tekst i sažme ga u nekoliko rečenica. +* **Strojno prevođenje** može se promatrati kao kombinacija razumijevanja teksta na jednom jeziku i generiranja teksta na drugom jeziku. + +U početku su se većina NLP zadataka rješavala tradicionalnim metodama poput gramatika. Na primjer, u strojnome prevođenju parseri su se koristili za transformaciju početne rečenice u sintaktičko stablo, zatim su se izdvajale semantičke strukture višeg nivoa kako bi se predstavilo značenje rečenice, a na temelju tog značenja i gramatike ciljnog jezika generirao se rezultat. Danas se mnogi NLP zadaci učinkovitije rješavaju pomoću neuronskih mreža. + +> Mnoge klasične NLP metode implementirane su u Python biblioteci [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Dostupna je izvrsna [NLTK knjiga](https://www.nltk.org/book/) online koja pokriva kako se različiti NLP zadaci mogu riješiti pomoću NLTK-a. + +Na našem tečaju uglavnom ćemo se fokusirati na korištenje neuronskih mreža za NLP, a NLTK ćemo koristiti gdje je potrebno. + +Već smo naučili kako koristiti neuronske mreže za rad s tabličnim podacima i slikama. Glavna razlika između tih vrsta podataka i teksta je ta što je tekst sekvenca promjenjive duljine, dok je veličina ulaza u slučaju slika unaprijed poznata. Dok konvolucijske mreže mogu izdvojiti uzorke iz ulaznih podataka, uzorci u tekstu su složeniji. Na primjer, negacija može biti odvojena od subjekta za mnogo riječi (npr. *Ne volim naranče* naspram *Ne volim one velike šarene ukusne naranče*), i to bi se još uvijek trebalo interpretirati kao jedan uzorak. Stoga, za obradu jezika trebamo uvesti nove vrste neuronskih mreža, poput *rekurentnih mreža* i *transformera*. + +## Instalacija Biblioteka + +Ako koristite lokalnu Python instalaciju za pokretanje ovog tečaja, možda ćete trebati instalirati sve potrebne biblioteke za NLP pomoću sljedećih naredbi: + +**Za PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Za TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> NLP s TensorFlowom možete isprobati na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Upozorenje o GPU-u + +U ovom dijelu, u nekim primjerima trenirat ćemo prilično velike modele. +* **Koristite računalo s GPU-om**: Preporučuje se pokretanje vaših bilježnica na računalu s GPU-om kako biste smanjili vrijeme čekanja pri radu s velikim modelima. +* **Ograničenja GPU memorije**: Pokretanje na GPU-u može dovesti do situacija u kojima vam ponestane GPU memorije, posebno pri treniranju velikih modela. +* **Potrošnja GPU memorije**: Količina GPU memorije koja se troši tijekom treniranja ovisi o raznim faktorima, uključujući veličinu minibatch-a. +* **Smanjite veličinu minibatch-a**: Ako naiđete na probleme s GPU memorijom, razmislite o smanjenju veličine minibatch-a u vašem kodu kao potencijalnom rješenju. +* **Oslobađanje GPU memorije u TensorFlowu**: Starije verzije TensorFlowa možda neće pravilno osloboditi GPU memoriju pri treniranju više modela unutar jednog Python kernela. Kako biste učinkovito upravljali korištenjem GPU memorije, možete konfigurirati TensorFlow da alocira GPU memoriju samo po potrebi. +* **Uključivanje koda**: Da biste postavili TensorFlow da alocira GPU memoriju samo kada je to potrebno, uključite sljedeći kod u svoje bilježnice: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Ako vas zanima učenje o NLP-u iz perspektive klasičnog ML-a, posjetite [ovaj niz lekcija](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## U ovom dijelu +U ovom dijelu naučit ćemo o: + +* [Predstavljanje teksta kao tenzora](13-TextRep/README.md) +* [Ugrađivanje riječi](14-Emdeddings/README.md) +* [Modeliranje jezika](15-LanguageModeling/README.md) +* [Rekurentne neuronske mreže](16-RNN/README.md) +* [Generativne mreže](17-GenerativeNetworks/README.md) +* [Transformeri](18-Transformers/README.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/hr/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..04a4028b --- /dev/null +++ b/translations/hr/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Genetski algoritmi + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetski algoritmi** (GA) temelje se na **evolucijskom pristupu** umjetnoj inteligenciji, gdje se metode evolucije populacije koriste za pronalaženje optimalnog rješenja za određeni problem. Predložio ih je 1975. godine [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Genetski algoritmi temelje se na sljedećim idejama: + +* Valjana rješenja problema mogu se predstaviti kao **geni** +* **Kombiniranje** omogućuje spajanje dvaju rješenja kako bi se dobilo novo valjano rješenje +* **Selekcija** se koristi za odabir optimalnijih rješenja pomoću neke **funkcije prilagodbe** +* **Mutacije** se uvode kako bi se destabilizirala optimizacija i izbjeglo lokalno minimum + +Ako želite implementirati genetski algoritam, trebate sljedeće: + + * Pronaći način kodiranja rješenja problema pomoću **gena** g∈Γ + * Na skupu gena Γ trebate definirati **funkciju prilagodbe** fit: Γ→**R**. Manje vrijednosti funkcije odgovaraju boljim rješenjima. + * Definirati mehanizam **kombiniranja** za spajanje dvaju gena kako bi se dobilo novo valjano rješenje crossover: Γ2→Γ. + * Definirati mehanizam **mutacije** mutate: Γ→Γ. + +U mnogim slučajevima, kombiniranje i mutacija su prilično jednostavni algoritmi za manipulaciju genima kao numeričkim nizovima ili bitnim vektorima. + +Specifična implementacija genetskog algoritma može se razlikovati od slučaja do slučaja, ali opća struktura je sljedeća: + +1. Odabrati početnu populaciju G⊂Γ +2. Nasumično odabrati jednu od operacija koja će se izvesti u ovom koraku: kombiniranje ili mutacija +3. **Kombiniranje**: + * Nasumično odabrati dva gena g1, g2 ∈ G + * Izračunati kombiniranje g=crossover(g1,g2) + * Ako fit(g)1) ili fit(g)2) - zamijeniti odgovarajući gen u populaciji s g. +4. **Mutacija** - odabrati nasumični gen g∈G i zamijeniti ga s mutate(g) +5. Ponavljati od koraka 2, dok ne dobijemo dovoljno malu vrijednost fit ili dok se ne dostigne ograničenje broja koraka. + +## Tipični zadaci + +Zadaci koji se obično rješavaju genetskim algoritmima uključuju: + +1. Optimizacija rasporeda +1. Optimalno pakiranje +1. Optimalno rezanje +1. Ubrzavanje iscrpne pretrage + +## ✍️ Vježbe: Genetski algoritmi + +Nastavite učiti u sljedećim bilježnicama: + +Idite na [ovu bilježnicu](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) kako biste vidjeli dva primjera korištenja genetskih algoritama: + +1. Pravedna podjela blaga +1. Problem 8 kraljica + +## Zaključak + +Genetski algoritmi koriste se za rješavanje mnogih problema, uključujući logističke i probleme pretrage. Ovo područje inspirirano je istraživanjima koja spajaju teme iz psihologije i računalnih znanosti. + +## 🚀 Izazov + +"Genetski algoritmi su jednostavni za implementaciju, ali njihovo ponašanje je teško razumjeti." [izvor](https://wikipedia.org/wiki/Genetic_algorithm) Provedite istraživanje kako biste pronašli implementaciju genetskog algoritma, poput rješavanja Sudoku zagonetke, i objasnite kako funkcionira kao skica ili dijagram toka. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Pregled i samostalno učenje + +Pogledajte [ovaj odličan video](https://www.youtube.com/watch?v=qv6UVOQ0F44) koji govori o tome kako računalo može naučiti igrati Super Mario koristeći neuronske mreže trenirane genetskim algoritmima. Više o učenju računala za igranje takvih igara naučit ćemo [u sljedećem odjeljku](../22-DeepRL/README.md). + +## [Zadatak: Diofantova jednadžba](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Vaš cilj je riješiti tzv. **Diofantovu jednadžbu** - jednadžbu s cijelim korijenima. Na primjer, razmotrite jednadžbu a+2b+3c+4d=30. Trebate pronaći cijele korijene koji zadovoljavaju ovu jednadžbu. + +*Ovaj zadatak inspiriran je [ovim postom](https://habr.com/post/128704/).* + +Savjeti: + +1. Možete razmotriti korijene u intervalu [0;30] +1. Kao gen, razmotrite korištenje popisa vrijednosti korijena + +Koristite [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) kao početnu točku. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/6-Other/22-DeepRL/README.md b/translations/hr/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..bd334069 --- /dev/null +++ b/translations/hr/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Duboko pojačano učenje + +Pojačano učenje (RL) smatra se jednim od osnovnih paradigmi strojnog učenja, uz nadzirano učenje i nenadzirano učenje. Dok se u nadziranom učenju oslanjamo na skup podataka s poznatim ishodima, RL se temelji na **učenju kroz rad**. Na primjer, kada prvi put vidimo računalnu igru, počinjemo igrati, čak i bez poznavanja pravila, i ubrzo poboljšavamo svoje vještine samo kroz proces igranja i prilagođavanja ponašanja. + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Za provođenje RL-a potrebni su nam: + +* **Okruženje** ili **simulator** koji postavlja pravila igre. Trebali bismo moći provoditi eksperimente u simulatoru i promatrati rezultate. +* Neka **funkcija nagrade**, koja pokazuje koliko je naš eksperiment bio uspješan. U slučaju učenja igranja računalne igre, nagrada bi bila naš konačni rezultat. + +Na temelju funkcije nagrade trebali bismo moći prilagoditi svoje ponašanje i poboljšati svoje vještine kako bismo sljedeći put igrali bolje. Glavna razlika između drugih vrsta strojnog učenja i RL-a je ta što u RL-u obično ne znamo jesmo li pobijedili ili izgubili dok ne završimo igru. Dakle, ne možemo reći je li određeni potez sam po sebi dobar ili ne - nagradu dobivamo tek na kraju igre. + +Tijekom RL-a obično provodimo mnogo eksperimenata. Tijekom svakog eksperimenta moramo balansirati između praćenja optimalne strategije koju smo dosad naučili (**iskorištavanje**) i istraživanja novih mogućih stanja (**istraživanje**). + +## OpenAI Gym + +Odličan alat za RL je [OpenAI Gym](https://gym.openai.com/) - **simulacijsko okruženje** koje može simulirati mnoga različita okruženja, počevši od Atari igara pa sve do fizike balansiranja štapa. To je jedno od najpopularnijih simulacijskih okruženja za treniranje algoritama pojačanog učenja, a održava ga [OpenAI](https://openai.com/). + +> **Napomena**: Sve dostupne okoline iz OpenAI Gym-a možete vidjeti [ovdje](https://gym.openai.com/envs/#classic_control). + +## Balansiranje CartPole-a + +Vjerojatno ste svi vidjeli moderne uređaje za balansiranje poput *Segwaya* ili *Gyroscootera*. Oni su sposobni automatski se balansirati prilagođavanjem svojih kotača na temelju signala iz akcelerometra ili žiroskopa. U ovom ćemo dijelu naučiti kako riješiti sličan problem - balansiranje štapa. To je slično situaciji kada cirkuski izvođač mora balansirati štap na svojoj ruci - ali ovo balansiranje štapa odvija se samo u 1D. + +Pojednostavljena verzija balansiranja poznata je kao problem **CartPole**. U svijetu CartPole-a imamo horizontalni klizač koji se može kretati lijevo ili desno, a cilj je balansirati vertikalni štap na vrhu klizača dok se on kreće. + +cartpole + +Za stvaranje i korištenje ovog okruženja potrebno je nekoliko linija Python koda: + +```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}") +``` + +Svako okruženje može se pristupiti na isti način: +* `env.reset` započinje novi eksperiment +* `env.step` izvodi korak simulacije. Prima **akciju** iz **prostora akcija** i vraća **promatranje** (iz prostora promatranja), kao i nagradu i zastavicu za završetak. + +U gornjem primjeru izvodimo nasumičnu akciju pri svakom koraku, zbog čega je život eksperimenta vrlo kratak: + +![cartpole bez balansiranja](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Cilj RL algoritma je trenirati model - tzv. **politiku** π - koja će vraćati akciju kao odgovor na dano stanje. Politiku također možemo smatrati probabilističkom, npr. za bilo koje stanje *s* i akciju *a* ona će vratiti vjerojatnost π(*a*|*s*) da bismo trebali poduzeti *a* u stanju *s*. + +## Algoritam gradijenata politike + +Najjednostavniji način za modeliranje politike je stvaranje neuronske mreže koja će uzimati stanja kao ulaz i vraćati odgovarajuće akcije (ili radije vjerojatnosti svih akcija). Na neki način, to bi bilo slično normalnom zadatku klasifikacije, s jednom velikom razlikom - unaprijed ne znamo koje akcije trebamo poduzeti u svakom koraku. + +Ideja je ovdje procijeniti te vjerojatnosti. Gradimo vektor **kumulativnih nagrada** koji pokazuje našu ukupnu nagradu u svakom koraku eksperimenta. Također primjenjujemo **diskontiranje nagrada** množenjem ranijih nagrada s nekim koeficijentom γ=0.99, kako bismo umanjili ulogu ranijih nagrada. Zatim pojačavamo one korake duž eksperimentalnog puta koji donose veće nagrade. + +> Saznajte više o algoritmu gradijenata politike i pogledajte ga u akciji u [primjeru bilježnice](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritam Actor-Critic + +Poboljšana verzija pristupa gradijenata politike naziva se **Actor-Critic**. Glavna ideja iza njega je da se neuronska mreža trenira da vraća dvije stvari: + +* Politiku koja određuje koju akciju poduzeti. Ovaj dio se naziva **actor**. +* Procjenu ukupne nagrade koju možemo očekivati u ovom stanju - ovaj dio se naziva **critic**. + +Na neki način, ova arhitektura podsjeća na [GAN](../../4-ComputerVision/10-GANs/README.md), gdje imamo dvije mreže koje se treniraju jedna protiv druge. U modelu actor-critic, actor predlaže akciju koju trebamo poduzeti, a critic pokušava biti kritičan i procijeniti rezultat. Međutim, naš cilj je trenirati te mreže ujedinjeno. + +Budući da znamo i stvarne kumulativne nagrade i rezultate koje critic vraća tijekom eksperimenta, relativno je lako izgraditi funkciju gubitka koja će minimizirati razliku između njih. To nam daje **critic loss**. **Actor loss** možemo izračunati koristeći isti pristup kao u algoritmu gradijenata politike. + +Nakon pokretanja jednog od tih algoritama, možemo očekivati da će naš CartPole izgledati ovako: + +![balansirajući cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Vježbe: Gradijenti politike i Actor-Critic RL + +Nastavite učiti u sljedećim bilježnicama: + +* [RL u TensorFlow-u](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL u PyTorch-u](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Ostali RL zadaci + +Pojačano učenje danas je brzo rastuće područje istraživanja. Neki od zanimljivih primjera pojačanog učenja su: + +* Podučavanje računala da igra **Atari igre**. Izazovni dio ovog problema je što nemamo jednostavno stanje predstavljeno kao vektor, već snimku zaslona - i moramo koristiti CNN za pretvaranje slike zaslona u vektor značajki ili za izdvajanje informacija o nagradi. Atari igre dostupne su u Gym-u. +* Podučavanje računala da igra društvene igre, poput šaha i Goa. Nedavno su programi poput **Alpha Zero** postigli vrhunske rezultate trenirajući se od nule, gdje su dva agenta igrala jedan protiv drugog i poboljšavala se pri svakom koraku. +* U industriji, RL se koristi za stvaranje sustava upravljanja iz simulacije. Usluga nazvana [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) posebno je dizajnirana za to. + +## Zaključak + +Sada smo naučili kako trenirati agente da postignu dobre rezultate samo pružanjem funkcije nagrade koja definira željeno stanje igre i omogućavanjem inteligentnog istraživanja prostora pretraživanja. Uspješno smo isprobali dva algoritma i postigli dobar rezultat u relativno kratkom vremenskom razdoblju. Međutim, ovo je tek početak vašeg putovanja u RL, i svakako biste trebali razmotriti pohađanje zasebnog tečaja ako želite dublje istražiti. + +## 🚀 Izazov + +Istražite primjene navedene u odjeljku 'Ostali RL zadaci' i pokušajte implementirati jednu! + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Pregled i samostalno učenje + +Saznajte više o klasičnom pojačanom učenju u našem [kurikulumu Strojnog učenja za početnike](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Pogledajte [ovaj odličan video](https://www.youtube.com/watch?v=qv6UVOQ0F44) o tome kako računalo može naučiti igrati Super Mario. + +## Zadatak: [Trenirajte Mountain Car](lab/README.md) + +Vaš cilj tijekom ovog zadatka bit će trenirati drugačije Gym okruženje - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/hr/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..6b3f965a --- /dev/null +++ b/translations/hr/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Okruženje + +Okruženje Mountain Car sastoji se od automobila zarobljenog u dolini. Vaš cilj je iskočiti iz doline i doseći zastavu. Akcije koje možete poduzeti su ubrzavanje ulijevo, udesno ili ne raditi ništa. Možete promatrati položaj automobila duž x-osi i brzinu. + +## Početna bilježnica + +Započnite laboratorij otvaranjem [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Zaključak + +Tijekom ovog laboratorija trebali biste naučiti da je prilagodba RL algoritama novom okruženju često prilično jednostavna, jer OpenAI Gym ima isti sučelje za sva okruženja, a algoritmi u velikoj mjeri ne ovise o prirodi okruženja. Čak možete restrukturirati Python kod na način da bilo koje okruženje proslijedite RL algoritmu kao parametar. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/hr/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..59bbb68e --- /dev/null +++ b/translations/hr/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Višestruki agentski sustavi + +Jedan od mogućih načina postizanja inteligencije je takozvani **emergentni** (ili **sinergijski**) pristup, koji se temelji na činjenici da kombinirano ponašanje mnogih relativno jednostavnih agenata može rezultirati ukupno složenijim (ili inteligentnijim) ponašanjem sustava u cjelini. Teoretski, ovo se temelji na principima [Kolektivne inteligencije](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentizma](https://en.wikipedia.org/wiki/Global_brain) i [Evolucijske kibernetike](https://en.wikipedia.org/wiki/Global_brain), koji tvrde da sustavi višeg nivoa dobivaju neku vrstu dodane vrijednosti kada se pravilno kombiniraju iz sustava nižeg nivoa (tzv. *princip prijelaza metasustava*). + +## [Kviz prije predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Smjer **Višestrukih agentskih sustava** pojavio se u AI-u 1990-ih kao odgovor na rast Interneta i distribuiranih sustava. Jedan od klasičnih udžbenika o AI-u, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), fokusira se na pogled klasičnog AI-a iz perspektive višestrukih agentskih sustava. + +Središnji pojam višestrukog agentskog pristupa je pojam **Agent** - entitet koji živi u nekom **okruženju**, koje može percipirati i na koje može djelovati. Ovo je vrlo široka definicija, i može postojati mnogo različitih vrsta i klasifikacija agenata: + +* Prema sposobnosti zaključivanja: + - **Reaktivni** agenti obično imaju jednostavno ponašanje tipa zahtjev-odgovor + - **Promišljeni** agenti koriste neku vrstu logičkog zaključivanja i/ili sposobnosti planiranja +* Prema mjestu gdje agent izvršava svoj kod: + - **Statični** agenti rade na posvećenom mrežnom čvoru + - **Mobilni** agenti mogu premještati svoj kod između mrežnih čvorova +* Prema ponašanju: + - **Pasivni agenti** nemaju specifične ciljeve. Takvi agenti mogu reagirati na vanjske podražaje, ali neće sami inicirati nikakve radnje. + - **Aktivni agenti** imaju neke ciljeve koje slijede + - **Kognitivni agenti** uključuju složeno planiranje i zaključivanje + +Višestruki agentski sustavi danas se koriste u brojnim aplikacijama: + +* U igrama, mnogi likovi koji nisu igrači koriste neku vrstu AI-a i mogu se smatrati inteligentnim agentima +* U video produkciji, renderiranje složenih 3D scena koje uključuju gužve obično se radi pomoću simulacije višestrukih agenata +* U modeliranju sustava, višestruki agentski pristup koristi se za simulaciju ponašanja složenog modela. Na primjer, višestruki agentski pristup uspješno se koristio za predviđanje širenja bolesti COVID-19 diljem svijeta. Sličan pristup može se koristiti za modeliranje prometa u gradu i promatranje kako reagira na promjene u prometnim pravilima. +* U složenim automatizacijskim sustavima, svaki uređaj može djelovati kao neovisni agent, što čini cijeli sustav manje monolitnim i robusnijim. + +Nećemo trošiti puno vremena na duboko proučavanje višestrukih agentskih sustava, već ćemo razmotriti jedan primjer **modeliranja višestrukih agenata**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) je okruženje za modeliranje višestrukih agenata temeljeno na modificiranoj verziji programskog jezika [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Ovaj jezik razvijen je za podučavanje koncepta programiranja djeci, i omogućuje vam kontrolu agenta zvanog **kornjača**, koji se može kretati ostavljajući trag iza sebe. Ovo omogućuje stvaranje složenih geometrijskih figura, što je vrlo vizualan način za razumijevanje ponašanja agenta. + +U NetLogu možemo stvoriti mnogo kornjača pomoću naredbe `create-turtles`. Zatim možemo zapovjediti svim kornjačama da izvrše neke radnje (u primjeru ispod - pomaknu se 10 točaka naprijed): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Naravno, nije zanimljivo kada sve kornjače rade istu stvar, pa možemo `ask` grupama kornjača, npr. onima koje su u blizini određene točke. Također možemo stvoriti kornjače različitih *vrsta* pomoću naredbe `breed [cats cat]`. Ovdje je `cat` naziv vrste, i moramo specificirati i jedninu i množinu riječi, jer različite naredbe koriste različite oblike radi jasnoće. + +> ✅ Nećemo ulaziti u učenje samog jezika NetLogo - možete posjetiti izvrsni [Interaktivni rječnik za početnike NetLogo](https://ccl.northwestern.edu/netlogo/bind/) ako ste zainteresirani za više informacija. + +Možete [preuzeti](https://ccl.northwestern.edu/netlogo/download.shtml) i instalirati NetLogo kako biste ga isprobali. + +### Biblioteka modela + +Sjajna stvar kod NetLoga je da sadrži biblioteku radnih modela koje možete isprobati. Idite na **File → Models Library**, i imate mnogo kategorija modela za odabrati. + +NetLogo Models Library + +> Snimka zaslona biblioteke modela Dmitryja Soshnikova + +Možete otvoriti jedan od modela, na primjer **Biology → Flocking**. + +### Glavni principi + +Nakon otvaranja modela, dolazite na glavni ekran NetLoga. Evo uzorka modela koji opisuje populaciju vukova i ovaca, uz ograničene resurse (trava). + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hr.png) + +> Snimka zaslona Dmitryja Soshnikova + +Na ovom ekranu možete vidjeti: + +* Sekciju **Interface** koja sadrži: + - Glavno polje, gdje svi agenti žive + - Različite kontrole: gumbe, klizače itd. + - Grafove koje možete koristiti za prikaz parametara simulacije +* Karticu **Code** koja sadrži editor, gdje možete pisati NetLogo program + +U većini slučajeva sučelje će imati gumb **Setup**, koji inicijalizira stanje simulacije, i gumb **Go** koji pokreće izvršavanje. Oni se obrađuju odgovarajućim handlerima u kodu koji izgledaju ovako: + +``` +to go [ +... +] +``` + +Svijet NetLoga sastoji se od sljedećih objekata: + +* **Agenti** (kornjače) koji se mogu kretati po polju i nešto raditi. Agentima zapovijedate pomoću sintakse `ask turtles [...]`, a kod u zagradama izvršavaju svi agenti u *načinu rada kornjače*. +* **Pločice** su kvadratna područja polja na kojima agenti žive. Možete se referirati na sve agente na istoj pločici, ili možete mijenjati boje pločica i neka druga svojstva. Također možete `ask patches` da nešto učine. +* **Promatrač** je jedinstveni agent koji kontrolira svijet. Svi handleri gumba izvršavaju se u *načinu rada promatrača*. + +> ✅ Ljepota višestrukog agentskog okruženja je u tome što se kod koji se izvršava u načinu rada kornjače ili pločice istovremeno izvršava od strane svih agenata paralelno. Dakle, pisanjem malo koda i programiranjem ponašanja pojedinog agenta, možete stvoriti složeno ponašanje simulacijskog sustava u cjelini. + +### Flocking + +Kao primjer višestrukog agentskog ponašanja, razmotrimo **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking je složen uzorak koji je vrlo sličan načinu na koji jata ptica lete. Promatrajući njihov let možete pomisliti da slijede neku vrstu kolektivnog algoritma ili da posjeduju neku formu *kolektivne inteligencije*. Međutim, ovo složeno ponašanje nastaje kada svaki pojedini agent (u ovom slučaju, *ptica*) samo promatra neke druge agente na kratkoj udaljenosti od sebe i slijedi tri jednostavna pravila: + +* **Poravnanje** - usmjerava se prema prosječnom smjeru susjednih agenata +* **Kohezija** - pokušava se usmjeriti prema prosječnom položaju susjeda (*dugoročna privlačnost*) +* **Razdvajanje** - kada se previše približi drugim pticama, pokušava se udaljiti (*kratkoročno odbijanje*) + +Možete pokrenuti primjer flockinga i promatrati ponašanje. Također možete prilagoditi parametre, poput *stupnja razdvajanja* ili *raspona vidljivosti*, koji definira koliko daleko svaka ptica može vidjeti. Primijetite da ako smanjite raspon vidljivosti na 0, sve ptice postaju slijepe i flocking prestaje. Ako smanjite razdvajanje na 0, sve ptice se okupljaju u ravnu liniju. + +> ✅ Prebacite se na karticu **Code** i pogledajte gdje su tri pravila flockinga (poravnanje, kohezija i razdvajanje) implementirana u kodu. Primijetite kako se referiramo samo na one agente koji su u vidokrugu. + +### Ostali modeli za istraživanje + +Postoji još nekoliko zanimljivih modela koje možete eksperimentirati: + +* **Art → Fireworks** prikazuje kako se vatromet može smatrati kolektivnim ponašanjem pojedinih struja vatre +* **Social Science → Traffic Basic** i **Social Science → Traffic Grid** prikazuju model gradskog prometa u 1D i 2D mreži s ili bez semafora. Svaki automobil u simulaciji slijedi sljedeća pravila: + - Ako je prostor ispred njega prazan - ubrzaj (do određenog maksimalnog brzine) + - Ako vidi prepreku ispred - koči (i možete prilagoditi koliko daleko vozač može vidjeti) +* **Social Science → Party** prikazuje kako se ljudi grupiraju tijekom koktel zabave. Možete pronaći kombinaciju parametara koja vodi do najbržeg povećanja sreće grupe. + +Kao što možete vidjeti iz ovih primjera, simulacije višestrukih agenata mogu biti vrlo koristan način za razumijevanje ponašanja složenog sustava koji se sastoji od pojedinaca koji slijede istu ili sličnu logiku. Također se može koristiti za kontrolu virtualnih agenata, poput [NPC-a](https://en.wikipedia.org/wiki/NPC) u računalnim igrama ili agenata u 3D animiranim svjetovima. + +## Promišljeni agenti + +Agenti opisani gore su vrlo jednostavni, reagirajući na promjene u okruženju koristeći neku vrstu algoritma. Kao takvi, oni su **reaktivni agenti**. Međutim, ponekad agenti mogu zaključivati i planirati svoje radnje, u kojem slučaju se nazivaju **promišljenim**. + +Tipičan primjer bio bi osobni agent koji prima instrukciju od čovjeka da rezervira turistički aranžman. Pretpostavimo da na internetu postoji mnogo agenata koji mu mogu pomoći. Trebao bi kontaktirati druge agente kako bi vidio koji su letovi dostupni, koje su cijene hotela za različite datume i pokušati pregovarati o najboljoj cijeni. Kada je plan putovanja dovršen i potvrđen od strane vlasnika, može nastaviti s rezervacijom. + +Da bi to učinili, agenti moraju **komunicirati**. Za uspješnu komunikaciju potrebni su im: + +* Neki **standardni jezici za razmjenu znanja**, poput [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) i [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ti jezici su dizajnirani na temelju [Teorije govornog čina](https://en.wikipedia.org/wiki/Speech_act). +* Ti jezici također trebaju uključivati neke **protokole za pregovore**, temeljene na različitim **vrstama aukcija**. +* **Zajednička ontologija** koju koriste, kako bi se referirali na iste pojmove poznavajući njihovu semantiku +* Način za **otkrivanje** što različiti agenti mogu učiniti, također temeljen na nekoj vrsti ontologije + +Promišljeni agenti su mnogo složeniji od reaktivnih, jer ne samo da reagiraju na promjene u okruženju, već također trebaju biti sposobni *inicirati* radnje. Jedna od predloženih arhitektura za promišljene agente je tzv. agent Vjerovanje-Želja-Namjera (BDI): + +* **Vjerovanja** čine skup znanja o okruženju agenta. To može biti strukturirano kao baza znanja ili skup pravila koje agent može primijeniti na specifičnu situaciju u okruženju. +* **Želje** definiraju što agent želi učiniti, tj. njegove ciljeve. Na primjer, cilj osobnog asistenta agenta gore je rezervirati putovanje, a cilj agenta hotela je maksimizirati profit. +* **Namjere** su specifične radnje koje agent planira kako bi postigao svoje ciljeve. Radnje obično mijenjaju okruženje i uzrokuju komunikaciju s drugim agentima. + +Postoje neke platforme dostupne za izgradnju višestrukih agentskih sustava, poput [JADE](https://jade.tilab.com/). [Ovaj rad](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) sadrži pregled višestrukih agentskih platformi, zajedno s kratkom poviješću višestrukih agentskih sustava i njihovim različitim scenarijima korištenja. + +## Zaključak + +Višestruki agentski sustavi mogu poprimiti vrlo različite oblike i koristiti se u mnogim različitim aplikacijama. +Svi oni teže fokusiranju na jednostavnije ponašanje pojedinog agenta i postizanju složenijeg ponašanja cijelog sustava zbog **sinergijskog učinka**. + +## 🚀 Izazov + +Primijenite ovu lekciju u stvarnom svijetu i pokušajte konceptualizirati višestruki agentski sustav koji može riješiti problem. Što bi, na primjer, višestruki agentski sustav trebao učiniti kako bi optimizirao rutu školskog autobusa? Kako bi mogao funkcionirati u pekarnici? + +## [Kviz nakon predavanja](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Pregled i samostalno učenje + +Pregledajte upotrebu ove vrste sustava u industriji. Odaberite područje poput proizvodnje ili industrije videoigara i otkrijte kako se višestruki agentski sustavi mogu koristiti za rješavanje jedinstvenih problema. + +## [Zadatak NetLogo](assignment.md) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/hr/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..6604a702 --- /dev/null +++ b/translations/hr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Zadatak za NetLogo + +Odaberite jedan od modela iz NetLogo biblioteke i upotrijebite ga za simulaciju stvarne životne situacije što je moguće preciznije. Dobar primjer bio bi prilagoditi model Virus iz mape Alternative Visualizations kako bi pokazao kako se može koristiti za modeliranje širenja COVID-19. Možete li izraditi model koji oponaša stvarno širenje virusa? + +Pokažite svoj rad tako što ćete spremiti kopiju i izraditi video demonstraciju u kojoj objašnjavate kako je model povezan sa stvarnom situacijom. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/7-Ethics/README.md b/translations/hr/lessons/7-Ethics/README.md new file mode 100644 index 00000000..551e4243 --- /dev/null +++ b/translations/hr/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etička i odgovorna umjetna inteligencija + +Skoro ste završili ovaj tečaj i nadam se da sada jasno vidite da se umjetna inteligencija temelji na nizu formalnih matematičkih metoda koje nam omogućuju pronalaženje odnosa u podacima i treniranje modela za repliciranje nekih aspekata ljudskog ponašanja. U ovom trenutku povijesti smatramo umjetnu inteligenciju vrlo moćnim alatom za izdvajanje uzoraka iz podataka i primjenu tih uzoraka za rješavanje novih problema. + +## [Kviz prije predavanja](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Međutim, u znanstvenoj fantastici često vidimo priče u kojima umjetna inteligencija predstavlja opasnost za čovječanstvo. Obično su te priče usredotočene na neku vrstu pobune umjetne inteligencije, kada AI odluči suprotstaviti se ljudima. To implicira da AI ima neku vrstu emocija ili može donositi odluke koje njezini programeri nisu predvidjeli. + +Vrsta umjetne inteligencije o kojoj smo učili u ovom tečaju nije ništa drugo nego velika matriksna aritmetika. To je vrlo moćan alat koji nam pomaže u rješavanju problema, i kao svaki drugi moćan alat - može se koristiti u dobre i loše svrhe. Važno je napomenuti da se može i *zloupotrijebiti*. + +## Načela odgovorne umjetne inteligencije + +Kako bismo izbjegli slučajnu ili namjernu zloupotrebu umjetne inteligencije, Microsoft ističe važna [Načela odgovorne umjetne inteligencije](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Sljedeći koncepti čine temelj tih načela: + +* **Pravednost** je povezana s važnim problemom *pristranosti modela*, koja može nastati korištenjem pristranih podataka za treniranje. Na primjer, kada pokušavamo predvidjeti vjerojatnost zapošljavanja osobe kao softverskog inženjera, model će vjerojatno dati prednost muškarcima - samo zato što je skup podataka za treniranje vjerojatno bio pristran prema muškoj populaciji. Moramo pažljivo uravnotežiti podatke za treniranje i istražiti model kako bismo izbjegli pristranosti te osigurali da model uzima u obzir relevantnije značajke. +* **Pouzdanost i sigurnost**. Po svojoj prirodi, AI modeli mogu griješiti. Neuronska mreža vraća vjerojatnosti, i to moramo uzeti u obzir pri donošenju odluka. Svaki model ima određenu preciznost i odziv, i to moramo razumjeti kako bismo spriječili štetu koju pogrešni savjeti mogu uzrokovati. +* **Privatnost i sigurnost** imaju specifične implikacije za umjetnu inteligenciju. Na primjer, kada koristimo neke podatke za treniranje modela, ti podaci na neki način postaju "integrirani" u model. S jedne strane, to povećava sigurnost i privatnost, a s druge strane - moramo se sjetiti na kojim je podacima model treniran. +* **Uključivost** znači da ne gradimo umjetnu inteligenciju kako bismo zamijenili ljude, već kako bismo ih nadopunili i učinili naš rad kreativnijim. To je također povezano s pravednošću, jer kada se bavimo nedovoljno zastupljenim zajednicama, većina podataka koje prikupljamo vjerojatno će biti pristrana, i moramo osigurati da su te zajednice uključene i ispravno obrađene od strane umjetne inteligencije. +* **Transparentnost**. Ovo uključuje osiguravanje da uvijek jasno komuniciramo kada se koristi umjetna inteligencija. Također, gdje god je to moguće, želimo koristiti AI sustave koji su *interpretabilni*. +* **Odgovornost**. Kada AI modeli donose neke odluke, nije uvijek jasno tko je odgovoran za te odluke. Moramo osigurati da razumijemo gdje leži odgovornost za odluke umjetne inteligencije. U većini slučajeva želimo uključiti ljude u proces donošenja važnih odluka, kako bi stvarne osobe bile odgovorne. + +## Alati za odgovornu umjetnu inteligenciju + +Microsoft je razvio [Alatni okvir za odgovornu umjetnu inteligenciju](https://github.com/microsoft/responsible-ai-toolbox) koji sadrži niz alata: + +* Nadzorna ploča za interpretabilnost (InterpretML) +* Nadzorna ploča za pravednost (FairLearn) +* Nadzorna ploča za analizu pogrešaka +* Nadzorna ploča za odgovornu umjetnu inteligenciju koja uključuje: + + - EconML - alat za uzročnu analizu, koji se fokusira na pitanja "što ako" + - DiCE - alat za kontrafaktualnu analizu koji vam omogućuje da vidite koje značajke treba promijeniti kako bi se utjecalo na odluku modela + +Za više informacija o etici umjetne inteligencije, posjetite [ovu lekciju](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) u kurikulumu strojnog učenja koja uključuje zadatke. + +## Pregled i samostalno učenje + +Prođite kroz ovaj [Put učenja](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) kako biste saznali više o odgovornoj umjetnoj inteligenciji. + +## [Kviz nakon predavanja](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/README.md b/translations/hr/lessons/README.md new file mode 100644 index 00000000..bc72aa18 --- /dev/null +++ b/translations/hr/lessons/README.md @@ -0,0 +1,17 @@ + +# Pregled + +![Pregled u crtežu](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hr.png) + +> Crtež bilješki od [Tomomi Imura](https://twitter.com/girlie_mac) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/X-Extras/X1-MultiModal/README.md b/translations/hr/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..94ad9c5b --- /dev/null +++ b/translations/hr/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Multi-modalne mreže + +Nakon uspjeha transformera u rješavanju zadataka obrade prirodnog jezika (NLP), iste ili slične arhitekture primijenjene su na zadatke računalnog vida. Sve je veći interes za izgradnju modela koji bi *kombinirali* sposobnosti vida i prirodnog jezika. Jedan od takvih pokušaja napravio je OpenAI, a naziva se CLIP i DALL.E. + +## Kontrastivno učenje slika (CLIP) + +Glavna ideja CLIP-a je usporediti tekstualne upite sa slikom i odrediti koliko dobro slika odgovara upitu. + +![CLIP Arhitektura](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hr.png) + +> *Slika iz [ovog blog posta](https://openai.com/blog/clip/)* + +Model je treniran na slikama preuzetim s interneta i njihovim opisima. Za svaki batch uzimamo N parova (slika, tekst) i pretvaramo ih u vektorske reprezentacije I, ..., T. Te se reprezentacije zatim međusobno uparuju. Funkcija gubitka definirana je tako da maksimizira kosinusnu sličnost između vektora koji odgovaraju jednom paru (npr. I i T) i minimizira kosinusnu sličnost između svih ostalih parova. Zbog toga se ovaj pristup naziva **kontrastivnim**. + +CLIP model/biblioteka dostupna je na [OpenAI GitHubu](https://github.com/openai/CLIP). Pristup je opisan u [ovom blog postu](https://openai.com/blog/clip/), a detaljnije u [ovom radu](https://arxiv.org/pdf/2103.00020.pdf). + +Nakon što je ovaj model prethodno treniran, možemo mu dati batch slika i batch tekstualnih upita, a on će vratiti tensor s vjerojatnostima. CLIP se može koristiti za nekoliko zadataka: + +**Klasifikacija slika** + +Pretpostavimo da trebamo klasificirati slike, primjerice, između mačaka, pasa i ljudi. U tom slučaju možemo modelu dati sliku i niz tekstualnih upita: "*slika mačke*", "*slika psa*", "*slika čovjeka*". U rezultirajućem vektoru s 3 vjerojatnosti samo trebamo odabrati indeks s najvećom vrijednošću. + +![CLIP za klasifikaciju slika](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hr.png) + +> *Slika iz [ovog blog posta](https://openai.com/blog/clip/)* + +**Pretraživanje slika na temelju teksta** + +Možemo učiniti i suprotno. Ako imamo kolekciju slika, možemo tu kolekciju proslijediti modelu zajedno s tekstualnim upitom - to će nam dati sliku koja je najviše slična zadanom upitu. + +## ✍️ Primjer: [Korištenje CLIP-a za klasifikaciju slika i pretraživanje slika](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Otvorite bilježnicu [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) kako biste vidjeli CLIP u akciji. + +## Generiranje slika s VQGAN+CLIP + +CLIP se također može koristiti za **generiranje slika** iz tekstualnog upita. Da bismo to učinili, potreban nam je **generatorski model** koji će moći generirati slike na temelju nekog vektorskog ulaza. Jedan od takvih modela naziva se [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Glavne ideje VQGAN-a koje ga razlikuju od običnog [GAN-a](../../4-ComputerVision/10-GANs/README.md) su sljedeće: +* Korištenje autoregresivne arhitekture transformera za generiranje sekvence vizualnih dijelova bogatih kontekstom koji čine sliku. Ti vizualni dijelovi se uče pomoću [CNN-a](../../4-ComputerVision/07-ConvNets/README.md). +* Korištenje diskriminatora podslika koji detektira jesu li dijelovi slike "stvarni" ili "lažni" (za razliku od pristupa "sve ili ništa" u tradicionalnim GAN-ovima). + +Više o VQGAN-u saznajte na web stranici [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Jedna od važnih razlika između VQGAN-a i tradicionalnog GAN-a je ta što potonji može proizvesti pristojnu sliku iz bilo kojeg ulaznog vektora, dok VQGAN vjerojatno neće proizvesti koherentnu sliku. Stoga je potrebno dodatno usmjeriti proces stvaranja slike, a to se može učiniti pomoću CLIP-a. + +![VQGAN+CLIP Arhitektura](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hr.png) + +Za generiranje slike koja odgovara tekstualnom upitu, počinjemo s nekim nasumičnim vektorskim kodiranjem koje se prosljeđuje kroz VQGAN kako bi se proizvela slika. Zatim se CLIP koristi za stvaranje funkcije gubitka koja pokazuje koliko dobro slika odgovara tekstualnom upitu. Cilj je minimizirati taj gubitak koristeći backpropagation za prilagodbu parametara ulaznog vektora. + +Odlična biblioteka koja implementira VQGAN+CLIP je [Pixray](http://github.com/pixray/pixray). + +![Slika generirana Pixrayem](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hr.png) | ![Slika generirana Pixrayem](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hr.png) | ![Slika generirana Pixrayem](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hr.png) +----|----|---- +Slika generirana iz upita *bliski akvarelni portret mladog učitelja književnosti s knjigom* | Slika generirana iz upita *bliski uljani portret mlade učiteljice računalnih znanosti s računalom* | Slika generirana iz upita *bliski uljani portret starijeg učitelja matematike ispred ploče* + +> Slike iz kolekcije **Umjetni učitelji** autora [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E je verzija GPT-3 trenirana za generiranje slika iz tekstualnih upita. Trenirana je s 12 milijardi parametara. + +Za razliku od CLIP-a, DALL-E prima tekst i sliku kao jedinstveni niz tokena za slike i tekst. Stoga, iz više upita možete generirati slike na temelju teksta. + +### [DALL-E 2](https://openai.com/dall-e-2) +Glavna razlika između DALL-E 1 i 2 je ta što DALL-E 2 generira realističnije slike i umjetnička djela. + +Primjeri generiranja slika s DALL-E: +![Slika generirana Pixrayem](../../../../../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.hr.png) | ![Slika generirana Pixrayem](../../../../../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.hr.png) | ![Slika generirana Pixrayem](../../../../../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.hr.png) +----|----|---- +Slika generirana iz upita *bliski akvarelni portret mladog učitelja književnosti s knjigom* | Slika generirana iz upita *bliski uljani portret mlade učiteljice računalnih znanosti s računalom* | Slika generirana iz upita *bliski uljani portret starijeg učitelja matematike ispred ploče* + +## Reference + +* VQGAN rad: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP rad: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/sketchnotes/LICENSE.md b/translations/hr/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..93c8485d --- /dev/null +++ b/translations/hr/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,345 @@ + +Priznanje-Dijeljenje pod istim uvjetima 4.0 Međunarodna + +======================================================================= + +Creative Commons Corporation ("Creative Commons") nije odvjetnički ured i ne pruža pravne usluge ili pravne savjete. Distribucija javnih licenci Creative Commons ne stvara odnos odvjetnika i klijenta ili bilo koji drugi odnos. Creative Commons čini svoje licence i povezane informacije dostupnima "takvima kakve jesu". Creative Commons ne daje nikakva jamstva u vezi sa svojim licencama, bilo kojim materijalom licenciranim prema njihovim uvjetima i odredbama, ili bilo kojim povezanim informacijama. Creative Commons odriče svaku odgovornost za štetu koja proizlazi iz njihove upotrebe u najvećoj mogućoj mjeri. + +Korištenje javnih licenci Creative Commons + +Javne licence Creative Commons pružaju standardni skup uvjeta koje autori i drugi nositelji prava mogu koristiti za dijeljenje originalnih autorskih djela i drugog materijala podložnog autorskom pravu i određenim drugim pravima navedenim u javnoj licenci u nastavku. Sljedeće napomene služe samo u informativne svrhe, nisu iscrpne i ne čine dio naših licenci. + + Napomene za davatelje licenci: Naše javne licence namijenjene su + za korištenje od strane onih koji su ovlašteni dati javnosti + dopuštenje za korištenje materijala na načine koji su inače + ograničeni autorskim pravom i određenim drugim pravima. Naše + licence su neopozive. Davatelji licenci trebaju pročitati i + razumjeti uvjete licence koju odaberu prije nego što je primijene. + Davatelji licenci također trebaju osigurati sva potrebna prava + prije primjene naših licenci kako bi javnost mogla ponovno + koristiti materijal kako je predviđeno. Davatelji licenci trebaju + jasno označiti svaki materijal koji nije podložan licenci. To + uključuje drugi materijal licenciran pod CC-licencama ili + materijal korišten pod iznimkom ili ograničenjem autorskog prava. + Više napomena za davatelje licenci: + wiki.creativecommons.org/Considerations_for_licensors + + Napomene za javnost: Korištenjem jedne od naših javnih licenci, + davatelj licence daje javnosti dopuštenje za korištenje + licenciranog materijala pod određenim uvjetima. Ako dopuštenje + davatelja licence nije potrebno iz bilo kojeg razloga – na + primjer, zbog primjenjive iznimke ili ograničenja autorskog prava + – tada takva upotreba nije regulirana licencom. Naše licence + daju samo dopuštenja pod autorskim pravom i određenim drugim + pravima koje davatelj licence ima ovlasti dodijeliti. Korištenje + licenciranog materijala može i dalje biti ograničeno iz drugih + razloga, uključujući zbog toga što drugi imaju autorska prava ili + druga prava na materijal. Davatelj licence može postaviti posebne + zahtjeve, poput traženja da se sve promjene označe ili opišu. + Iako to nije obavezno prema našim licencama, potiče se poštivanje + takvih zahtjeva gdje je razumno. Više napomena za javnost: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Priznanje-Dijeljenje pod istim uvjetima 4.0 Međunarodna javna licenca + +Korištenjem Licenciranih prava (definiranih u nastavku), prihvaćate i slažete se da ćete biti vezani uvjetima i odredbama ove Creative Commons Priznanje-Dijeljenje pod istim uvjetima 4.0 Međunarodne javne licence ("Javna licenca"). U mjeri u kojoj se ova Javna licenca može tumačiti kao ugovor, dodijeljena su vam Licencirana prava u zamjenu za vaše prihvaćanje ovih uvjeta i odredbi, a Davatelj licence vam dodjeljuje takva prava u zamjenu za koristi koje Davatelj licence dobiva stavljanjem Licenciranog materijala na raspolaganje pod ovim uvjetima i odredbama. + +Odjeljak 1 -- Definicije. + + a. Prilagođeni materijal znači materijal podložan autorskom pravu i + sličnim pravima koji je izveden iz ili temeljen na Licenciranom + materijalu i u kojem je Licencirani materijal preveden, izmijenjen, + aranžiran, transformiran ili na drugi način modificiran na način + koji zahtijeva dopuštenje prema autorskom pravu i sličnim pravima + koja drži Davatelj licence. Za potrebe ove Javne licence, gdje je + Licencirani materijal glazbeno djelo, izvedba ili zvučni zapis, + Prilagođeni materijal uvijek se proizvodi kada je Licencirani + materijal sinkroniziran u vremenskom odnosu s pokretnom slikom. + + b. Licenca prilagoditelja znači licenca koju primjenjujete na svoja + autorska prava i slična prava u svojim doprinosima Prilagođenom + materijalu u skladu s uvjetima i odredbama ove Javne licence. + + c. Licenca kompatibilna s BY-SA znači licenca navedena na + creativecommons.org/compatiblelicenses, odobrena od strane + Creative Commonsa kao suštinski ekvivalent ove Javne licence. + + d. Autorska prava i slična prava znače autorska prava i/ili slična + prava usko povezana s autorskim pravom, uključujući, bez + ograničenja, prava na izvedbu, emitiranje, zvučni zapis i prava + sui generis na baze podataka, bez obzira na to kako su prava + označena ili kategorizirana. Za potrebe ove Javne licence, prava + navedena u Odjeljku 2(b)(1)-(2) nisu autorska prava i slična prava. + + e. Učinkovite tehnološke mjere znače one mjere koje, u odsutnosti + odgovarajućeg ovlaštenja, ne mogu biti zaobiđene prema zakonima + koji ispunjavaju obveze prema članku 11. WIPO Ugovora o autorskom + pravu usvojenog 20. prosinca 1996. i/ili sličnim međunarodnim + sporazumima. + + f. Iznimke i ograničenja znače poštenu upotrebu, pošteno postupanje + i/ili bilo koju drugu iznimku ili ograničenje autorskog prava i + sličnih prava koja se primjenjuju na vašu upotrebu Licenciranog + materijala. + + g. Elementi licence znače atribute licence navedene u nazivu Creative + Commons Javne licence. Elementi licence ove Javne licence su + Priznanje i Dijeljenje pod istim uvjetima. + + h. Licencirani materijal znači umjetničko ili književno djelo, baza + podataka ili drugi materijal na koji je Davatelj licence primijenio + ovu Javnu licencu. + + i. Licencirana prava znače prava dodijeljena vama pod uvjetima i + odredbama ove Javne licence, koja su ograničena na sva autorska + prava i slična prava koja se primjenjuju na vašu upotrebu + Licenciranog materijala i koja Davatelj licence ima ovlasti + licencirati. + + j. Davatelj licence znači pojedinac(i) ili entitet(i) koji dodjeljuju + prava prema ovoj Javnoj licenci. + + k. Dijeliti znači pružiti materijal javnosti bilo kojim sredstvima ili + procesom koji zahtijeva dopuštenje prema Licenciranim pravima, kao + što su reprodukcija, javno prikazivanje, javno izvođenje, + distribucija, širenje, komunikacija ili uvoz, i učiniti materijal + dostupnim javnosti, uključujući na načine na koje članovi javnosti + mogu pristupiti materijalu s mjesta i u vrijeme koje sami odaberu. + + l. Prava sui generis na baze podataka znače prava koja nisu autorska + prava, a proizlaze iz Direktive 96/9/EC Europskog parlamenta i + Vijeća od 11. ožujka 1996. o pravnoj zaštiti baza podataka, kako + je izmijenjena i/ili naslijeđena, kao i druga suštinski ekvivalentna + prava bilo gdje u svijetu. + + m. Vi znači pojedinac ili entitet koji koristi Licencirana prava prema + ovoj Javnoj licenci. Vaš ima odgovarajuće značenje. + +Odjeljak 2 -- Opseg. + + a. Dodjela licence. + + 1. Pod uvjetima i odredbama ove Javne licence, Davatelj licence + vam ovime dodjeljuje globalnu, besplatnu, ne-sublicencibilnu, + ne-ekskluzivnu, neopozivu licencu za korištenje Licenciranih + prava u Licenciranom materijalu kako biste: + + a. reproducirali i dijelili Licencirani materijal, u cijelosti + ili djelomično; i + + b. proizvodili, reproducirali i dijelili Prilagođeni materijal. + + 2. Iznimke i ograničenja. Radi izbjegavanja sumnje, gdje se + primjenjuju iznimke i ograničenja na vašu upotrebu, ova Javna + licenca se ne primjenjuje, i ne morate se pridržavati njezinih + uvjeta i odredbi. + + 3. Trajanje. Trajanje ove Javne licence navedeno je u Odjeljku 6(a). + + 4. Mediji i formati; dopuštene tehničke izmjene. Davatelj licence + ovlašćuje vas da koristite Licencirana prava u svim medijima i + formatima, bilo poznatim ili budućim, i da napravite tehničke + izmjene potrebne za to. Davatelj licence odriče se i/ili + pristaje ne isticati bilo koje pravo ili ovlast da vam zabrani + tehničke izmjene potrebne za korištenje Licenciranih prava, + uključujući tehničke izmjene potrebne za zaobilaženje + Učinkovitih tehnoloških mjera. Za potrebe ove Javne licence, + jednostavno pravljenje izmjena ovlaštenih ovim Odjeljkom 2(a)(4) + nikada ne proizvodi Prilagođeni materijal. + + 5. Primatelji nizvodno. + + a. Ponuda od Davatelja licence -- Licencirani materijal. Svaki + primatelj Licenciranog materijala automatski prima ponudu + od Davatelja licence za korištenje Licenciranih prava pod + uvjetima i odredbama ove Javne licence. + + b. Dodatna ponuda od Davatelja licence -- Prilagođeni materijal. + Svaki primatelj Prilagođenog materijala od vas automatski + prima ponudu od Davatelja licence za korištenje Licenciranih + prava u Prilagođenom materijalu pod uvjetima Licence + prilagoditelja koju primjenjujete. + + c. Bez ograničenja nizvodno. Ne smijete ponuditi ili nametnuti + nikakve dodatne ili različite uvjete ili odredbe, niti + primijeniti bilo koje Učinkovite tehnološke mjere na + Licencirani materijal ako to ograničava korištenje + Licenciranih prava od strane bilo kojeg primatelja + Licenciranog materijala. + + 6. Bez odobrenja. Ništa u ovoj Javnoj licenci ne predstavlja niti + se može tumačiti kao dopuštenje za tvrdnju ili impliciranje da + ste vi, ili da je vaša upotreba Licenciranog materijala, + povezana s, sponzorirana, odobrena ili dodijeljena službeni + status od strane Davatelja licence ili drugih označenih za + primanje priznanja kako je navedeno u Odjeljku 3(a)(1)(A)(i). + + b. Ostala prava. + + 1. Moralna prava, poput prava na integritet, nisu licencirana + prema ovoj Javnoj licenci, niti su prava na javnost, privatnost + i/ili druga slična prava osobnosti; međutim, u mjeri u kojoj je + to moguće, Davatelj licence odriče se i/ili pristaje ne isticati + takva prava koja drži Davatelj licence u ograničenoj mjeri + potrebnoj da vam omogući korištenje Licenciranih prava, ali ne + i drugačije. + + 2. Prava na patente i žigove nisu licencirana prema ovoj Javnoj + licenci. + + 3. U mjeri u kojoj je to moguće, Davatelj licence odriče se + bilo kojeg prava na prikupljanje naknada od vas za korištenje + Licenciranih prava, bilo izravno ili putem društva za + prikupljanje naknada prema bilo kojem dobrovoljnom ili + odricajućem zakonskom ili obveznom licencnom režimu. U svim + drugim slučajevima Davatelj licence izričito zadržava pravo + na prikupljanje takvih naknada. + +Odjeljak 3 -- Uvjeti licence. + +Vaše korištenje Licenciranih prava izričito je podložno sljedećim uvjetima. + + a. Priznanje. + + 1. Ako dijelite Licencirani materijal (uključujući u izmijenjenom + obliku), morate: + + a. zadržati sljedeće ako je to dostavljeno od strane Davatelja + licence uz Licencirani materijal: + + i. identifikaciju autora(a) Licenciranog materijala i + bilo kojih drugih označenih za primanje priznanja, na + bilo koji razuman način koji zahtijeva Davatelj licence + (uključujući pod pseudonimom ako je označeno); + + ii. obavijest o autorskom pravu; + + iii. obavijest koja upućuje na ovu Javnu licencu; + + iv. obavijest koja upućuje na odricanje od jamstava; + + v. URI ili hipervezu na Licencirani materijal u mjeri u + kojoj je to razumno izvedivo; + + b. naznačiti ako ste izmijenili Licencirani materijal i + zadržati naznaku bilo kojih prethodnih izmjena; i + + c. naznačiti da je Licencirani materijal licenciran prema + ovoj Javnoj licenci, i uključiti tekst ove Javne licence + ili URI ili hipervezu na ovu Javnu licencu. + + 2. Uvjete iz Odjeljka 3(a)(1) možete ispuniti na bilo koji razuman + način temeljen na mediju, sredstvima i kontekstu u kojem dijelite + Licencirani materijal. Na primjer, može biti razumno ispuniti + uvjete pružanjem URI-a ili hiperveze na resurs koji uključuje + potrebne informacije. + + 3. Ako to zatraži Davatelj licence, morate ukloniti bilo koju od + informacija potrebnih prema Odjeljku 3(a)(1)(A) u mjeri u kojoj + je to razumno izvedivo. + + b. Dijeljenje pod istim uvjetima. + + Osim uvjeta iz Odjeljka 3(a), ako dijelite Prilagođeni materijal koji + proizvodite, primjenjuju se i sljedeći uvjeti. + + 1. Licenca prilagoditelja koju primjenjujete mora biti Creative + Commons licenca s istim Elementima licence, ova verzija ili + kasnija, ili Licenca kompatibilna s BY-SA. + + 2. Morate uključiti tekst Licence prilagoditelja koju primjenjujete + ili URI ili hipervezu na Licencu prilagoditelja. Ovaj uvjet + možete ispuniti na bilo koji razuman način temeljen na mediju, + sredstvima i kontekstu u kojem dijelite Prilagođeni materijal. + + 3. Ne smijete ponuditi ili nametnuti nikakve dodatne ili različite + uvjete ili odredbe, niti primijeniti bilo koje Učinkovite + tehnološke mjere na Prilagođeni materijal koje ograničavaju + korištenje prava dodijeljenih prema Licenci prilagoditelja koju + primjenjujete. + +Odjeljak 4 -- Prava sui generis na baze podataka. + +Gdje Licencirana prava uključuju prava sui generis na baze podataka koja +se primjenjuju na vašu upotrebu Licenciranog materijala: + + a. radi izbjegavanja sumnje, Odjeljak 2(a)(1) dodjeljuje vam pravo na + izdvajanje, ponovno korištenje, reprodukciju i dijeljenje cijelog ili + značajnog dijela sadržaja baze podataka; + + b. ako uključite cijeli ili značajan dio sadržaja baze podataka u bazu + podataka u kojoj imate prava sui generis na baze podataka... +Prava, zatim baza podataka u kojoj imate prava sui generis na bazu podataka (ali ne i na njezin pojedinačni sadržaj) je prilagođeni materijal, + +uključujući za svrhe iz Odjeljka 3(b); i +c. Morate se pridržavati uvjeta iz Odjeljka 3(a) ako dijelite cijeli ili značajan dio sadržaja baze podataka. + +Radi izbjegavanja sumnje, ovaj Odjeljak 4 dopunjuje i ne zamjenjuje vaše obveze prema ovoj javnoj licenci gdje licencirana prava uključuju druga autorska prava i slična prava. + +--- + +Odjeljak 5 -- Odricanje od jamstava i ograničenje odgovornosti. + +a. OSIM AKO LICENCODAVAC NIJE IZRIČITO DRUGAČIJE ODREDIO, U NAJVEĆOJ MOGUĆOJ MJERI, LICENCODAVAC NUDI LICENCIRANI MATERIJAL "TAKAV KAKAV JE" I "DOSTUPAN", TE NE DAJE NIKAKVE IZJAVE ILI JAMSTVA BILO KOJE VRSTE U VEZI S LICENCIRANIM MATERIJALOM, BILO IZRIČITA, IMPLICIRANA, ZAKONSKA ILI DRUGA. TO UKLJUČUJE, BEZ OGRANIČENJA, JAMSTVA NASLOVA, PRODAJNOSTI, PRIKLADNOSTI ZA ODREĐENU SVRHU, NEKRŠENJA, ODSUTNOSTI SKRIVENIH ILI DRUGIH NEDOSTATAKA, TOČNOSTI, ILI PRISUTNOSTI ILI ODSUTNOSTI POGREŠAKA, BILO POZNATIH ILI OTKRIVENIH. GDJE ODRICANJE OD JAMSTAVA NIJE DOPUŠTENO U CIJELOSTI ILI DJELOMIČNO, OVO ODRICANJE MOŽDA SE NE PRIMJENJUJE NA VAS. + +b. U NAJVEĆOJ MOGUĆOJ MJERI, LICENCODAVAC NI U KOJEM SLUČAJU NEĆE BITI ODGOVORAN VAMA NA BILO KOJOJ PRAVNOJ OSNOVI (UKLJUČUJUĆI, BEZ OGRANIČENJA, NEMAR) ILI DRUGAČIJE ZA BILO KAKVE IZRAVNE, POSEBNE, NEIZRAVNE, SLUČAJNE, POSLJEDIČNE, KAZNENE, PRIMJERNE ILI DRUGE GUBITKE, TROŠKOVE, IZDATKE ILI ŠTETE KOJE PROIZLAZE IZ OVE JAVNE LICENCE ILI KORIŠTENJA LICENCIRANOG MATERIJALA, ČAK I AKO JE LICENCODAVAC BIO OBAVIJEŠTEN O MOGUĆNOSTI TAKVIH GUBITAKA, TROŠKOVA, IZDATAKA ILI ŠTETA. GDJE OGRANIČENJE ODGOVORNOSTI NIJE DOPUŠTENO U CIJELOSTI ILI DJELOMIČNO, OVO OGRANIČENJE MOŽDA SE NE PRIMJENJUJE NA VAS. + +c. Odricanje od jamstava i ograničenje odgovornosti navedeno gore treba se tumačiti na način koji, u najvećoj mogućoj mjeri, najbliže odgovara apsolutnom odricanju i odustajanju od sve odgovornosti. + +--- + +Odjeljak 6 -- Trajanje i prestanak. + +a. Ova javna licenca primjenjuje se za trajanje autorskih prava i sličnih prava licenciranih ovdje. Međutim, ako se ne pridržavate ove javne licence, vaša prava prema ovoj javnoj licenci automatski prestaju. + +b. Kada vaše pravo na korištenje licenciranog materijala prestane prema Odjeljku 6(a), ono se ponovno uspostavlja: + +1. automatski na datum kada se kršenje ispravi, pod uvjetom da se ispravi unutar 30 dana od vašeg otkrića kršenja; ili +2. uz izričitu ponovnu uspostavu od strane licencodavca. + +Radi izbjegavanja sumnje, ovaj Odjeljak 6(b) ne utječe na bilo koje pravo koje licencodavac može imati da traži pravne lijekove za vaša kršenja ove javne licence. + +c. Radi izbjegavanja sumnje, licencodavac također može ponuditi licencirani materijal pod zasebnim uvjetima ili prestati distribuirati licencirani materijal u bilo kojem trenutku; međutim, to neće prekinuti ovu javnu licencu. + +d. Odjeljci 1, 5, 6, 7 i 8 ostaju na snazi nakon prestanka ove javne licence. + +--- + +Odjeljak 7 -- Ostali uvjeti i odredbe. + +a. Licencodavac nije obvezan dodatnim ili različitim uvjetima i odredbama koje vi komunicirate, osim ako ih izričito ne prihvati. + +b. Bilo koji dogovori, razumijevanja ili sporazumi u vezi s licenciranim materijalom koji nisu navedeni ovdje su odvojeni od i neovisni o uvjetima i odredbama ove javne licence. + +--- + +Odjeljak 8 -- Tumačenje. + +a. Radi izbjegavanja sumnje, ova javna licenca ne smanjuje, ograničava, ograničava ili nameće uvjete na bilo koje korištenje licenciranog materijala koje bi se moglo zakonito provesti bez dopuštenja prema ovoj javnoj licenci. + +b. U najvećoj mogućoj mjeri, ako se bilo koja odredba ove javne licence smatra neprovedivom, automatski će se reformirati u najmanjoj mjeri potrebnoj da postane provediva. Ako se odredba ne može reformirati, bit će odvojena od ove javne licence bez utjecaja na provedivost preostalih uvjeta i odredbi. + +c. Nijedan uvjet ili odredba ove javne licence neće biti odustani niti će se pristati na nepoštivanje, osim ako licencodavac izričito ne pristane. + +d. Ništa u ovoj javnoj licenci ne predstavlja niti se može tumačiti kao ograničenje ili odricanje od bilo kojih privilegija i imuniteta koji se primjenjuju na licencodavca ili vas, uključujući od pravnih postupaka bilo koje jurisdikcije ili vlasti. + +--- + +======================================================================= + +Creative Commons nije stranka svojih javnih licenci. Bez obzira na to, Creative Commons može odlučiti primijeniti jednu od svojih javnih licenci na materijal koji objavljuje i u tim slučajevima će se smatrati "licencodavcem". Tekst javnih licenci Creative Commonsa posvećen je javnoj domeni prema CC0 posveti javnoj domeni. Osim za ograničenu svrhu označavanja da je materijal podijeljen pod javnom licencom Creative Commonsa ili kako je drugačije dopušteno prema politikama Creative Commonsa objavljenim na creativecommons.org/policies, Creative Commons ne dopušta korištenje zaštitnog znaka "Creative Commons" ili bilo kojeg drugog zaštitnog znaka ili logotipa Creative Commonsa bez prethodnog pisanog pristanka, uključujući, bez ograničenja, u vezi s bilo kakvim neovlaštenim izmjenama bilo koje od njegovih javnih licenci ili bilo kojim drugim dogovorima, razumijevanjima ili sporazumima u vezi s korištenjem licenciranog materijala. Radi izbjegavanja sumnje, ovaj odlomak nije dio javnih licenci. + +Creative Commons može se kontaktirati na creativecommons.org. + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/lessons/sketchnotes/README.md b/translations/hr/lessons/sketchnotes/README.md new file mode 100644 index 00000000..3ac72195 --- /dev/null +++ b/translations/hr/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Sve sketchnoteovi kurikuluma mogu se preuzeti ovdje. + +🎨 Autor: 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/) + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hu/README.md b/translations/hu/README.md new file mode 100644 index 00000000..24cd2e57 --- /dev/null +++ b/translations/hu/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) + +# Mesterséges Intelligencia Kezdőknek - Tananyag + +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| Mesterséges Intelligencia Kezdőknek - _Sketchnote készítette: [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Fedezd fel a **Mesterséges Intelligencia** (MI) világát 12 hetes, 24 leckéből álló tananyagunkkal! Gyakorlati leckéket, kvízeket és laborokat tartalmaz. A tananyag kezdőbarát, és olyan eszközöket mutat be, mint a TensorFlow és a PyTorch, valamint az MI etikai kérdéseit is tárgyalja. + +## Amit megtanulsz + +**[A kurzus gondolattérképe](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +Ebben a tananyagban megtanulod: + +* A mesterséges intelligencia különböző megközelítéseit, beleértve a "régi jó" szimbolikus megközelítést **Tudásreprezentációval** és érveléssel ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neurális hálózatokat** és **mélytanulást**, amelyek a modern MI alapját képezik. Ezeket a fontos témákat két népszerű keretrendszer - [TensorFlow](http://Tensorflow.org) és [PyTorch](http://pytorch.org) - kódjain keresztül illusztráljuk. +* **Neurális architektúrákat** képek és szövegek feldolgozására. Bár a legújabb modelleket is érintjük, nem feltétlenül fedjük le a legkorszerűbbeket. +* Kevésbé népszerű MI megközelítéseket, mint például a **Genetikus Algoritmusok** és a **Többügynökös Rendszerek**. + +Amit nem fogunk lefedni ebben a tananyagban: + +> [Minden további forrást megtalálsz a kurzushoz a Microsoft Learn gyűjteményünkben](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Az **MI üzleti alkalmazásainak** eseteit. Javasoljuk, hogy vegyél részt a [Bevezetés az MI-be üzleti felhasználók számára](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) tanulási úton a Microsoft Learn-en, vagy az [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum) programon, amelyet az [INSEAD](https://www.insead.edu/) közreműködésével fejlesztettek ki. +* A **klasszikus gépi tanulást**, amelyet részletesen bemutatunk a [Gépi Tanulás Kezdőknek Tananyagunkban](http://github.com/Microsoft/ML-for-Beginners). +* Gyakorlati MI alkalmazásokat, amelyeket a **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** segítségével építettek. Ehhez javasoljuk, hogy kezdj a Microsoft Learn moduljaival, például [látás](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [természetes nyelvfeldolgozás](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generatív MI az Azure OpenAI Service segítségével](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** és mások. +* Specifikus ML **felhőkeretrendszereket**, mint például [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), vagy [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Javasoljuk, hogy használd a [Gépi tanulási megoldások építése és működtetése az Azure Machine Learning segítségével](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) és a [Gépi tanulási megoldások építése és működtetése az Azure Databricks segítségével](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum) tanulási utakat. +* **Beszélgető MI** és **chatbotok**. Ehhez külön [Beszélgető MI megoldások létrehozása](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) tanulási út érhető el, valamint [ez a blogbejegyzés](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) is hasznos lehet. +* A mélytanulás **mély matematikai háttere**. Ehhez ajánljuk Ian Goodfellow, Yoshua Bengio és Aaron Courville [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) című könyvét, amely online is elérhető: [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Egy könnyed bevezetéshez az _MI a felhőben_ témákhoz érdemes lehet elvégezni a [Bevezetés a mesterséges intelligenciába az Azure-on](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) tanulási utat. + +# Tartalom + +| | Lecke Link | PyTorch/Keras/TensorFlow | Labor | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Kurzus beállítása](./lessons/0-course-setup/setup.md) | [Fejlesztési környezet beállítása](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Bevezetés az MI-be**](./lessons/1-Intro/README.md) | | | +| 01 | [Bevezetés és az MI története](./lessons/1-Intro/README.md) | - | - | +| II | **Szimbolikus MI** | +| 02 | [Tudásreprezentáció és szakértői rendszerek](./lessons/2-Symbolic/README.md) | [Szakértői rendszerek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontológia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Fogalmi gráf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Bevezetés a neurális hálózatokba**](./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) | [Labor](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Többrétegű perceptron és saját keretrendszer létrehozása](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Labor](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Bevezetés a keretrendszerekbe (PyTorch/TensorFlow) és túltanulás](./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) | [Labor](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Számítógépes látás**](./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)| [Fedezd fel a számítógépes látást a Microsoft Azure-on](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Bevezetés a számítógépes látásba. 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) | [Labor](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolúciós neurális hálózatok](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN Architektúrák](./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) | [Labor](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Előre betanított hálózatok és transzfer tanulás](./lessons/4-ComputerVision/08-TransferLearning/README.md) és [Tanítási trükkök](./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 | [Autoenkóderek és 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 | [Generatív adverszárius hálózatok és művészi stílusátvitel](./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 | [Objektumfelismerés](./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 | [Szemantikus szegmentáció. 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 | [**Természetes nyelvfeldolgozás**](./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) | [Fedezd fel a természetes nyelvfeldolgozást a Microsoft Azure-on](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Szöveg reprezentáció. 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 | [Szemantikus szóbeágyazások. Word2Vec és 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 | [Nyelvi modellezés. Saját beágyazások tanítása](./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 | [Rekurzív neurális hálózatok](./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 | [Generatív rekurzív hálózatok](./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 | [Transzformerek. 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 | [Név entitás felismerés](./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 | [Nagy nyelvi modellek, prompt programozás és kevés példás feladatok](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Egyéb AI technikák** || | +| 21 | [Genetikus algoritmusok](./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 | [Mély megerősítéses tanulás](./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 | [Többügynökös rendszerek](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **AI Etika** | | | +| 24 | [AI Etika és felelős AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Felelős AI alapelvek](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extrák** | | | +| 25 | [Multi-modális hálózatok, CLIP és 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) | | + +## Minden lecke tartalmazza + +* Előzetes olvasmányokat +* Futtatható Jupyter Notebookokat, amelyek gyakran keretrendszer-specifikusak (**PyTorch** vagy **TensorFlow**). A futtatható notebookok rengeteg elméleti anyagot is tartalmaznak, így a téma megértéséhez legalább az egyik verziót (PyTorch vagy TensorFlow) érdemes átnézni. +* **Labok**, amelyek néhány témához elérhetők, és lehetőséget adnak arra, hogy az elsajátított anyagot egy konkrét problémára alkalmazd. +* Egyes szekciók hivatkozásokat tartalmaznak [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) modulokra, amelyek kapcsolódó témákat fednek le. + +## Kezdés + +- Létrehoztunk egy [beállítási leckét](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), amely segít a fejlesztési környezeted beállításában. - Oktatóknak létrehoztunk egy [tantervi beállítási leckét](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) is! +- Hogyan [futtasd a kódot VSCode-ban vagy CodeSpace-ben](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Kövesd ezeket a lépéseket: + +Forkold a repót: Kattints a jobb felső sarokban található "Fork" gombra. + +Klónozd a repót: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Ne felejtsd el csillagozni (🌟) ezt a repót, hogy később könnyebben megtaláld. + +## Találkozz más tanulókkal + +Csatlakozz a [hivatalos AI Discord szerverünkhöz](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), hogy találkozz és kapcsolatba lépj más tanulókkal, akik ezt a kurzust végzik, és támogatást kapj. + +Ha termék-visszajelzésed vagy kérdéseid vannak a fejlesztés során, látogasd meg az [Azure AI Foundry fejlesztői fórumot](https://aka.ms/foundry/forum) + +## Kvízek +> **Megjegyzés a kvízekről**: Minden kvíz az etc\quiz-app mappában található Quiz-app mappában van. A leckékből vannak hivatkozva, a kvíz alkalmazás helyben futtatható vagy Azure-ra telepíthető; kövesd az utasításokat a `quiz-app` mappában. Ezeket fokozatosan lokalizálják. +## Segítség Kérve + +Van javaslatod, vagy találtál helyesírási vagy kódhibát? Nyiss egy hibajegyet, vagy hozz létre egy pull requestet. + +## Külön Köszönet + +* **✍️ Elsődleges szerző:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Szerkesztő:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Illusztrátor:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Kvízkészítő:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Fő közreműködők:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Egyéb Tananyagok + +Csapatunk más tananyagokat is készít! Nézd meg ezeket: + +- [Generatív MI Kezdőknek](https://aka.ms/genai-beginners) +- [Generatív MI Kezdőknek .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generatív MI JavaScript-tel](https://github.com/microsoft/generative-ai-with-javascript) +- [Generatív MI Java-val](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [MI Kezdőknek](https://aka.ms/ai-beginners) +- [Adattudomány Kezdőknek](https://aka.ms/datascience-beginners) +- [Gépi Tanulás Kezdőknek](https://aka.ms/ml-beginners) +- [Kiberbiztonság Kezdőknek](https://github.com/microsoft/Security-101) +- [Webfejlesztés Kezdőknek](https://aka.ms/webdev-beginners) +- [IoT Kezdőknek](https://aka.ms/iot-beginners) +- [XR Fejlesztés Kezdőknek](https://github.com/microsoft/xr-development-for-beginners) +- [GitHub Copilot Mesterfokon: Ügynöki Használat](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [GitHub Copilot Mesterfokon: C#/.NET Fejlesztőknek](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Válaszd a Saját Copilot Kalandodat](https://github.com/microsoft/CopilotAdventures) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/SECURITY.md b/translations/hu/SECURITY.md new file mode 100644 index 00000000..3ecd3345 --- /dev/null +++ b/translations/hu/SECURITY.md @@ -0,0 +1,49 @@ + +## Biztonság + +A Microsoft komolyan veszi szoftvertermékei és szolgáltatásai biztonságát, beleértve az összes forráskód-tárházat, amelyeket GitHub szervezeteinken keresztül kezelünk, mint például [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) és [GitHub szervezeteink](https://opensource.microsoft.com/). + +Ha úgy gondolja, hogy biztonsági sebezhetőséget talált valamelyik Microsoft tulajdonában lévő tárházban, amely megfelel [a Microsoft biztonsági sebezhetőség definíciójának](https://aka.ms/opensource/security/definition), kérjük, jelentse nekünk az alábbiakban leírt módon. + +## Biztonsági problémák jelentése + +**Kérjük, ne jelentsen biztonsági sebezhetőségeket nyilvános GitHub problémákon keresztül.** + +Ehelyett jelentse őket a Microsoft Security Response Center (MSRC) oldalán: [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Ha inkább bejelentkezés nélkül szeretne jelentést tenni, küldjön e-mailt a [secure@microsoft.com](mailto:secure@microsoft.com) címre. Ha lehetséges, titkosítsa üzenetét PGP kulcsunkkal; töltse le azt a [Microsoft Security Response Center PGP Key oldalról](https://aka.ms/opensource/security/pgpkey). + +24 órán belül választ kell kapnia. Ha valamilyen okból nem kap választ, kérjük, kövesse nyomon e-mailben, hogy megbizonyosodjon arról, hogy megkaptuk az eredeti üzenetét. További információkért látogasson el a [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) oldalra. + +Kérjük, hogy az alábbiakban felsorolt információkat (amennyit csak tud) adja meg, hogy jobban megértsük a lehetséges probléma természetét és terjedelmét: + + * A probléma típusa (pl. puffer túlcsordulás, SQL injekció, cross-site scripting stb.) + * Az érintett forrásfájl(ok) teljes elérési útja, amelyek a probléma megjelenéséhez kapcsolódnak + * Az érintett forráskód helye (tag/ág/commit vagy közvetlen URL) + * Bármilyen speciális konfiguráció, amely szükséges a probléma reprodukálásához + * Lépésről lépésre leírt utasítások a probléma reprodukálásához + * Proof-of-concept vagy exploit kód (ha lehetséges) + * A probléma hatása, beleértve azt, hogy egy támadó hogyan használhatná ki a problémát + +Ezek az információk segítenek gyorsabban feldolgozni a jelentését. + +Ha hibajutalomért jelent, a részletesebb jelentések hozzájárulhatnak magasabb jutalomhoz. További információért látogasson el a [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) oldalára, ahol aktív programjainkról talál részleteket. + +## Előnyben részesített nyelvek + +Előnyben részesítjük, ha minden kommunikáció angol nyelven történik. + +## Irányelv + +A Microsoft a [Koordinált sebezhetőség-feltárás](https://aka.ms/opensource/security/cvd) elvét követi. + +**Felelősségkizárás**: +Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális, emberi fordítást igénybe venni. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért. \ No newline at end of file diff --git a/translations/hu/etc/CODE_OF_CONDUCT.md b/translations/hu/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..8bdc63b4 --- /dev/null +++ b/translations/hu/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoft Nyílt Forráskódú Magatartási Kódex + +Ez a projekt elfogadta a [Microsoft Nyílt Forráskódú Magatartási Kódexét](https://opensource.microsoft.com/codeofconduct/). + +Erőforrások: + +- [Microsoft Nyílt Forráskódú Magatartási Kódex](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Magatartási Kódex GYIK](https://opensource.microsoft.com/codeofconduct/faq/) +- Kérdésekkel vagy aggályokkal forduljon a [opencode@microsoft.com](mailto:opencode@microsoft.com) címhez + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/etc/CONTRIBUTING.md b/translations/hu/etc/CONTRIBUTING.md new file mode 100644 index 00000000..99cd2e78 --- /dev/null +++ b/translations/hu/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# Hozzájárulás + +Ez a projekt örömmel fogadja a hozzájárulásokat és javaslatokat. A legtöbb hozzájárulás esetén szükséges, hogy elfogadj egy Hozzájárulói Licencszerződést (Contributor License Agreement, CLA), amelyben kijelented, hogy jogod van a hozzájárulásod felhasználásának engedélyezésére, és ténylegesen meg is adod nekünk ezt a jogot. Részletekért látogasd meg a https://cla.microsoft.com oldalt. + +Amikor benyújtasz egy pull requestet, egy CLA-bot automatikusan ellenőrzi, hogy szükséges-e CLA-t biztosítanod, és ennek megfelelően megjelöli a PR-t (pl. címkével, megjegyzéssel). Egyszerűen kövesd a bot által adott utasításokat. Ezt csak egyszer kell megtenned az összes olyan repó esetében, amely a CLA-nkat használja. + +Ez a projekt a [Microsoft Nyílt Forráskódú Magatartási Kódexét](https://opensource.microsoft.com/codeofconduct/) alkalmazza. További információért lásd a [Magatartási Kódex GYIK](https://opensource.microsoft.com/codeofconduct/faq/) oldalt, vagy lépj kapcsolatba velünk az [opencode@microsoft.com](mailto:opencode@microsoft.com) címen bármilyen további kérdéssel vagy megjegyzéssel. + +# Hozzájárulások keresése + +Jelenleg aktívan keresünk hozzájárulásokat az alábbi témákban: + +- [ ] Írj szekciót a Mélyerősítéses Tanulásról +- [ ] Fejleszd az Objektumfelismerés szekciót és notebookot +- [ ] PyTorch Lightning (ehhez a szekcióhoz: [link](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Írj szekciót és példákat a Nevesített Entitás Felismerésről +- [ ] Készíts példákat saját embeddingek betanításához ehhez a szekcióhoz: [link](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/etc/Mindmap.md b/translations/hu/etc/Mindmap.md new file mode 100644 index 00000000..072701e4 --- /dev/null +++ b/translations/hu/etc/Mindmap.md @@ -0,0 +1,85 @@ + +# MI + +## [Bevezetés a MI-be](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - MI definíciója + - MI története + - MI megközelítések + - Felülről lefelé/Szimbolikus + - Alulról felfelé/Neurális + - Evolúciós + - Szinergikus/Emergens MI + - [Microsoft MI Üzleti Iskola](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Szimbolikus MI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Tudásreprezentáció + - [Szakértői rendszerek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontológiák](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Szemantikus web + +## [Neurális hálózatok](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) + - [Többrétegű hálózatok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Bevezetés keretrendszerekbe](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) + - [Túlillesztés](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Számítógépes látás](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Az MS Learn-en + - [MI alapok: Számítógépes látás felfedezése](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Számítógépes látás PyTorch segítségével](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Számítógépes látás TensorFlow segítségével](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Bevezetés a számítógépes látásba. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvolúciós hálózatok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN architektúrák](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Átviteli tanulás](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Tanítási trükkök](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoenkóderek és VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generatív ellenséges hálózatok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Stílusátvitel](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Objektumfelismerés](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Szegmentáció](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Természetes nyelvfeldolgozás](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Az MS Learn-en + - [MI alapok: Természetes nyelvfeldolgozás felfedezése](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [Természetes nyelvfeldolgozás PyTorch segítségével](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Természetes nyelvfeldolgozás TensorFlow segítségével](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Szöveg reprezentációja](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Szavak zsákja + - TF/IDF + - [Szemantikus beágyazások](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Nyelvi modellezés](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurzív neurális hálózatok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generatív rekurzív hálózatok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transzformerek és BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Névvel ellátott entitás felismerése](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Szöveg generálás és GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) +## Egyéb technikák + - [Genetikus algoritmusok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Mély megerősítéses tanulás](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Többügynökös rendszerek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [MI Etika](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn a felelős MI-ről](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## Extrák + - [Multimodális hálózatok](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 + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/etc/SUPPORT.md b/translations/hu/etc/SUPPORT.md new file mode 100644 index 00000000..4d288dce --- /dev/null +++ b/translations/hu/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Támogatás + +## Hogyan lehet hibákat bejelenteni és segítséget kérni + +Ez a projekt a GitHub Issues-t használja a hibák és funkciókérések nyomon követésére. Kérjük, keresse meg a meglévő hibákat, mielőtt újakat jelentene be, hogy elkerülje a duplikációkat. Új hibák esetén jelentse be a hibát vagy funkciókérést új Issue-ként. + +A projekt használatával kapcsolatos segítségért és kérdésekért használja a Vitafórumokat. + +## Microsoft Támogatási Irányelv + +A projekt támogatása az itt felsorolt erőforrásokra korlátozódik. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/etc/TRANSLATIONS.md b/translations/hu/etc/TRANSLATIONS.md new file mode 100644 index 00000000..a3b0246d --- /dev/null +++ b/translations/hu/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Járulj hozzá az órák fordításával + +Szívesen fogadjuk az órák fordítását ebben a tananyagban! + +## Útmutató + +Minden óramappában és órabevezető mappában találhatók a lefordított markdown fájlok. + +> Megjegyzés: Kérjük, ne fordítsd le a kódminták fájljaiban található kódot; csak a README, a feladatok és a kvízek fordítása szükséges. Köszönjük! + +A lefordított fájloknak az alábbi elnevezési konvenciót kell követniük: + +**README._[nyelv]_.md** + +ahol _[nyelv]_ egy kétbetűs nyelvi rövidítés az ISO 639-1 szabvány szerint (pl. `README.es.md` spanyolhoz és `README.nl.md` hollandhoz). + +**assignment._[nyelv]_.md** + +A README fájlokhoz hasonlóan kérjük, fordítsd le a feladatokat is. + +**Kvízek** + +1. Add hozzá a fordításodat a quiz-app-hoz úgy, hogy létrehozol egy fájlt itt: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, a megfelelő elnevezési konvencióval (pl. en.json, fr.json). **Kérjük, ne lokalizáld a 'true' vagy 'false' szavakat. Köszönjük!** + +2. Add hozzá a nyelvkódodat a quiz-app legördülő menüjéhez az App.vue fájlban. + +3. Szerkeszd a quiz-app [translations index.js fájlját](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js), hogy hozzáadd a nyelvedet. + +4. Végül szerkeszd az ÖSSZES kvíz linket a lefordított README.md fájljaidban, hogy közvetlenül a lefordított kvízre mutassanak: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 helyett https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**KÖSZÖNJÜK** + +Nagyon értékeljük az erőfeszítéseidet! + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/etc/quiz-app/README.md b/translations/hu/etc/quiz-app/README.md new file mode 100644 index 00000000..04ffa048 --- /dev/null +++ b/translations/hu/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# Kvízek + +Ezek a kvízek az AI tananyag előtti és utáni kvízek a https://aka.ms/ai-beginners oldalon. + +## Fordított kvízkészlet hozzáadása + +Fordítás hozzáadásához hozz létre megfelelő kvízstruktúrákat az `assets/translations` mappákban. Az eredeti kvízek az `assets/translations/en` mappában találhatók. A kvízek több csoportba vannak osztva a leckék szerint. Ügyelj arra, hogy a számozás illeszkedjen a megfelelő kvízszakaszhoz. Összesen 40 kvíz van ebben a tananyagban, a számozás 0-tól kezdődik. + +A fordítások szerkesztése után szerkeszd az index.js fájlt a fordítási mappában, hogy importáld az összes fájlt az `en` mappában található konvenciók szerint. + +Szerkeszd az `index.js` fájlt az `assets/translations` mappában, hogy importáld az új fordított fájlokat. + +Ezután szerkeszd a legördülő menüt az `App.vue` fájlban ebben az alkalmazásban, hogy hozzáadd a nyelvedet. Illeszd a lokalizált rövidítést a nyelved mappanevéhez. + +Végül szerkeszd az összes kvíz linket a fordított leckékben, ha léteznek, hogy tartalmazzák ezt a lokalizációs lekérdezési paramétert: például `?loc=fr`. + +## Projekt beállítása + +``` +npm install +``` + +### Fejlesztéshez fordít és automatikusan újratölt + +``` +npm run serve +``` + +### Termeléshez fordít és tömörít + +``` +npm run build +``` + +### Fájlokat ellenőriz és javít + +``` +npm run lint +``` + +### Konfiguráció testreszabása + +Lásd: [Configuration Reference](https://cli.vuejs.org/config/). + +Köszönet az eredeti kvízalkalmazás verziójáért: https://github.com/arpan45/simple-quiz-vue + +## Azure-ra telepítés + +Íme egy lépésről lépésre útmutató, hogy elkezdhesd: + +1. Forkolj egy GitHub repót +Győződj meg róla, hogy a statikus webalkalmazásod kódja a GitHub repódban van. Forkold ezt a repót. + +2. Hozz létre egy Azure statikus webalkalmazást +- Hozz létre egy [Azure fiókot](http://azure.microsoft.com) +- Lépj be az [Azure portálra](https://portal.azure.com) +- Kattints a „Create a resource” gombra, és keress rá a „Static Web App”-ra. +- Kattints a „Create” gombra. + +3. Konfiguráld a statikus webalkalmazást +- Alapok: + - Előfizetés: Válaszd ki az Azure előfizetésedet. + - Erőforráscsoport: Hozz létre egy új erőforráscsoportot, vagy használj egy meglévőt. + - Név: Adj nevet a statikus webalkalmazásodnak. + - Régió: Válaszd ki a felhasználóidhoz legközelebbi régiót. + +- #### Telepítési részletek: + - Forrás: Válaszd a „GitHub”-ot. + - GitHub fiók: Engedélyezd az Azure számára, hogy hozzáférjen a GitHub fiókodhoz. + - Szervezet: Válaszd ki a GitHub szervezetedet. + - Repó: Válaszd ki a repót, amely tartalmazza a statikus webalkalmazásod. + - Ág: Válaszd ki azt az ágat, amelyből telepíteni szeretnél. + +- #### Build részletek: + - Build előbeállítások: Válaszd ki az alkalmazásod keretrendszerét (pl. React, Angular, Vue stb.). + - Alkalmazás helye: Add meg az alkalmazás kódját tartalmazó mappát (pl. / ha a gyökérben van). + - API helye: Ha van API-d, add meg annak helyét (opcionális). + - Kimeneti hely: Add meg azt a mappát, ahol a build kimenete generálódik (pl. build vagy dist). + +4. Áttekintés és létrehozás +Tekintsd át a beállításaidat, és kattints a „Create” gombra. Az Azure létrehozza a szükséges erőforrásokat, és létrehoz egy GitHub Actions munkafolyamatot a repódban. + +5. GitHub Actions munkafolyamat +Az Azure automatikusan létrehoz egy GitHub Actions munkafolyamat fájlt a repódban (.github/workflows/azure-static-web-apps-.yml). Ez a munkafolyamat kezeli a build és telepítési folyamatot. + +6. Telepítés figyelése +Lépj a „Actions” fülre a GitHub repódban. +Látnod kell egy futó munkafolyamatot. Ez a munkafolyamat felépíti és telepíti a statikus webalkalmazásodat az Azure-ra. +Amint a munkafolyamat befejeződik, az alkalmazásod élő lesz az Azure által biztosított URL-en. + +### Példa munkafolyamat fájl + +Íme, hogyan nézhet ki egy GitHub Actions munkafolyamat fájl: +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 +``` + +### További források +- [Azure Static Web Apps Dokumentáció](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [GitHub Actions Dokumentáció](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/0-course-setup/for-teachers.md b/translations/hu/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..0f1fd713 --- /dev/null +++ b/translations/hu/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Oktatóknak + +Szeretné használni ezt a tananyagot az osztályában? Nyugodtan tegye meg! + +Valójában a GitHubon belül is használhatja, a GitHub Classroom segítségével. + +Ehhez fork-olja ezt a repót. Minden leckéhez létre kell hoznia egy külön repót, tehát ki kell emelnie minden mappát egy külön repóba. Így a [GitHub Classroom](https://classroom.github.com/classrooms) külön-külön tudja kezelni az egyes leckéket. + +Ezek az [átfogó útmutatók](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) segítenek megérteni, hogyan állíthatja be az osztálytermet. + +## A repó használata jelenlegi formájában + +Ha szeretné a repót úgy használni, ahogy most van, GitHub Classroom nélkül, az is lehetséges. Ebben az esetben kommunikálnia kell a diákjaival, hogy melyik leckén dolgozzanak együtt. + +Online formátumban (Zoom, Teams vagy más platform) létrehozhat kisebb csoportokat a kvízekhez, és mentorálhatja a diákokat, hogy felkészüljenek a tanulásra. Ezután meghívhatja a diákokat a kvízekre, és kérheti, hogy egy adott időpontban 'issue'-ként nyújtsák be a válaszaikat. Ugyanezt teheti a feladatokkal is, ha azt szeretné, hogy a diákok nyíltan, együttműködve dolgozzanak. + +Ha inkább privát formátumot részesít előnyben, kérje meg a diákjait, hogy fork-olják a tananyagot, leckéről leckére, saját GitHub repóikba, privát repóként, és adjanak Önnek hozzáférést. Így a kvízeket és a feladatokat privát módon végezhetik el, és issue-ként nyújthatják be azokat az Ön osztálytermi repójába. + +Számos módja van annak, hogy ez működjön egy online osztálytermi formátumban. Kérjük, ossza meg velünk, hogy Önnek mi vált be a legjobban! + +## Kérjük, ossza meg velünk a véleményét + +Szeretnénk, hogy ez a tananyag Önnek és a diákjainak is megfelelő legyen. Kérjük, ossza meg velünk visszajelzéseit a vitafórumokon! + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/0-course-setup/how-to-run.md b/translations/hu/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..94500db1 --- /dev/null +++ b/translations/hu/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Hogyan futtassuk a kódot + +Ez a tananyag számos futtatható példát és labort tartalmaz, amelyeket érdemes kipróbálni. Ehhez szükséged lesz arra, hogy Python kódot tudj futtatni a tananyaghoz mellékelt Jupyter Notebookokban. Több lehetőséged is van a kód futtatására: + +## Futtatás helyben a számítógépeden + +Ahhoz, hogy a kódot helyben futtasd a számítógépeden, szükséged lesz valamilyen Python verzió telepítésére. Személy szerint a **[miniconda](https://conda.io/en/latest/miniconda.html)** telepítését ajánlom – ez egy viszonylag könnyű telepítés, amely támogatja a `conda` csomagkezelőt különböző Python **virtuális környezetekhez**. + +Miután telepítetted a minicondát, klónoznod kell a repót, és létre kell hoznod egy virtuális környezetet, amelyet a kurzushoz fogsz használni: + +```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 használata Python kiterjesztéssel + +Valószínűleg a legjobb módja a tananyag használatának, ha megnyitod [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) alkalmazásban a [Python kiterjesztéssel](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Megjegyzés**: Miután klónoztad és megnyitottad a könyvtárat a VS Code-ban, az automatikusan javasolni fogja a Python kiterjesztések telepítését. A miniconda telepítésére is szükséged lesz, ahogy fentebb leírtuk. + +> **Megjegyzés**: Ha a VS Code azt javasolja, hogy nyisd meg a repót konténerben, ezt el kell utasítanod, hogy a helyi Python telepítést használd. + +### Jupyter használata a böngészőben + +A Jupyter környezetet közvetlenül a böngészőből is használhatod a saját számítógépeden. Valójában mind a klasszikus Jupyter, mind a Jupyter Hub kényelmes fejlesztési környezetet biztosít automatikus kiegészítéssel, kódkiemeléssel stb. + +A Jupyter helyi indításához menj a kurzus könyvtárába, és futtasd az alábbi parancsot: + +```bash +jupyter notebook +``` +vagy +```bash +jupyterhub +``` +Ezután navigálhatsz bármely `.ipynb` fájlhoz, megnyithatod őket, és elkezdhetsz dolgozni. + +### Futtatás konténerben + +Egy alternatíva a Python telepítésére, ha a kódot konténerben futtatod. Mivel a repónk tartalmaz egy speciális `.devcontainer` mappát, amely leírja, hogyan építsünk konténert ehhez a repóhoz, a VS Code fel fogja ajánlani, hogy nyisd meg a kódot konténerben. Ehhez szükséged lesz a Docker telepítésére, és ez bonyolultabb is lehet, ezért inkább haladó felhasználóknak ajánljuk. + +## Futtatás a felhőben + +Ha nem szeretnél helyben Python-t telepíteni, és van hozzáférésed valamilyen felhőalapú erőforráshoz, egy jó alternatíva lehet a kód futtatása a felhőben. Több módja is van ennek: + +* Használhatod a **[GitHub Codespaces](https://github.com/features/codespaces)** szolgáltatást, amely egy virtuális környezetet hoz létre számodra a GitHubon, és a VS Code böngészős felületén keresztül érhető el. Ha van hozzáférésed a Codespaces-hez, egyszerűen kattints a **Code** gombra a repóban, indíts el egy codespace-et, és máris kezdheted a munkát. +* Használhatod a **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** szolgáltatást. A [Binder](https://mybinder.org) ingyenes számítási erőforrásokat biztosít a felhőben, hogy kipróbálhass néhány kódot a GitHubon. Az első oldalon található egy gomb, amely megnyitja a repót a Binderben – ez gyorsan elvisz a Binder oldalára, amely felépíti az alapul szolgáló konténert, és zökkenőmentesen elindítja a Jupyter webes felületet. + +> **Megjegyzés**: A visszaélések megelőzése érdekében a Binder bizonyos webes erőforrásokhoz való hozzáférést blokkol. Ez megakadályozhatja, hogy néhány kód működjön, amely modelleket és/vagy adatokat tölt le a nyilvános internetről. Lehet, hogy kerülőutakat kell találnod. Emellett a Binder által biztosított számítási erőforrások meglehetősen alapvetőek, így a tanulás későbbi, összetettebb leckéiben a tréning lassú lesz. + +## Futtatás a felhőben GPU-val + +A tananyag néhány későbbi leckéje nagyban profitálna a GPU támogatásból, mert különben a tréning fájdalmasan lassú lesz. Néhány lehetőség áll rendelkezésedre, különösen, ha van hozzáférésed a felhőhöz, például az [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) vagy az intézményeden keresztül: + +* Hozz létre egy [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) gépet, és csatlakozz hozzá Jupyteren keresztül. Ezután klónozhatod a repót közvetlenül a gépre, és elkezdheted a tanulást. Az NC-sorozatú virtuális gépek GPU támogatással rendelkeznek. + +> **Megjegyzés**: Néhány előfizetés, beleértve az Azure for Students-t, alapértelmezés szerint nem biztosít GPU támogatást. Lehet, hogy további GPU magokat kell kérned technikai támogatási kérelem útján. + +* Hozz létre egy [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) munkaterületet, majd használd ott a Notebook funkciót. [Ez a videó](https://azure-for-academics.github.io/quickstart/azureml-papers/) bemutatja, hogyan klónozhatsz egy repót az Azure ML notebookba, és hogyan kezdheted el használni. + +Használhatod a Google Colabot is, amely némi ingyenes GPU támogatást biztosít, és feltöltheted oda a Jupyter Notebookokat, hogy egyenként futtasd őket. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/0-course-setup/setup.md b/translations/hu/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..2c584a2d --- /dev/null +++ b/translations/hu/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Az oktatási anyag kezdő lépései + +## Diák vagy? + +Kezdd az alábbi forrásokkal: + +* [Student Hub oldal](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Ezen az oldalon kezdő forrásokat, diákcsomagokat és akár ingyenes tanúsítvány-vouchert is találhatsz. Érdemes ezt az oldalt könyvjelzőzni és időnként visszanézni, mivel havonta frissítjük a tartalmat. +* [Microsoft Student Learn nagykövetek](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Csatlakozz egy globális diák nagyköveti közösséghez, ez lehet a belépőd a Microsoft világába. + +**Diákok**, többféleképpen is használhatjátok az oktatási anyagot. Először is, egyszerűen olvashatjátok a szöveget és böngészhetitek a kódot közvetlenül a GitHubon. Ha futtatni szeretnétek a kódot bármelyik notebookban, [olvassátok el az útmutatónkat](./etc/how-to-run.md), és találjatok további tanácsokat [ebben a blogbejegyzésben](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Útmutató a kód futtatásához ebben az oktatási anyagban](./how-to-run.md) + +## Önálló tanulás + +Ha önálló tanulási projektként szeretnéd elvégezni a kurzust, javasoljuk, hogy forkold az egész repót a saját GitHub fiókodba, és végezd el a gyakorlatokat egyedül vagy csoportban: + +* Kezdd egy előadás előtti kvízzel. +* Olvasd el az előadás bevezető szövegét. +* Ha az előadáshoz további notebookok tartoznak, nézd át őket, olvasd el és futtasd a kódot. Ha mind TensorFlow, mind PyTorch notebookok elérhetők, választhatsz közülük - döntsd el, melyik keretrendszer a kedvenced. +* A notebookok gyakran tartalmaznak kihívásokat, amelyek során a kódot kicsit módosítanod kell, hogy kísérletezz. +* Töltsd ki az előadás utáni kvízt. +* Ha a modulhoz labor is tartozik, végezd el a feladatot. +* Látogass el a [Vita fórumra](https://github.com/microsoft/AI-For-Beginners/discussions), hogy "hangosan tanulj". + +> További tanuláshoz ajánljuk, hogy kövesd ezeket a [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) modulokat és tanulási útvonalakat. + +**Tanárok**, [néhány javaslatot is mellékeltünk](/for-teachers.md) az oktatási anyag használatához. + +--- + +## Pedagógia + +Két pedagógiai alapelvet választottunk az oktatási anyag összeállításakor: biztosítani, hogy az anyag **projektalapú** és **gyakori kvízeket** tartalmazzon. + +Azáltal, hogy a tartalom projektekhez igazodik, a folyamat érdekesebbé válik a diákok számára, és a fogalmak jobban rögzülnek. Emellett egy alacsony tétű kvíz az óra előtt segít a diákoknak a téma iránti érdeklődés felkeltésében, míg egy második kvíz az óra után tovább erősíti a tanultakat. Ez az oktatási anyag rugalmas és szórakoztató, és teljes egészében vagy részleteiben is elvégezhető. A projektek kicsiben kezdődnek, és a 12 hetes ciklus végére egyre összetettebbé válnak. + +> **Megjegyzés a kvízekről**: Minden kvíz [ebben az alkalmazásban](https://red-field-0a6ddfd03.1.azurestaticapps.net/) található, összesen 50 darab, három kérdéses kvíz. Az órákból elérhetők, de a kvíz alkalmazás helyben is futtatható; kövesd az `etc/quiz-app` mappában található utasításokat. + +## Offline hozzáférés + +Az oktatási anyagot offline is futtathatod a [Docsify](https://docsify.js.org/#/) segítségével. Forkold ezt a repót, [telepítsd a Docsify-t](https://docsify.js.org/#/quickstart) a saját gépedre, majd a repó gyökérmappájában írd be, hogy `docsify serve`. A weboldal a localhost 3000-es portján lesz elérhető: `localhost:3000`. Az oktatási anyag pdf formátumban is elérhető [ezen a linken](../../../../../../../../../etc/pdf/readme.pdf). + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/1-Intro/README.md b/translations/hu/lessons/1-Intro/README.md new file mode 100644 index 00000000..91be2434 --- /dev/null +++ b/translations/hu/lessons/1-Intro/README.md @@ -0,0 +1,155 @@ + +# Bevezetés az MI-hez + +![Az MI bevezetésének összefoglalása egy rajzban](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.hu.png) + +> Sketchnote készítette: [Tomomi Imura](https://twitter.com/girlie_mac) + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**Mesterséges Intelligencia** egy izgalmas tudományág, amely azt vizsgálja, hogyan lehet számítógépeket intelligens viselkedésre bírni, például olyan dolgokra, amelyekben az emberek jók. + +Eredetileg a számítógépeket [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) találta fel, hogy számokat kezeljenek egy jól meghatározott eljárás – algoritmus – alapján. A modern számítógépek, bár jelentősen fejlettebbek, mint a 19. században javasolt eredeti modell, még mindig ugyanazt az irányított számítási elvet követik. Ezért lehetséges egy számítógépet programozni, hogy valamit elvégezzen, ha pontosan ismerjük a cél eléréséhez szükséges lépések sorrendjét. + +![Egy személy fotója](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.hu.png) + +> Fotó: [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Egy személy életkorának meghatározása a fényképe alapján olyan feladat, amelyet nem lehet kifejezetten programozni, mert nem tudjuk pontosan, hogyan jutunk el egy számhoz a fejünkben, amikor ezt tesszük. + +--- + +Vannak azonban olyan feladatok, amelyeket nem tudunk kifejezetten megoldani. Vegyük például egy személy életkorának meghatározását a fényképe alapján. Valahogy megtanuljuk ezt, mert sok példát láttunk különböző korú emberekről, de nem tudjuk pontosan megmagyarázni, hogyan csináljuk, és nem tudjuk programozni a számítógépet, hogy megtegye. Pontosan az ilyen feladatok érdeklik a **Mesterséges Intelligenciát** (röviden MI). + +✅ Gondolj néhány feladatra, amelyet átruházhatnál egy számítógépre, és amely az MI segítségével előnyös lenne. Fontold meg a pénzügy, az orvostudomány és a művészetek területeit – hogyan profitálnak ezek a területek ma az MI-ből? + +## Gyenge MI vs. Erős MI + +Gyenge MI | Erős MI +---------------------------------------|------------------------------------- +A gyenge MI olyan rendszerekre utal, amelyeket egy adott feladatra vagy szűk feladatkörre terveztek és képeztek ki.|Az erős MI, vagy Mesterséges Általános Intelligencia (AGI), olyan rendszerekre utal, amelyek emberi szintű intelligenciával és megértéssel rendelkeznek. +Ezek a rendszerek nem általánosan intelligensek; kiválóan teljesítenek egy előre meghatározott feladatban, de hiányzik belőlük a valódi megértés vagy tudatosság.|Ezek a rendszerek képesek bármilyen szellemi feladatot elvégezni, amit egy ember meg tud tenni, alkalmazkodni különböző területekhez, és rendelkeznek egyfajta tudatossággal vagy önismerettel. +A gyenge MI példái közé tartoznak a virtuális asszisztensek, mint Siri vagy Alexa, a streaming szolgáltatások ajánlási algoritmusai, és az ügyfélszolgálati feladatokra tervezett chatbotok.|Az erős MI elérése az MI kutatásának hosszú távú célja, amely olyan rendszerek fejlesztését igényli, amelyek képesek érvelni, tanulni, megérteni és alkalmazkodni széles körű feladatokhoz és kontextusokhoz. +A gyenge MI erősen specializált, és nem rendelkezik emberi szintű kognitív képességekkel vagy általános problémamegoldó képességekkel a szűk területén kívül.|Az erős MI jelenleg elméleti koncepció, és egyetlen MI rendszer sem érte el ezt az általános intelligencia szintet. + +További információért lásd **[Mesterséges Általános Intelligencia](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## Az intelligencia meghatározása és a Turing-teszt + +Az egyik probléma az **[Intelligencia](https://en.wikipedia.org/wiki/Intelligence)** kifejezéssel kapcsolatban az, hogy nincs egyértelmű meghatározása ennek a fogalomnak. Egyesek szerint az intelligencia az **absztrakt gondolkodáshoz** vagy az **önismerethez** kapcsolódik, de nem tudjuk megfelelően definiálni. + +![Macska fotója](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.hu.jpg) + +> [Fotó](https://unsplash.com/photos/75715CVEJhI) készítette: [Amber Kipp](https://unsplash.com/@sadmax) az Unsplash-en + +Az *intelligencia* kifejezés kétértelműségét szemléltetve próbálj meg válaszolni egy kérdésre: "Intelligens-e egy macska?". Különböző emberek hajlamosak különböző válaszokat adni erre a kérdésre, mivel nincs univerzálisan elfogadott teszt annak bizonyítására, hogy az állítás igaz-e vagy sem. És ha úgy gondolod, hogy van – próbáld meg lefuttatni a macskádat egy IQ-teszten... + +✅ Gondolkodj el egy percig arról, hogyan határozod meg az intelligenciát. Intelligens-e egy varjú, amely képes megoldani egy labirintust, hogy elérjen az ételhez? Intelligens-e egy gyerek? + +--- + +Amikor az AGI-ról beszélünk, szükségünk van valamilyen módra, hogy megállapítsuk, valóban intelligens rendszert hoztunk-e létre. [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) javasolt egy módszert, amelyet **[Turing-teszt](https://en.wikipedia.org/wiki/Turing_test)** néven ismerünk, és amely egyben az intelligencia definíciójaként is szolgál. A teszt egy adott rendszert összehasonlít valami eredendően intelligens dologgal – egy valódi emberrel, és mivel bármilyen automatikus összehasonlítást megkerülhet egy számítógépes program, emberi kérdezőt használunk. Tehát, ha egy ember nem képes megkülönböztetni egy valódi személyt és egy számítógépes rendszert szöveges párbeszédben – a rendszert intelligensnek tekintjük. + +> Egy [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman) nevű chatbot, amelyet Szentpéterváron fejlesztettek, 2014-ben közel került a Turing-teszt teljesítéséhez egy ügyes személyiségtrükk segítségével. Előre bejelentette, hogy egy 13 éves ukrán fiú, ami megmagyarázta a tudás hiányát és néhány eltérést a szövegben. A bot meggyőzte a bírák 30%-át arról, hogy ember, egy 5 perces párbeszéd után, egy olyan mérőszámot, amelyet Turing szerint egy gép képes lenne teljesíteni 2000-re. Azonban meg kell érteni, hogy ez nem jelenti azt, hogy intelligens rendszert hoztunk létre, vagy hogy egy számítógépes rendszer megtévesztette az emberi kérdezőt – nem a gép tévesztette meg az embereket, hanem a bot készítői! + +✅ Téged valaha megtévesztett egy chatbot, hogy azt hidd, emberrel beszélsz? Hogyan győzött meg? + +## Különböző megközelítések az MI-hez + +Ha azt akarjuk, hogy egy számítógép úgy viselkedjen, mint egy ember, valahogy modelleznünk kell a számítógépben a gondolkodásunk módját. Ennek megfelelően meg kell próbálnunk megérteni, mi teszi az embert intelligenssé. + +> Ahhoz, hogy intelligenciát programozzunk egy gépbe, meg kell értenünk, hogyan működnek a saját döntéshozatali folyamataink. Ha egy kicsit önvizsgálatot végzel, rájössz, hogy vannak olyan folyamatok, amelyek tudat alatt zajlanak – például meg tudjuk különböztetni a macskát a kutyától anélkül, hogy gondolkodnánk rajta –, míg mások érvelést igényelnek. + +Két lehetséges megközelítés létezik: + +Felülről lefelé irányuló megközelítés (Szimbolikus érvelés) | Alulról felfelé irányuló megközelítés (Neurális hálózatok) +---------------------------------------|------------------------------------- +A felülről lefelé irányuló megközelítés modellezi azt, ahogyan egy ember érvel egy probléma megoldásához. Ez magában foglalja az emberi **tudás** kinyerését és számítógéppel olvasható formában történő ábrázolását. Emellett ki kell fejlesztenünk egy módot az **érvelés** modellezésére a számítógépben. | Az alulról felfelé irányuló megközelítés modellezi az emberi agy szerkezetét, amely hatalmas számú egyszerű egységből, úgynevezett **neuronokból** áll. Minden neuron a bemeneteinek súlyozott átlagaként működik, és egy neuronhálózatot hasznos problémák megoldására taníthatunk **tanulási adatok** biztosításával. + +Vannak más lehetséges megközelítések is az intelligenciához: + +* Az **Emergens**, **Szinergikus** vagy **többügynökös megközelítés** azon az elven alapul, hogy összetett intelligens viselkedés érhető el számos egyszerű ügynök interakciójával. Az [evolúciós kibernetika](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) szerint az intelligencia *kialakulhat* egyszerűbb, reaktív viselkedésből a *metarendszer átmenet* folyamatában. + +* Az **Evolúciós megközelítés**, vagy **genetikus algoritmus** egy optimalizációs folyamat, amely az evolúció elvein alapul. + +Ezeket a megközelítéseket később fogjuk megvizsgálni a kurzus során, de most két fő irányra összpontosítunk: felülről lefelé és alulról felfelé. + +### Felülről lefelé irányuló megközelítés + +A **felülről lefelé irányuló megközelítésben** megpróbáljuk modellezni az érvelésünket. Mivel követni tudjuk a gondolatainkat, amikor érvelünk, megpróbálhatjuk formalizálni ezt a folyamatot, és programozni a számítógépbe. Ezt **szimbolikus érvelésnek** nevezzük. + +Az emberek hajlamosak bizonyos szabályokat tartani a fejükben, amelyek irányítják döntéshozatali folyamataikat. Például, amikor egy orvos diagnosztizál egy beteget, rájöhet, hogy az illetőnek láza van, és így valószínűleg valamilyen gyulladás zajlik a testben. Egy nagy szabályhalmaz alkalmazásával egy adott problémára az orvos képes lehet végleges diagnózist felállítani. + +Ez a megközelítés erősen támaszkodik a **tudásábrázolásra** és az **érvelésre**. A tudás kinyerése egy emberi szakértőtől lehet a legnehezebb rész, mert egy orvos sok esetben nem tudja pontosan, miért jut egy adott diagnózishoz. Néha a megoldás egyszerűen csak megjelenik a fejében anélkül, hogy kifejezetten gondolkodna. Néhány feladat, például egy személy életkorának meghatározása egy fényképről, egyáltalán nem redukálható a tudás manipulálására. + +### Alulról felfelé irányuló megközelítés + +Alternatívaként megpróbálhatjuk modellezni az agyunk legegyszerűbb elemeit – a neuront. Létrehozhatunk egy úgynevezett **mesterséges neurális hálózatot** a számítógépben, majd megpróbálhatjuk megtanítani problémák megoldására példák bemutatásával. Ez a folyamat hasonló ahhoz, ahogyan egy újszülött gyermek tanul a környezetéről megfigyelések révén. + +✅ Kutass egy kicsit arról, hogyan tanulnak a csecsemők. Mik az alapvető elemei egy csecsemő agyának? + +> | Mi a helyzet az ML-lel? | | +> |--------------|-----------| +> | Az MI azon része, amely azon alapul, hogy a számítógép megtanulja megoldani egy problémát bizonyos adatok alapján, **gépi tanulásnak** nevezzük. Ebben a kurzusban nem foglalkozunk a klasszikus gépi tanulással – erre külön [Gépi Tanulás Kezdőknek](http://aka.ms/ml-beginners) tananyagot ajánlunk. | ![ML Kezdőknek](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.hu.png) | + +## Az MI rövid története + +A mesterséges intelligencia mint terület a huszadik század közepén indult. Kezdetben a szimbolikus érvelés volt a domináns megközelítés, és számos fontos sikert eredményezett, például szakértői rendszereket – számítógépes programokat, amelyek képesek voltak szakértőként működni bizonyos korlátozott problématerületeken. Azonban hamar világossá vált, hogy ez a megközelítés nem skálázható jól. A tudás kinyerése egy szakértőtől, annak számítógépes ábrázolása és a tudásbázis pontosan tartása rendkívül összetett és sok esetben túl drága feladatnak bizonyult. Ez az úgynevezett [MI Tél](https://en.wikipedia.org/wiki/AI_winter) időszakához vezetett az 1970-es években. + +> Kép készítette: [Dmitry Soshnikov](http://soshnikov.com) + +Ahogy telt az idő, a számítástechnikai erőforrások olcsóbbá váltak, és több adat vált elérhetővé, így a neurális hálózati megközelítések elkezdtek kiváló teljesítményt mutatni az emberi versenytársakkal szemben számos területen, például a számítógépes látásban vagy a beszédértésben. Az elmúlt évtizedben a mesterséges intelligencia kifejezést leginkább a neurális hálózatok szinonimájaként használták, mivel az MI sikerei, amelyeket hallunk, többnyire ezekre épülnek. + +Megfigyelhetjük, hogyan változtak a megközelítések például egy sakkjátszó számítógépes program létrehozásában: + +* A korai sakkprogramok keresésen alapultak – a program kifejezetten megpróbálta megbecsülni az ellenfél lehetséges lépéseit egy adott számú következő lépésre, és kiválasztotta az optimális lépést az alapján, hogy milyen optimális pozíció érhető el néhány lépésben. Ez vezetett az úgynevezett [alfa-béta metszés](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) keresési algoritmus kifejlesztéséhez. +* A keresési stratégiák jól működnek a játék végén, ahol a keresési tér korlátozott a kevés lehetséges lépés által. Azonban a játék elején a keresési tér hatalmas, és az algoritmus javítható az emberi játékosok közötti meglévő mérkőzésekből való tanulással. A későbbi kísérletek úgynevezett [esetalapú érvelést](https://en.wikipedia.org/wiki/Case-based_reasoning) alkalmaztak, ahol a program olyan eseteket keresett a tudásbázisban, amelyek nagyon hasonlóak az aktuális pozícióhoz a játékban. +* A modern programok, amelyek legyőzik az emberi játékosokat, neurális hálózatokon és [megerősítéses tanuláson](https://en.wikipedia.org/wiki/Reinforcement_learning) alapulnak, ahol a programok kizárólag azáltal + +> Kép Dmitry Soshnikovtól, [fotó](https://unsplash.com/photos/r8LmVbUKgns) Marina Abrosimovától, [Unsplash](https://unsplash.com/@abrosimova_marina_foto) + +## Legújabb AI Kutatások + +A neurális hálózatok kutatásának hatalmas növekedése körülbelül 2010-ben kezdődött, amikor nagy nyilvános adatbázisok váltak elérhetővé. Egy hatalmas képgyűjtemény, az úgynevezett [ImageNet](https://en.wikipedia.org/wiki/ImageNet), amely körülbelül 14 millió annotált képet tartalmaz, életre hívta az [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/) versenyt. + +![ILSVRC Pontosság](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Kép [Dmitry Soshnikovtól](http://soshnikov.com) + +2012-ben először használták a [Konvolúciós Neurális Hálózatokat](../4-ComputerVision/07-ConvNets/README.md) képosztályozásra, ami jelentős csökkenést eredményezett az osztályozási hibákban (majdnem 30%-ról 16,4%-ra). 2015-ben a Microsoft Research ResNet architektúrája [emberi szintű pontosságot ért el](https://doi.org/10.1109/ICCV.2015.123). + +Azóta a neurális hálózatok számos feladatban rendkívül sikeresek voltak: + +--- + +Év | Emberi szintű teljesítmény elérése +-----|-------- +2015 | [Képosztályozás](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Beszédfelismerés](https://arxiv.org/abs/1610.05256) +2018 | [Automatikus gépi fordítás](https://arxiv.org/abs/1803.05567) (kínai-angol) +2020 | [Képaláírás generálás](https://arxiv.org/abs/2009.13682) + +Az elmúlt néhány évben hatalmas sikereket láthattunk a nagy nyelvi modellekkel, mint például a BERT és a GPT-3. Ez főként annak köszönhető, hogy rengeteg általános szöveges adat áll rendelkezésre, amely lehetővé teszi, hogy modelleket képezzünk a szövegek szerkezetének és jelentésének megragadására, általános szöveggyűjteményeken előképzést végezzünk, majd ezeket a modelleket specifikusabb feladatokra specializáljuk. A [Természetes Nyelvfeldolgozásról](../5-NLP/README.md) később többet fogunk tanulni ebben a kurzusban. + +## 🚀 Kihívás + +Tegyél egy internetes körutat, hogy meghatározd, véleményed szerint hol használják az AI-t a leghatékonyabban. Egy térképező alkalmazásban, egy beszéd-szöveg szolgáltatásban vagy egy videojátékban? Kutasd fel, hogyan építették fel a rendszert. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Áttekintés és Önálló Tanulás + +Tekintsd át az AI és ML történetét, olvasd el [ezt a leckét](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Válassz ki egy elemet a sketchnote-ból ennek a leckének az elején vagy ebből, és kutasd mélyebben, hogy megértsd a kulturális kontextust, amely befolyásolta annak fejlődését. + +**Feladat**: [Game Jam](assignment.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/1-Intro/assignment.md b/translations/hu/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..3e1bc6df --- /dev/null +++ b/translations/hu/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Játék Jam + +A játékok olyan területet képviselnek, amelyet jelentősen befolyásoltak az AI és ML fejlődései. Ebben a feladatban írj egy rövid dolgozatot egy olyan játékról, amelyet kedvelsz, és amelyet az AI fejlődése befolyásolt. Olyan régi játéknak kell lennie, amelyet többféle számítógépes feldolgozási rendszer is formált. Jó példa erre a sakk vagy a Go, de érdemes megvizsgálni olyan videojátékokat is, mint a Pong vagy a Pac-Man. Írj egy esszét, amely tárgyalja a játék múltját, jelenét és AI-jövőjét. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/2-Symbolic/README.md b/translations/hu/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..de05e42f --- /dev/null +++ b/translations/hu/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Tudásreprezentáció és szakértői rendszerek + +![A szimbolikus AI tartalmának összefoglalása](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.hu.png) + +> Sketchnote készítette: [Tomomi Imura](https://twitter.com/girlie_mac) + +Az emberi intelligencia mesterséges megvalósításának célja a világ megértése, hasonlóan ahhoz, ahogyan az emberek teszik. De hogyan lehet ezt elérni? + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +Az AI korai időszakában népszerű volt az intelligens rendszerek létrehozásának felülről lefelé irányuló megközelítése (az előző leckében tárgyaltak szerint). Az ötlet az volt, hogy az emberek tudását gép által olvasható formába kell átültetni, majd ezt automatikusan problémák megoldására használni. Ez a megközelítés két nagy elképzelésen alapult: + +* Tudásreprezentáció +* Következtetés + +## Tudásreprezentáció + +A szimbolikus AI egyik fontos fogalma a **tudás**. Fontos megkülönböztetni a tudást az *információtól* vagy az *adattól*. Például mondhatjuk, hogy a könyvek tudást tartalmaznak, mert tanulmányozva őket szakértővé válhatunk. Azonban amit a könyvek tartalmaznak, valójában *adat*, és amikor elolvassuk őket, és integráljuk ezt az adatot a világmodellünkbe, akkor alakítjuk át tudássá. + +> ✅ **Tudás** az, ami a fejünkben van, és a világ megértését képviseli. Aktív **tanulási** folyamat révén szerezzük meg, amely integrálja az általunk kapott információkat a világ aktív modelljébe. + +Leggyakrabban nem határozzuk meg szigorúan a tudást, hanem más kapcsolódó fogalmakkal hozzuk összefüggésbe a [DIKW piramis](https://en.wikipedia.org/wiki/DIKW_pyramid) segítségével. Ez a következő fogalmakat tartalmazza: + +* **Adat**: Fizikai médiában reprezentált valami, például írott szöveg vagy kimondott szavak. Az adat függetlenül létezik az emberektől, és átadható közöttük. +* **Információ**: Az, ahogyan az adatot értelmezzük a fejünkben. Például, amikor meghalljuk a *számítógép* szót, van valamilyen elképzelésünk arról, hogy mi az. +* **Tudás**: Az információ integrálása a világmodellünkbe. Például, ha megtanuljuk, mi az a számítógép, elkezdünk ötleteket alkotni arról, hogyan működik, mennyibe kerül, és mire használható. Ez az összefüggő fogalmak hálózata alkotja a tudásunkat. +* **Bölcsesség**: Még egy szinttel mélyebb megértése a világnak, amely a *meta-tudást* képviseli, például azt, hogy hogyan és mikor kell használni a tudást. + +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +Így a **tudásreprezentáció** problémája az, hogy találjunk valamilyen hatékony módot a tudás számítógépen belüli adatként való reprezentálására, hogy automatikusan használható legyen. Ez egy spektrumként értelmezhető: + +![Tudásreprezentáció spektruma](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.hu.png) + +> Kép készítette: [Dmitry Soshnikov](http://soshnikov.com) + +* A bal oldalon nagyon egyszerű tudásreprezentáció típusok találhatók, amelyeket a számítógépek hatékonyan tudnak használni. A legegyszerűbb az algoritmikus megközelítés, amikor a tudást egy számítógépes program képviseli. Ez azonban nem a legjobb módja a tudás reprezentálásának, mert nem rugalmas. A fejünkben lévő tudás gyakran nem algoritmikus. +* A jobb oldalon olyan reprezentációk találhatók, mint a természetes szöveg. Ez a legkifejezőbb, de nem használható automatikus következtetésre. + +> ✅ Gondolkodj el egy percre, hogyan reprezentálod a tudást a fejedben, és hogyan alakítod át jegyzetekké. Van-e olyan formátum, amely különösen jól segíti a megértést? + +## Számítógépes tudásreprezentációk osztályozása + +A számítógépes tudásreprezentáció különböző módszereit a következő kategóriákba sorolhatjuk: + +* **Hálózati reprezentációk** azon az elven alapulnak, hogy a fejünkben egy összefüggő fogalmak hálózata található. Megpróbálhatjuk ugyanazokat a hálózatokat egy gráfként reprodukálni a számítógépben - egy úgynevezett **szemantikus hálózatként**. + +1. **Objektum-Attribútum-Érték hármasok** vagy **attribútum-érték párok**. Mivel egy gráf számítógépen belül csomópontok és élek listájaként reprezentálható, egy szemantikus hálózatot hármasok listájaként is ábrázolhatunk, amelyek objektumokat, attribútumokat és értékeket tartalmaznak. Például a programozási nyelvekről a következő hármasokat építhetjük: + +Objektum | Attribútum | Érték +---------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ Gondold át, hogyan lehetne hármasokat használni más típusú tudás reprezentálására. + +2. **Hierarchikus reprezentációk** hangsúlyozzák azt a tényt, hogy gyakran hierarchiát hozunk létre a fejünkben lévő objektumok között. Például tudjuk, hogy a kanári egy madár, és minden madárnak van szárnya. Van elképzelésünk arról is, hogy milyen színű egy kanári általában, és milyen a repülési sebessége. + + - **Keretrendszer reprezentáció** azon alapul, hogy minden objektumot vagy objektumok osztályát egy **keretként** ábrázoljuk, amely **helyeket** tartalmaz. A helyeknek lehetnek alapértelmezett értékei, értékmegkötései vagy tárolt eljárásai, amelyeket a hely értékének megszerzéséhez lehet hívni. Az összes keret hierarchiát alkot, hasonlóan az objektumorientált programozási nyelvek objektumhierarchiájához. + - **Forgatókönyvek** speciális keretek, amelyek összetett helyzeteket ábrázolnak, amelyek időben kibontakozhatnak. + +**Python** + +Hely | Érték | Alapértelmezett érték | Intervallum | +-----|-------|-----------------------|-------------| +Név | Python | | | +Is-A | Untyped-Language | | | +Változó eset | | CamelCase | | +Program hossza | | | 5-5000 sor | +Blokk szintaxis | Behúzás | | | + +3. **Procedurális reprezentációk** azon alapulnak, hogy a tudást egy lista cselekvésként ábrázolják, amelyeket bizonyos feltételek bekövetkezésekor végrehajthatunk. + - Produkciós szabályok olyan ha-akkor állítások, amelyek lehetővé teszik következtetések levonását. Például egy orvosnak lehet egy szabálya, amely szerint **HA** a betegnek magas láza van **VAGY** magas C-reaktív fehérje szintje van a vérvizsgálatban, **AKKOR** gyulladása van. Ha találkozunk az egyik feltétellel, következtetést vonhatunk le a gyulladásról, majd ezt további következtetésekhez használhatjuk. + - Algoritmusok egy másik formája lehetnek a procedurális reprezentációnak, bár szinte soha nem használják őket közvetlenül tudásalapú rendszerekben. + +4. **Logika** eredetileg Arisztotelész által javasolt módszer az univerzális emberi tudás reprezentálására. + - Predikátum logika mint matematikai elmélet túl gazdag ahhoz, hogy számítógépes legyen, ezért általában annak egy részhalmazát használják, például a Prologban használt Horn-klauzulákat. + - Leíró logika logikai rendszerek családja, amelyeket objektumok hierarchiáinak és elosztott tudásreprezentációk, például *szemantikus web* ábrázolására és következtetésére használnak. + +## Szakértői rendszerek + +A szimbolikus AI korai sikerei közé tartoztak az úgynevezett **szakértői rendszerek** - számítógépes rendszerek, amelyeket arra terveztek, hogy egy korlátozott problématerületen szakértőként működjenek. Ezek egy **tudásbázison** alapultak, amelyet egy vagy több emberi szakértőtől nyertek ki, és tartalmaztak egy **következtető motort**, amely valamilyen következtetést végzett rajta. + +![Emberi architektúra](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.hu.png) | ![Tudásalapú rendszer](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.hu.png) +---------------------------------------------|------------------------------------------------ +Az emberi idegrendszer egyszerűsített szerkezete | Tudásalapú rendszer architektúrája + +A szakértői rendszerek az emberi következtetési rendszerhez hasonlóan épülnek fel, amely tartalmaz **rövid távú memóriát** és **hosszú távú memóriát**. Hasonlóképpen, a tudásalapú rendszerekben a következő komponenseket különböztetjük meg: + +* **Problémamemória**: tartalmazza az aktuálisan megoldott problémával kapcsolatos tudást, például a beteg hőmérsékletét vagy vérnyomását, hogy van-e gyulladása vagy sem, stb. Ezt a tudást **statikus tudásnak** is nevezik, mert pillanatképet tartalmaz arról, amit jelenleg tudunk a problémáról - az úgynevezett *problémaállapotot*. +* **Tudásbázis**: a problématerületről szóló hosszú távú tudást képviseli. Ezt manuálisan nyerik ki emberi szakértőktől, és nem változik konzultációról konzultációra. Mivel lehetővé teszi, hogy egyik problémaállapotból a másikba navigáljunk, **dinamikus tudásnak** is nevezik. +* **Következtető motor**: irányítja az egész folyamatot, amely a problémaállapot térben való keresését végzi, szükség esetén kérdéseket tesz fel a felhasználónak. Felelős továbbá a megfelelő szabályok megtalálásáért, amelyeket minden állapotban alkalmazni kell. + +Példaként vegyük a következő szakértői rendszert, amely egy állatot határoz meg fizikai jellemzői alapján: + +![AND-OR fa](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.hu.png) + +> Kép készítette: [Dmitry Soshnikov](http://soshnikov.com) + +Ez a diagram egy **AND-OR fa**, amely a produkciós szabályok grafikus ábrázolása. A fa rajzolása hasznos az elején, amikor a tudást kinyerjük a szakértőtől. A tudás számítógépen belüli reprezentálásához azonban kényelmesebb szabályokat használni: + +``` +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 +``` + +Észreveheted, hogy minden feltétel a szabály bal oldalán és az akció lényegében objektum-attribútum-érték (OAV) hármas. **Munkamemória** tartalmazza az OAV hármasok halmazát, amelyek megfelelnek az aktuálisan megoldott problémának. Egy **szabálymotor** keres olyan szabályokat, amelyek feltételei teljesülnek, és alkalmazza őket, új hármasokat adva a munkamemóriához. + +> ✅ Készítsd el saját AND-OR fádat egy általad kedvelt témában! + +### Előre- és visszafelé következtetés + +A fent leírt folyamatot **előre következtetésnek** nevezzük. Ez azzal kezdődik, hogy a munkamemóriában rendelkezésre áll némi kezdeti adat a problémáról, majd a következő következtetési ciklust hajtja végre: + +1. Ha a célattribútum jelen van a munkamemóriában - állj meg, és add meg az eredményt +2. Keress minden szabályt, amelynek feltételei jelenleg teljesülnek - hozz létre egy **konfliktushalmazt** a szabályokból. +3. Végez **konfliktusfeloldást** - válassz ki egy szabályt, amelyet ezen a lépésen végrehajtasz. Különböző konfliktusfeloldási stratégiák lehetnek: + - Válaszd ki az első alkalmazható szabályt a tudásbázisban + - Válassz véletlenszerű szabályt + - Válassz egy *specifikusabb* szabályt, azaz azt, amelyik a legtöbb feltételt teljesíti a "bal oldalon" (LHS) +4. Alkalmazd a kiválasztott szabályt, és adj hozzá új tudáselemet a problémaállapothoz +5. Ismételd meg az 1. lépéstől. + +Azonban bizonyos esetekben előfordulhat, hogy üres tudással szeretnénk kezdeni a problémáról, és kérdéseket feltenni, amelyek segítenek eljutni a következtetéshez. Például orvosi diagnózis során általában nem végezzük el az összes orvosi elemzést előre, mielőtt elkezdenénk diagnosztizálni a beteget. Inkább akkor végezzük el az elemzéseket, amikor döntést kell hozni. + +Ez a folyamat **visszafelé következtetéssel** modellezhető. Ez a **cél** által vezérelt - az attribútumérték, amelyet keresünk: + +1. Válassz ki minden szabályt, amely megadhatja a cél értékét (azaz a cél a szabály jobb oldalán (RHS) van) - egy konfliktushalmaz +1. Ha nincs szabály erre az attribútumra, vagy van egy szabály, amely szerint az értéket a felhasználótól kell kérni - kérdezd meg, különben: +1. Használj konfliktusfeloldási stratégiát, hogy kiválassz egy szabályt, amelyet *hipotézisként* fogsz használni - megpróbáljuk bizonyítani +1. Ismételten ismételd meg a folyamatot a szabály bal oldalán (LHS) lévő összes attribútumra, megpróbálva bizonyítani őket célként +1. Ha bármelyik ponton a folyamat meghiúsul - használj másik szabályt a 3. lépésben. + +> ✅ Milyen helyzetekben megfelelőbb az előre következtetés? És mi a helyzet a visszafelé következtetéssel? + +### Szakértői rendszerek megvalósítása + +A szakértői rendszerek különböző eszközökkel valósíthatók meg: + +* Közvetlen programozás valamilyen magas szintű programozási nyelven. Ez nem a legjobb ötlet, mert a tudásalapú rendszer fő előnye, hogy a tudás elkülönül a következtetéstől, és potenciálisan a problématerület szakértője képesnek kell lennie szabályokat írni anélkül, hogy megértené a következtetési folyamat részleteit. +* **Szakértői rendszerek héjának** használata, azaz egy olyan rendszer, amelyet kifejezetten arra terveztek, hogy tudással töltsék fel valamilyen tudásreprezentációs nyelv segítségével. + +## ✍️ Gyakorlat: Állati következtetés + +Lásd [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) példát az előre és visszafelé következtetés szakért +> **Megjegyzés**: Ez a példa meglehetősen egyszerű, és csak azt az elképzelést adja, hogy hogyan néz ki egy szakértői rendszer. Amint elkezdesz egy ilyen rendszert létrehozni, csak akkor fogsz észrevenni némi *intelligens* viselkedést, amikor elérsz egy bizonyos számú szabályt, körülbelül 200+. Egy ponton a szabályok túl bonyolulttá válnak ahhoz, hogy mindet fejben tartsd, és ekkor kezdhetsz azon tűnődni, miért hoz a rendszer bizonyos döntéseket. Azonban a tudásalapú rendszerek fontos jellemzője, hogy mindig pontosan *meg tudod magyarázni*, hogyan születtek meg az egyes döntések. +## Ontológiák és a szemantikus web + +A 20. század végén kezdeményezés indult azzal a céllal, hogy az internetes erőforrásokat tudásreprezentációval annotálják, így lehetővé váljon olyan erőforrások megtalálása, amelyek nagyon specifikus lekérdezéseknek felelnek meg. Ezt a kezdeményezést **szemantikus webnek** nevezték, és több alapelvre épült: + +- Egy speciális tudásreprezentáció, amely **[leíró logikákon](https://en.wikipedia.org/wiki/Description_logic)** (DL) alapul. Ez hasonló a keret-alapú tudásreprezentációhoz, mivel objektumok hierarchiáját építi fel tulajdonságokkal, de formális logikai szemantikával és következtetéssel rendelkezik. A DL-ek egy egész családja létezik, amelyek az expresszivitás és a következtetés algoritmikus komplexitása között egyensúlyoznak. +- Elosztott tudásreprezentáció, ahol minden fogalmat egy globális URI azonosító képvisel, lehetővé téve olyan tudáshierarchiák létrehozását, amelyek átfogják az internetet. +- XML-alapú nyelvek családja a tudás leírására: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +A szemantikus web központi fogalma az **ontológia**. Ez egy probléma domainjének explicit specifikációjára utal, valamilyen formális tudásreprezentáció segítségével. A legegyszerűbb ontológia lehet egy objektumok hierarchiája egy probléma domainben, de a bonyolultabb ontológiák szabályokat is tartalmaznak, amelyek következtetésre használhatók. + +A szemantikus webben minden reprezentáció tripleteken alapul. Minden objektumot és minden kapcsolatot egyedi URI azonosít. Például, ha azt szeretnénk kijelenteni, hogy ezt az AI Curriculumot Dmitry Soshnikov fejlesztette ki 2022. január 1-jén, itt vannak a használható tripletek: + + + +``` +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 +``` + +> ✅ Itt a `http://www.example.com/terms/creation-date` és a `http://purl.org/dc/elements/1.1/creator` néhány jól ismert és univerzálisan elfogadott URI, amelyek a *készítő* és a *létrehozás dátuma* fogalmakat fejezik ki. + +Egy bonyolultabb esetben, ha egy készítők listáját szeretnénk meghatározni, használhatunk néhány RDF-ben definiált adatstruktúrát. + + + +> A fenti diagramokat [Dmitry Soshnikov](http://soshnikov.com) készítette. + +A szemantikus web építésének előrehaladását némileg lelassította a keresőmotorok és a természetes nyelvfeldolgozási technikák sikere, amelyek lehetővé teszik a strukturált adatok kinyerését szövegekből. Azonban bizonyos területeken még mindig jelentős erőfeszítések történnek ontológiák és tudásbázisok fenntartására. Néhány figyelemre méltó projekt: + +* [WikiData](https://wikidata.org/) egy gép által olvasható tudásbázisok gyűjteménye, amely a Wikipédiához kapcsolódik. Az adatok nagy része a Wikipédia *InfoBoxokból* származik, amelyek strukturált tartalomdarabok a Wikipédia oldalain. A WikiData-t [SPARQL](https://query.wikidata.org/) segítségével lehet lekérdezni, amely egy speciális lekérdezési nyelv a szemantikus webhez. Íme egy példa lekérdezés, amely megjeleníti az emberek körében leggyakoribb szemszíneket: + +```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/) egy másik kezdeményezés, amely hasonló a WikiData-hoz. + +> ✅ Ha szeretnél kísérletezni saját ontológiák építésével vagy meglévők megnyitásával, van egy remek vizuális ontológia szerkesztő, a [Protégé](https://protege.stanford.edu/). Töltsd le, vagy használd online. + + + +*Web Protégé szerkesztő megnyitva a Romanov család ontológiájával. Dmitry Soshnikov képernyőképe* + +## ✍️ Gyakorlat: Egy családi ontológia + +Nézd meg a [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) fájlt, amely példát mutat arra, hogyan használhatók a szemantikus web technikái családi kapcsolatok elemzésére. Egy általános GEDCOM formátumban ábrázolt családfát és egy családi kapcsolatok ontológiáját fogjuk használni, hogy gráfot építsünk az adott egyének közötti családi kapcsolatokból. + +## Microsoft Concept Graph + +A legtöbb esetben az ontológiákat gondosan kézzel készítik. Azonban lehetséges ontológiákat **kinyerni** strukturálatlan adatokból, például természetes nyelvű szövegekből. + +Egy ilyen próbálkozást a Microsoft Research végezte, amelynek eredménye a [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Ez egy nagy gyűjteménye az entitásoknak, amelyeket `is-a` öröklési kapcsolat alapján csoportosítottak. Lehetővé teszi olyan kérdések megválaszolását, mint például "Mi a Microsoft?" - a válasz valami olyasmi, mint "egy vállalat 0,87 valószínűséggel, és egy márka 0,75 valószínűséggel". + +A grafikon elérhető REST API-n keresztül, vagy egy nagy letölthető szövegfájlként, amely az összes entitáspárt felsorolja. + +## ✍️ Gyakorlat: Egy fogalomgrafikon + +Próbáld ki az [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) notebookot, hogy megnézd, hogyan használhatjuk a Microsoft Concept Graph-ot hírcikkek több kategóriába történő csoportosítására. + +## Következtetés + +Manapság az AI-t gyakran a *gépi tanulás* vagy *neurális hálózatok* szinonimájaként emlegetik. Azonban az emberi lények explicit következtetést is végeznek, ami olyasmi, amit jelenleg a neurális hálózatok nem kezelnek. Valós projektekben az explicit következtetést továbbra is használják olyan feladatok elvégzésére, amelyek magyarázatokat igényelnek, vagy amelyeknél a rendszer viselkedését kontrollált módon kell módosítani. + +## 🚀 Kihívás + +A leckéhez kapcsolódó Family Ontology notebookban lehetőség van más családi kapcsolatokkal kísérletezni. Próbálj meg új kapcsolatokat felfedezni az emberek között a családfában. + +## [Utólagos kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Áttekintés és önálló tanulás + +Kutatásokat végezhetsz az interneten, hogy felfedezd azokat a területeket, ahol az emberek megpróbálták a tudást számszerűsíteni és kódolni. Nézd meg Bloom taxonómiáját, és menj vissza a történelemben, hogy megtudd, hogyan próbálták az emberek értelmezni a világukat. Fedezd fel Linnaeus munkáját, amelyben az organizmusok taxonómiáját hozta létre, és figyeld meg, hogyan alkotta meg Dmitrij Mengyelejev a kémiai elemek leírására és csoportosítására szolgáló rendszert. Milyen más érdekes példákat találsz? + +**Feladat**: [Építs egy ontológiát](assignment.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/2-Symbolic/assignment.md b/translations/hu/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..0d28cc5a --- /dev/null +++ b/translations/hu/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Ontológia létrehozása + +Egy tudásbázis létrehozása arról szól, hogy kategorizáljunk egy modellt, amely tényeket reprezentál egy adott témáról. Válassz egy témát - például egy személyt, helyet vagy dolgot -, majd építs egy modellt erről a témáról. Használd az ebben a leckében ismertetett technikákat és modellépítési stratégiákat. Például létrehozhatsz egy nappali ontológiát, amely tartalmazza a bútorokat, világítást és így tovább. Miben különbözik a nappali a konyhától? A fürdőszobától? Honnan tudod, hogy ez egy nappali, és nem egy étkező? Használd a [Protégé](https://protege.stanford.edu/) eszközt az ontológia létrehozásához. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..2baa4fd3 --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Bevezetés a neurális hálózatokba: Perceptron + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Az egyik első próbálkozás egy modern neurális hálózathoz hasonló rendszer megvalósítására Frank Rosenblatt nevéhez fűződik, aki 1957-ben a Cornell Aeronautical Laboratory-nál dolgozott. Ez egy hardveres megvalósítás volt, amelyet "Mark-1"-nek neveztek, és amelyet egyszerű geometriai alakzatok, például háromszögek, négyzetek és körök felismerésére terveztek. + +| | | +|--------------|-----------| +|Frank Rosenblatt | A Mark 1 Perceptron| + +> Képek [a Wikipédiáról](https://en.wikipedia.org/wiki/Perceptron) + +A bemeneti képet egy 20x20-as fotocella mátrix reprezentálta, így a neurális hálózatnak 400 bemenete és egy bináris kimenete volt. Egy egyszerű hálózat egyetlen neuront tartalmazott, amelyet **küszöblogikai egységnek** is neveztek. A neurális hálózat súlyai potenciométerekként működtek, amelyeket a tanítási fázis során manuálisan kellett beállítani. + +> ✅ A potenciométer egy olyan eszköz, amely lehetővé teszi az áramkör ellenállásának beállítását. + +> A New York Times akkoriban így írt a perceptronról: *az elektronikus számítógép embriója, amelyről [a haditengerészet] azt várja, hogy képes lesz járni, beszélni, látni, írni, önmagát reprodukálni és tudatában lenni saját létezésének.* + +## Perceptron modell + +Tegyük fel, hogy a modellünkben N jellemző van, ebben az esetben a bemeneti vektor egy N méretű vektor lesz. A perceptron egy **bináris osztályozási** modell, azaz két osztály közötti különbségtételre képes. Feltételezzük, hogy minden bemeneti vektor x esetén a perceptron kimenete +1 vagy -1 lesz, az osztálytól függően. A kimenetet a következő képlettel számítjuk ki: + +y(x) = f(wTx) + +ahol f egy lépés aktivációs függvény + + + + +## A perceptron tanítása + +A perceptron tanításához meg kell találnunk egy w súlyvektort, amely a legtöbb értéket helyesen osztályozza, azaz a legkisebb **hibát** eredményezi. Ezt a hibát E a **perceptron kritérium** határozza meg a következő módon: + +E(w) = -∑wTxiti + +ahol: + +* az összegzés azon tanítási adatok i pontjaira vonatkozik, amelyek helytelen osztályozást eredményeznek +* xi a bemeneti adat, és ti -1 vagy +1 a negatív és pozitív példák esetén. + +Ezt a kritériumot a w súlyok függvényeként tekintjük, és minimalizálnunk kell. Gyakran egy **gradiens csökkenés** nevű módszert alkalmaznak, amelyben kezdeti w(0) súlyokkal indulunk, majd minden lépésben a következő képlet szerint frissítjük a súlyokat: + +w(t+1) = w(t) - η∇E(w) + +Itt η az úgynevezett **tanulási ráta**, és ∇E(w) az E **gradiensét** jelöli. A gradiens kiszámítása után a következőképpen alakul: + +w(t+1) = w(t) + ∑ηxiti + +Az algoritmus Pythonban így néz ki: + +```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 +``` + +## Összegzés + +Ebben a leckében megismerkedtél a perceptronnal, amely egy bináris osztályozási modell, és megtanultad, hogyan lehet azt egy súlyvektor segítségével tanítani. + +## 🚀 Kihívás + +Ha szeretnéd kipróbálni egy saját perceptron létrehozását, próbáld ki [ezt a labort a Microsoft Learn oldalon](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), amely az [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste) használatát mutatja be. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Áttekintés és önálló tanulás + +Ha szeretnéd látni, hogyan használhatjuk a perceptront egy egyszerű probléma, valamint valós problémák megoldására, és folytatnád a tanulást, látogass el a [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) jegyzetfüzetbe. + +Itt van egy érdekes [cikk a perceptronokról](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Feladat](lab/README.md) + +Ebben a leckében egy perceptront valósítottunk meg bináris osztályozási feladathoz, és azt használtuk két kézzel írt számjegy megkülönböztetésére. Ebben a laborban az a feladatod, hogy teljes egészében oldd meg a számjegyosztályozás problémáját, azaz határozd meg, hogy egy adott kép melyik számjegyhez tartozik legvalószínűbben. + +* [Útmutató](lab/README.md) +* [Jegyzetfüzet](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..fa163e47 --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Többosztályos osztályozás perceptronnal + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +A kódbázis felhasználásával, amelyet az MNIST kézzel írt számjegyek bináris osztályozásához fejlesztettünk, hozz létre egy többosztályos osztályozót, amely bármely számjegyet felismer. Számítsd ki az osztályozási pontosságot a tanító és teszt adathalmazon, és jelenítsd meg a zavaró mátrixot. + +## Tippek + +1. Minden számjegyhez hozz létre egy adathalmazt, amely a "ez a számjegy vs. az összes többi számjegy" bináris osztályozásra szolgál. +1. Taníts meg 10 különböző perceptront bináris osztályozásra (egy-egy minden számjegyhez). +1. Definiálj egy függvényt, amely osztályozza a bemeneti számjegyet. + +> **Tipp**: Ha a 10 perceptron súlyait egy mátrixba kombináljuk, akkor egyetlen mátrixszorzással alkalmazhatjuk mind a 10 perceptront a bemeneti számjegyekre. A legvalószínűbb számjegy egyszerűen az `argmax` művelet alkalmazásával található meg a kimeneten. + +## Induló jegyzetfüzet + +Kezdd a labort a [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) megnyitásával. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..76668a9b --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Bevezetés a neurális hálózatokba. Többrétegű perceptron + +Az előző részben megismerkedtél a legegyszerűbb neurális hálózati modellel – az egyrétegű perceptronnal, amely egy lineáris kétosztályos osztályozási modell. + +Ebben a részben kiterjesztjük ezt a modellt egy rugalmasabb keretrendszerré, amely lehetővé teszi számunkra, hogy: + +* **többosztályos osztályozást** végezzünk a kétosztályos osztályozás mellett +* **regressziós problémákat** oldjunk meg az osztályozás mellett +* olyan osztályokat különítsünk el, amelyek nem lineárisan elválaszthatók + +Ezenkívül kifejlesztünk egy saját moduláris keretrendszert Pythonban, amely lehetővé teszi számunkra különböző neurális hálózati architektúrák létrehozását. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## A gépi tanulás formalizálása + +Kezdjük a gépi tanulási probléma formalizálásával. Tegyük fel, hogy van egy **X** edzési adathalmazunk címkékkel **Y**, és egy olyan modellt kell építenünk, *f*, amely a lehető legpontosabb előrejelzéseket adja. Az előrejelzések minőségét a **veszteségfüggvény** ℒ méri. Az alábbi veszteségfüggvényeket gyakran használják: + +* Regressziós problémák esetén, amikor egy számot kell megjósolnunk, használhatjuk az **abszolút hibát** ∑i|f(x(i))-y(i)|, vagy a **négyzetes hibát** ∑i(f(x(i))-y(i))2 +* Osztályozás esetén használjuk a **0-1 veszteséget** (ami lényegében a modell **pontosságával** egyenértékű), vagy a **logisztikus veszteséget**. + +Az egyszintű perceptron esetében az *f* függvényt lineáris függvényként definiáltuk: *f(x)=wx+b* (ahol *w* a súlymátrix, *x* a bemeneti jellemzők vektora, és *b* az eltolási vektor). Különböző neurális hálózati architektúrák esetén ez a függvény bonyolultabb formát ölthet. + +> Osztályozás esetén gyakran kívánatos, hogy a hálózat kimenete az osztályok valószínűségeit adja meg. Az önkényes számok valószínűségekké alakításához (pl. a kimenet normalizálásához) gyakran használjuk a **softmax** függvényt σ, és az *f* függvény *f(x)=σ(wx+b)* formát ölt. + +Az *f* fenti definíciójában *w* és *b* az úgynevezett **paraméterek**, θ=⟨*w,b*⟩. Az ⟨**X**,**Y**⟩ adathalmaz alapján kiszámíthatjuk az egész adathalmazra vonatkozó összesített hibát a paraméterek θ függvényében. + +> ✅ **A neurális hálózat tanításának célja a hiba minimalizálása a paraméterek θ változtatásával** + +## Gradiensalapú optimalizálás + +Létezik egy jól ismert függvényoptimalizálási módszer, az úgynevezett **gradiensmódszer**. Az ötlet az, hogy kiszámíthatjuk a veszteségfüggvény deriváltját (többdimenziós esetben **gradiensnek** nevezzük) a paraméterekre vonatkozóan, és úgy változtathatjuk a paramétereket, hogy a hiba csökkenjen. Ez a következőképpen formalizálható: + +* Inicializáljuk a paramétereket véletlenszerű értékekkel: w(0), b(0) +* Ismételjük meg az alábbi lépést sokszor: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +A tanítás során az optimalizálási lépéseket az egész adathalmaz figyelembevételével kellene kiszámítani (emlékezzünk, hogy a veszteséget az összes edzési minta összegzéseként számítjuk ki). Azonban a valóságban az adathalmaz kis részeit, úgynevezett **minibatch-eket** vesszük, és a gradienseket az adatok egy részhalmazán alapulva számítjuk ki. Mivel a részhalmazt minden alkalommal véletlenszerűen választjuk ki, ezt a módszert **sztochasztikus gradiensmódszernek** (SGD) nevezzük. + +## Többrétegű perceptronok és visszaterjesztés + +Az egyrétegű hálózat, ahogy fentebb láttuk, képes lineárisan elválasztható osztályokat osztályozni. Gazdagabb modell létrehozásához több réteget kombinálhatunk a hálózatban. Matematikailag ez azt jelenti, hogy az *f* függvény bonyolultabb formát ölt, és több lépésben számítódik ki: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Itt α egy **nemlineáris aktivációs függvény**, σ egy softmax függvény, és a paraméterek θ=<*w1,b1,w2,b2*>. + +A gradiensmódszer algoritmusa változatlan marad, de a gradiens kiszámítása bonyolultabbá válik. A láncszabály alapján a deriváltak a következőképpen számíthatók: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ A láncszabályt használjuk a veszteségfüggvény paraméterekre vonatkozó deriváltjainak kiszámításához. + +Figyeljük meg, hogy ezeknek a kifejezéseknek a bal szélső része ugyanaz, így hatékonyan kiszámíthatjuk a deriváltakat a veszteségfüggvénytől kiindulva, és "visszafelé" haladva a számítási gráfon. Ezért a többrétegű perceptron tanításának módszerét **visszaterjesztésnek** (backpropagation), vagy röviden 'backprop'-nak nevezzük. + +számítási gráf + +> TODO: kép forrásmegjelölés + +> ✅ A visszaterjesztést sokkal részletesebben tárgyaljuk a notebook példánkban. + +## Összegzés + +Ebben a leckében létrehoztuk saját neurális hálózati könyvtárunkat, és egy egyszerű kétdimenziós osztályozási feladatra használtuk. + +## 🚀 Kihívás + +A mellékelt notebookban megvalósítod saját keretrendszeredet többrétegű perceptronok építésére és tanítására. Részletesen megismerheted, hogyan működnek a modern neurális hálózatok. + +Haladj tovább az [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) notebookhoz, és dolgozd át. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Áttekintés és önálló tanulás + +A visszaterjesztés egy gyakori algoritmus az AI és ML területén, érdemes [részletesebben tanulmányozni](https://wikipedia.org/wiki/Backpropagation). + +## [Feladat](lab/README.md) + +Ebben a laborban arra kérünk, hogy használd a leckében létrehozott keretrendszert az MNIST kézzel írt számjegyek osztályozásának megoldására. + +* [Útmutató](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..d4e8fb06 --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# MNIST osztályozás a saját keretrendszerünkkel + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +Oldd meg az MNIST kézzel írt számjegyek osztályozási problémáját 1-, 2- és 3-rétegű perceptronnal. Használd az órán kifejlesztett neurális háló keretrendszert. + +## Induló Jegyzetfüzet + +Kezdd a labort a [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) megnyitásával. + +## Kérdések + +A labor eredményeként próbálj meg válaszolni az alábbi kérdésekre: + +- Befolyásolja-e a rétegek közötti aktivációs függvény a hálózat teljesítményét? +- Szükség van-e 2- vagy 3-rétegű hálózatra ehhez a feladathoz? +- Tapasztaltál-e bármilyen problémát a hálózat tanítása során? Különösen, amikor a rétegek száma nőtt. +- Hogyan viselkednek a hálózat súlyai a tanítás során? Ábrázolhatod a súlyok maximális abszolút értékét az epoch-ok függvényében, hogy megértsd az összefüggést. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..8d7b3e1a --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Neurális hálózat keretrendszerek + +Ahogy már megtanultuk, a neurális hálózatok hatékony tanításához két dolgot kell megtennünk: + +* Tensorokon kell műveleteket végezni, például szorzás, összeadás, valamint bizonyos függvények, mint a sigmoid vagy softmax kiszámítása +* Az összes kifejezés gradiensét ki kell számítani, hogy gradient descent optimalizációt végezhessünk + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Míg a `numpy` könyvtár képes az első részre, szükségünk van egy mechanizmusra a gradiens számításához. Az [általunk fejlesztett keretrendszerben](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), amelyet az előző szekcióban készítettünk, manuálisan kellett programoznunk az összes derivált függvényt a `backward` metódusban, amely a visszaterjesztést végzi. Ideális esetben egy keretrendszer lehetőséget kellene adjon arra, hogy *bármilyen kifejezés* gradiensét kiszámítsuk, amit definiálni tudunk. + +Egy másik fontos dolog, hogy képesek legyünk számításokat végezni GPU-n vagy más speciális számítási egységeken, mint például [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). A mély neurális hálózatok tanítása *rengeteg* számítást igényel, és nagyon fontos, hogy ezeket a számításokat párhuzamosítsuk GPU-kon. + +> ✅ A 'párhuzamosítás' kifejezés azt jelenti, hogy a számításokat több eszköz között osztjuk el. + +Jelenleg a két legnépszerűbb neurális keretrendszer: [TensorFlow](http://TensorFlow.org) és [PyTorch](https://pytorch.org/). Mindkettő alacsony szintű API-t biztosít tensorokkal való műveletekhez CPU-n és GPU-n egyaránt. Az alacsony szintű API mellett van egy magasabb szintű API is, amelyet [Keras](https://keras.io/) és [PyTorch Lightning](https://pytorchlightning.ai/) néven ismerünk. + +Alacsony szintű API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------------|-------------------------------------|-------------------------------- +Magas szintű API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Az alacsony szintű API-k** mindkét keretrendszerben lehetővé teszik úgynevezett **számítási gráfok** létrehozását. Ez a gráf meghatározza, hogyan kell kiszámítani a kimenetet (általában a veszteségfüggvényt) adott bemeneti paraméterekkel, és GPU-ra küldhető számításra, ha elérhető. Vannak funkciók, amelyekkel differenciálhatjuk ezt a számítási gráfot és kiszámíthatjuk a gradiens értékeket, amelyeket aztán a modell paramétereinek optimalizálására használhatunk. + +**A magas szintű API-k** a neurális hálózatokat **rétegek sorozataként** kezelik, és a legtöbb neurális hálózat felépítését jelentősen leegyszerűsítik. A modell tanítása általában az adatok előkészítését és egy `fit` függvény meghívását igényli. + +A magas szintű API lehetővé teszi tipikus neurális hálózatok gyors felépítését anélkül, hogy sok részlettel kellene foglalkozni. Ugyanakkor az alacsony szintű API sokkal nagyobb kontrollt biztosít a tanítási folyamat felett, ezért gyakran használják kutatások során, amikor új neurális hálózat architektúrákkal dolgozunk. + +Fontos megérteni, hogy mindkét API-t együtt is használhatjuk, például saját hálózati réteg architektúrát fejleszthetünk alacsony szintű API-val, majd használhatjuk azt egy nagyobb hálózatban, amelyet magas szintű API-val építettünk és tanítottunk. Vagy definiálhatunk egy hálózatot magas szintű API-val rétegek sorozataként, majd saját alacsony szintű tanítási ciklust használhatunk az optimalizációhoz. Mindkét API ugyanazokat az alapvető koncepciókat használja, és úgy tervezték őket, hogy jól működjenek együtt. + +## Tanulás + +Ebben a kurzusban a legtöbb tartalmat PyTorch és TensorFlow keretrendszerekhez is kínáljuk. Kiválaszthatod a preferált keretrendszert, és csak a megfelelő jegyzetfüzeteket tanulmányozhatod. Ha nem vagy biztos benne, melyik keretrendszert válaszd, olvass el néhány vitát az interneten a **PyTorch vs. TensorFlow** témában. Megnézheted mindkét keretrendszert, hogy jobban megértsd őket. + +Ahol lehetséges, egyszerűség kedvéért magas szintű API-kat fogunk használni. Ugyanakkor fontosnak tartjuk, hogy megértsük, hogyan működnek a neurális hálózatok az alapoktól kezdve, ezért az elején alacsony szintű API-val és tensorokkal dolgozunk. Ha azonban gyorsan szeretnél haladni, és nem akarsz sok időt tölteni ezeknek a részleteknek a tanulásával, kihagyhatod ezeket, és közvetlenül a magas szintű API jegyzetfüzetekbe léphetsz. + +## ✍️ Gyakorlatok: Keretrendszerek + +Folytasd a tanulást az alábbi jegyzetfüzetekben: + +Alacsony szintű API | [TensorFlow+Keras Jegyzetfüzet](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------------|-------------------------------------|-------------------------------- +Magas szintű API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Miután elsajátítottad a keretrendszereket, tekintsük át az overfitting fogalmát. + +# Overfitting + +Az overfitting rendkívül fontos fogalom a gépi tanulásban, és nagyon fontos, hogy jól megértsük! + +Vegyük példának az alábbi problémát, amelyben 5 pontot próbálunk közelíteni (a grafikonokon `x`-szel jelölve): + +![lineáris](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.hu.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.hu.jpg) +-------------------------|-------------------------- +**Lineáris modell, 2 paraméter** | **Nem-lineáris modell, 7 paraméter** +Tanítási hiba = 5.3 | Tanítási hiba = 0 +Validációs hiba = 5.1 | Validációs hiba = 20 + +* A bal oldalon egy jó egyenes vonal közelítést látunk. Mivel a paraméterek száma megfelelő, a modell helyesen érti a pontok eloszlásának lényegét. +* A jobb oldalon a modell túl erős. Mivel csak 5 pontunk van, és a modellnek 7 paramétere van, úgy tudja beállítani magát, hogy minden ponton áthaladjon, így a tanítási hiba 0 lesz. Ez azonban megakadályozza, hogy a modell megértse az adatok mögötti helyes mintázatot, így a validációs hiba nagyon magas. + +Nagyon fontos megtalálni a megfelelő egyensúlyt a modell gazdagsága (paraméterek száma) és a tanítási minták száma között. + +## Miért fordul elő overfitting? + + * Nem elég tanítási adat + * Túl erős modell + * Túl sok zaj a bemeneti adatokban + +## Hogyan észlelhető az overfitting? + +Ahogy a fenti grafikonon látható, az overfittinget nagyon alacsony tanítási hiba és magas validációs hiba jelezheti. Általában a tanítás során mind a tanítási, mind a validációs hibák csökkenni kezdenek, majd egy ponton a validációs hiba megállhat a csökkenésben, és növekedni kezdhet. Ez az overfitting jele, és annak indikátora, hogy valószínűleg abba kell hagynunk a tanítást (vagy legalábbis készítenünk kell egy pillanatképet a modellről). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.hu.png) + +## Hogyan előzhető meg az overfitting? + +Ha látod, hogy overfitting történik, az alábbiakat teheted: + + * Növeld a tanítási adatok mennyiségét + * Csökkentsd a modell komplexitását + * Használj valamilyen [regularizációs technikát](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), például [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), amelyet később megvizsgálunk. + +## Overfitting és Bias-Variance Tradeoff + +Az overfitting valójában egy általánosabb statisztikai probléma, amelyet [Bias-Variance Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) néven ismerünk. Ha megvizsgáljuk a modellünk hibáinak lehetséges forrásait, kétféle hibát láthatunk: + +* **Bias hibák**, amelyeket az algoritmusunk okoz, mert nem képes helyesen megragadni a tanítási adatok közötti kapcsolatot. Ez abból adódhat, hogy a modellünk nem elég erős (**underfitting**). +* **Variance hibák**, amelyeket az okoz, hogy a modell a bemeneti adatok zaját közelíti ahelyett, hogy a jelentős kapcsolatot ragadná meg (**overfitting**). + +A tanítás során a bias hiba csökken (mivel a modell megtanulja közelíteni az adatokat), és a variance hiba növekszik. Fontos, hogy megállítsuk a tanítást - akár manuálisan (amikor észleljük az overfittinget), akár automatikusan (regularizáció bevezetésével) -, hogy megelőzzük az overfittinget. + +## Összegzés + +Ebben a leckében megtanultad a két legnépszerűbb AI keretrendszer, a TensorFlow és a PyTorch különböző API-jainak közötti különbségeket. Emellett megismerkedtél egy nagyon fontos témával, az overfittinggel. + +## 🚀 Kihívás + +Az accompanying jegyzetfüzetekben 'feladatokat' találsz az alján; dolgozd át a jegyzetfüzeteket, és végezd el a feladatokat. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Áttekintés és önálló tanulás + +Végezz kutatást az alábbi témákban: + +- TensorFlow +- PyTorch +- Overfitting + +Tedd fel magadnak a következő kérdéseket: + +- Mi a különbség a TensorFlow és a PyTorch között? +- Mi a különbség az overfitting és az underfitting között? + +## [Feladat](lab/README.md) + +Ebben a laborban két osztályozási problémát kell megoldanod egy- és többrétegű teljesen összekapcsolt hálózatokkal PyTorch vagy TensorFlow használatával. + +* [Útmutató](lab/README.md) +* [Jegyzetfüzet](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..6f83d9fb --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Osztályozás PyTorch/TensorFlow segítségével + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) keretében. + +## Feladat + +Oldj meg két osztályozási problémát egy- és többrétegű teljesen összekapcsolt hálózatokkal PyTorch vagy TensorFlow használatával: + +1. **[Iris osztályozás](https://en.wikipedia.org/wiki/Iris_flower_data_set)** probléma - egy példa táblázatos bemeneti adatokkal kapcsolatos problémára, amelyet klasszikus gépi tanulási módszerekkel is meg lehet oldani. A célod az, hogy az íriszeket 3 osztályba sorold, 4 numerikus paraméter alapján. +1. **MNIST** kézzel írt számjegyek osztályozási problémája, amelyet korábban már láttunk. + +Próbálj ki különböző hálózati architektúrákat, hogy elérd a lehető legjobb pontosságot. + +## Induló Jegyzetfüzet + +Kezdd a labort a [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) megnyitásával. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/3-NeuralNetworks/README.md b/translations/hu/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..ed9c5747 --- /dev/null +++ b/translations/hu/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Bevezetés a Neurális Hálózatokba + +![Összefoglaló a Neurális Hálózatok bevezetőjéről egy rajzban](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.hu.png) + +Ahogy a bevezetőben említettük, az intelligencia egyik elérési módja az, hogy egy **számítógépes modellt** vagy egy **mesterséges agyat** tanítunk. A 20. század közepe óta a kutatók különböző matematikai modelleket próbáltak ki, míg az utóbbi években ez az irány rendkívül sikeresnek bizonyult. Az agy ilyen matematikai modelljeit **neurális hálózatoknak** nevezzük. + +> Néha a neurális hálózatokat *Mesterséges Neurális Hálózatoknak* (Artificial Neural Networks, ANNs) hívják, hogy jelezzék, hogy modellekről van szó, nem valódi neuronhálózatokról. + +## Gépi Tanulás + +A neurális hálózatok egy nagyobb tudományterület, a **Gépi Tanulás** részei, amelynek célja, hogy adatokat használva olyan számítógépes modelleket tanítsunk, amelyek képesek problémák megoldására. A Gépi Tanulás az egyik jelentős része a Mesterséges Intelligenciának, azonban ebben a tananyagban nem foglalkozunk a klasszikus gépi tanulással. + +> Látogass el különálló **[Gépi Tanulás Kezdőknek](http://github.com/microsoft/ml-for-beginners)** tananyagunkra, hogy többet megtudj a klasszikus gépi tanulásról. + +A Gépi Tanulásban feltételezzük, hogy van egy példákból álló adathalmazunk **X**, és a hozzájuk tartozó kimeneti értékek **Y**. A példák gyakran N-dimenziós vektorok, amelyek **jellemzőkből** állnak, míg a kimeneteket **címkéknek** nevezzük. + +A két leggyakoribb gépi tanulási problémát fogjuk megvizsgálni: + +* **Osztályozás**, ahol egy bemeneti objektumot kell két vagy több osztályba sorolni. +* **Regresszió**, ahol egy numerikus értéket kell megjósolni minden bemeneti mintára. + +> Ha a bemeneteket és kimeneteket tenzorként ábrázoljuk, a bemeneti adathalmaz egy M×N méretű mátrix, ahol M a minták száma, N pedig a jellemzők száma. A kimeneti címkék **Y** egy M méretű vektor. + +Ebben a tananyagban kizárólag neurális hálózati modellekre fogunk koncentrálni. + +## Egy Neuron Modellje + +A biológiából tudjuk, hogy az agyunk neurális sejtekből áll, amelyek mindegyike több "bemenettel" (axonok) és egy kimenettel (dendrit) rendelkezik. Az axonok és dendritek elektromos jeleket tudnak továbbítani, és az axonok és dendritek közötti kapcsolatok különböző vezetőképességi szinteket mutathatnak (amelyeket neuromediátorok szabályoznak). + +![Neuron modellje](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.hu.jpg) | ![Neuron modellje](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.hu.png) +----|---- +Valódi neuron *([Kép](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) a Wikipédiáról)* | Mesterséges neuron *(Kép a szerzőtől)* + +Így a neuron legegyszerűbb matematikai modellje több bemenetet tartalmaz **X1, ..., XN**, egy kimenetet **Y**, és egy sor súlyt **W1, ..., WN**. A kimenet a következőképpen számítható ki: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +ahol **f** egy nemlineáris **aktivációs függvény**. + +> A neuron korai modelljeit Warren McCullock és Walter Pitts 1943-ban írt klasszikus tanulmányában [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) írták le. Donald Hebb "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" című könyvében javasolta, hogyan lehet ezeket a hálózatokat tanítani. + +## Ebben a szakaszban + +Ebben a szakaszban megtanuljuk: +* [Perceptron](03-Perceptron/README.md), az egyik legkorábbi neurális hálózati modell kétosztályos osztályozáshoz +* [Többrétegű hálózatok](04-OwnFramework/README.md) egy párosított jegyzettel [hogyan építsünk saját keretrendszert](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Neurális Hálózati Keretrendszerek](05-Frameworks/README.md), ezekkel a jegyzetekkel: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) és [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Túlillesztés](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/hu/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..f9d5a6f3 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Bevezetés a Számítógépes Látásba + +A [Számítógépes Látás](https://wikipedia.org/wiki/Computer_vision) egy olyan tudományág, amelynek célja, hogy a számítógépek magas szintű megértést szerezzenek digitális képekből. Ez egy meglehetősen tág meghatározás, mivel a *megértés* sok mindent jelenthet, például egy objektum megtalálását egy képen (**objektumdetektálás**), annak megértését, hogy mi történik (**eseménydetektálás**), egy kép szöveges leírását, vagy egy jelenet 3D-s rekonstrukcióját. Vannak speciális feladatok is, amelyek az emberi képekkel kapcsolatosak: életkor- és érzelemfelismerés, arcfelismerés és azonosítás, valamint 3D testtartás becslés, hogy csak néhányat említsünk. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +A számítógépes látás egyik legegyszerűbb feladata a **képosztályozás**. + +A számítógépes látást gyakran az MI egyik ágának tekintik. Manapság a legtöbb számítógépes látási feladatot neurális hálózatokkal oldják meg. Ebben a részben többet fogunk tanulni a számítógépes látásra használt speciális neurális hálózatokról, a [konvolúciós neurális hálózatokról](../07-ConvNets/README.md). + +Azonban mielőtt egy képet neurális hálózatba küldenénk, sok esetben érdemes algoritmikus technikákat alkalmazni a kép javítására. + +Számos Python könyvtár érhető el képfeldolgozáshoz: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** különböző képformátumok olvasására/írására használható. Támogatja az ffmpeg-et is, amely hasznos eszköz videókeretek képekké alakításához. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (más néven PIL) valamivel erősebb, és támogat néhány képmódosítást, például morfológiai műveleteket, paletta beállításokat és még sok mást. +* **[OpenCV](https://opencv.org/)** egy erőteljes képfeldolgozó könyvtár, amely C++-ban íródott, és a képfeldolgozás *de facto* szabványává vált. Kényelmes Python interfésszel rendelkezik. +* **[dlib](http://dlib.net/)** egy C++ könyvtár, amely számos gépi tanulási algoritmust valósít meg, beleértve néhány számítógépes látási algoritmust is. Python interfésszel is rendelkezik, és kihívást jelentő feladatokhoz, például arcfelismeréshez és arcvonás detektáláshoz használható. + +## OpenCV + +Az [OpenCV](https://opencv.org/) a képfeldolgozás *de facto* szabványának számít. Számos hasznos algoritmust tartalmaz, amelyek C++-ban vannak implementálva. Az OpenCV-t Pythonból is meghívhatjuk. + +Egy jó hely az OpenCV tanulásához a [Learn OpenCV kurzus](https://learnopencv.com/getting-started-with-opencv/). A tananyagunkban nem az OpenCV megtanulása a cél, hanem az, hogy bemutassunk néhány példát arra, mikor és hogyan használható. + +### Képek betöltése + +A Pythonban a képek kényelmesen ábrázolhatók NumPy tömbökkel. Például egy 320x200 pixeles szürkeárnyalatos kép egy 200x320-as tömbben tárolódik, míg egy ugyanolyan méretű színes kép alakja 200x320x3 (a 3 színcsatorna miatt). Egy kép betöltéséhez az alábbi kódot használhatjuk: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Hagyományosan az OpenCV a színes képekhez BGR (Kék-Zöld-Piros) kódolást használ, míg a Python többi eszköze a hagyományosabb RGB (Piros-Zöld-Kék) kódolást alkalmazza. Ahhoz, hogy a kép helyesen jelenjen meg, át kell alakítani az RGB színtérbe, akár a NumPy tömb dimenzióinak felcserélésével, akár egy OpenCV függvény meghívásával: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Ugyanez a `cvtColor` függvény más színtér-átalakításokhoz is használható, például egy kép szürkeárnyalatossá vagy HSV (Színárnyalat-Telítettség-Érték) színtérbe történő átalakításához. + +Az OpenCV segítségével videókat is betölthetünk képkockánként – erre példa található a [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) gyakorlatban. + +### Képfeldolgozás + +Mielőtt egy képet neurális hálózatba küldenénk, érdemes lehet több előfeldolgozási lépést alkalmazni. Az OpenCV számos dolgot képes elvégezni, például: + +* A kép **átméretezése** `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` használatával +* A kép **elmosása** `im = cv2.medianBlur(im,3)` vagy `im = cv2.GaussianBlur(im, (3,3), 0)` segítségével +* A kép **fényességének és kontrasztjának** megváltoztatása NumPy tömbműveletekkel, ahogy azt [ebben a Stackoverflow bejegyzésben](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) leírják. +* [Küszöbölés](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) alkalmazása `cv2.threshold`/`cv2.adaptiveThreshold` függvényekkel, amely gyakran előnyösebb, mint a fényesség vagy kontraszt beállítása. +* Különböző [transzformációk](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) alkalmazása a képre: + - **[Affin transzformációk](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** hasznosak lehetnek, ha forgatást, átméretezést és torzítást kell kombinálni a képen, és ismerjük a kép három pontjának forrás- és célhelyzetét. Az affin transzformációk párhuzamos vonalakat párhuzamosan tartanak. + - **[Perspektíva transzformációk](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** hasznosak lehetnek, ha ismerjük a kép négy pontjának forrás- és célhelyzetét. Például, ha egy téglalap alakú dokumentumot okostelefon kamerájával szögből fényképezünk, és a dokumentumról magáról téglalap alakú képet szeretnénk készíteni. +* Mozgás megértése a képen belül **[optikai áramlás](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** segítségével. + +## Számítógépes Látás Alkalmazási Példák + +A [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) példákban bemutatjuk, hogy a számítógépes látás hogyan használható konkrét feladatok elvégzésére: + +* **Egy Braille könyv fényképének előfeldolgozása**. Arra összpontosítunk, hogyan használhatjuk a küszöbölést, jellemződetektálást, perspektíva transzformációt és NumPy manipulációkat az egyes Braille szimbólumok elkülönítésére, hogy azokat egy neurális hálózat tovább osztályozhassa. + +![Braille kép](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.hu.jpeg) | ![Braille előfeldolgozott kép](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.hu.png) | ![Braille szimbólumok](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.hu.png) +----|-----|----- + +> Kép a [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) fájlból + +* **Mozgás detektálása videóban képkocka-különbséggel**. Ha a kamera rögzített, akkor a kamera képkockái általában nagyon hasonlóak egymáshoz. Mivel a képkockák tömbökként vannak ábrázolva, egyszerűen a két egymást követő képkocka tömbjeinek kivonásával megkapjuk a pixelek különbségét, amely alacsony lesz statikus képkockák esetén, és magasabbá válik, ha jelentős mozgás van a képen. + +![Videó képkockák és különbségek képe](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.hu.png) + +> Kép a [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) fájlból + +* **Mozgás detektálása optikai áramlással**. Az [optikai áramlás](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) lehetővé teszi, hogy megértsük, hogyan mozognak az egyes pixelek a videó képkockáin. Az optikai áramlásnak két típusa van: + + - **Sűrű optikai áramlás**, amely vektormezőt számít ki, amely megmutatja, hogy az egyes pixelek hová mozognak + - **Ritka optikai áramlás**, amely a kép néhány jellegzetes elemére (pl. élek) épül, és ezek pályáját építi fel képkockáról képkockára. + +![Optikai áramlás képe](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.hu.png) + +> Kép a [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) fájlból + +## ✍️ Példa Jegyzetfüzetek: OpenCV [próbáld ki az OpenCV-t működés közben](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Kísérletezzünk az OpenCV-vel a [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) felfedezésével. + +## Összegzés + +Néha viszonylag összetett feladatok, mint például mozgásérzékelés vagy ujjhegyek detektálása, tisztán számítógépes látással is megoldhatók. Ezért nagyon hasznos ismerni a számítógépes látás alapvető technikáit, és hogy mit tudnak az olyan könyvtárak, mint az OpenCV. + +## 🚀 Kihívás + +Nézd meg [ezt a videót](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) az AI Show-ból, hogy megismerd a Cortic Tigers projektet, és hogyan építettek egy blokk-alapú megoldást a számítógépes látási feladatok demokratizálására egy robot segítségével. Kutass más hasonló projekteket, amelyek segítenek az új tanulók bevonásában a területre. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Áttekintés és Önálló Tanulás + +Olvass többet az optikai áramlásról [ebben a remek útmutatóban](https://learnopencv.com/optical-flow-in-opencv/). + +## [Feladat](lab/README.md) + +Ebben a laborban egy egyszerű gesztusokat tartalmazó videót fogsz elemezni, és a célod az, hogy optikai áramlás segítségével kinyerd a fel/le/balra/jobbra mozgásokat. + +Palm Movement Frame + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/hu/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..bf266633 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Mozgások észlelése optikai áramlással + +Laborfeladat az [AI for Beginners Curriculum](https://aka.ms/ai-beginners) alapján. + +## Feladat + +Tekintsd meg [ezt a videót](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), amelyben egy személy tenyere mozog balra/jobbra/fel/le egy stabil háttér előtt. + +**A célod** az lenne, hogy az optikai áramlás segítségével meghatározd, a videó mely részei tartalmaznak fel/le/balra/jobbra irányú mozgásokat. + +**Kihívás**: Kövesd ténylegesen a tenyér/ujj mozgását bőrszín alapján, ahogy [ebben a blogbejegyzésben](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) vagy [itt](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) le van írva. + +## Kezdő Notebook + +Kezdd a labort a [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) megnyitásával. + +## Tanulság + +Néha viszonylag összetett feladatokat, mint például mozgásérzékelés vagy ujjhegy érzékelés, pusztán számítógépes látással is meg lehet oldani. Ezért nagyon hasznos tudni, hogy mit tudnak olyan könyvtárak, mint az OpenCV. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/hu/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..b1af3bfe --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Jól ismert CNN architektúrák + +### VGG-16 + +A VGG-16 egy hálózat, amely 2014-ben 92,7%-os pontosságot ért el az ImageNet top-5 osztályozásban. Az alábbi rétegszerkezettel rendelkezik: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hu.jpg) + +Amint látható, a VGG egy hagyományos piramis architektúrát követ, amely konvolúciós és pooling rétegek sorozatából áll. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hu.jpg) + +> Kép forrása: [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 + +A ResNet a Microsoft Research által 2015-ben javasolt modellek családja. A ResNet fő ötlete az **reziduális blokkok** használata: + + + +> Kép forrása: [ez a tanulmány](https://arxiv.org/pdf/1512.03385.pdf) + +Az identitás-átvezetés használatának oka, hogy a réteg **a különbséget** jósolja meg az előző réteg eredménye és a reziduális blokk kimenete között - innen ered a *reziduális* elnevezés. Ezeket a blokkokat sokkal könnyebb tanítani, és akár több száz ilyen blokkból álló hálózatokat is lehet építeni (a leggyakoribb változatok: ResNet-52, ResNet-101 és ResNet-152). + +Ezt a hálózatot úgy is elképzelhetjük, mint amely képes a komplexitását a datasethez igazítani. Kezdetben, amikor elkezdjük tanítani a hálózatot, a súlyok értékei kicsik, és a legtöbb jel az identitás-átvezetési rétegeken keresztül halad. Ahogy a tanítás előrehalad és a súlyok nagyobbak lesznek, a hálózati paraméterek jelentősége nő, és a hálózat alkalmazkodik a szükséges kifejezőerőhöz, hogy helyesen osztályozza a tanítási képeket. + +### Google Inception + +A Google Inception architektúra ezt az ötletet egy lépéssel tovább viszi, és minden hálózati réteget több különböző útvonal kombinációjaként épít fel: + + + +> Kép forrása: [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Itt ki kell emelnünk az 1x1 konvolúciók szerepét, mert elsőre nem tűnnek logikusnak. Miért lenne szükségünk arra, hogy 1x1 szűrővel végigmenjünk a képen? Azonban ne felejtsük el, hogy a konvolúciós szűrők több mélységi csatornával is dolgoznak (eredetileg - RGB színek, későbbi rétegekben - különböző szűrők csatornái), és az 1x1 konvolúciót arra használjuk, hogy ezeket a bemeneti csatornákat különböző tanítható súlyokkal összekeverjük. Ez úgy is tekinthető, mint csatorna dimenzióban történő mintavételezés (pooling). + +Itt van [egy jó blogbejegyzés](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) a témáról, és [az eredeti tanulmány](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +A MobileNet egy olyan modellek családja, amelyek csökkentett méretűek, és mobil eszközökre alkalmasak. Használja őket, ha korlátozottak az erőforrásai, és hajlandó egy kis pontosságot feláldozni. A mögöttes fő ötlet az úgynevezett **mélységi szeparálható konvolúció**, amely lehetővé teszi, hogy a konvolúciós szűrőket térbeli konvolúciók és 1x1 konvolúciók kompozíciójaként ábrázoljuk a mélységi csatornák felett. Ez jelentősen csökkenti a paraméterek számát, így a hálózat kisebb méretű lesz, és kevesebb adattal is könnyebben tanítható. + +Itt van [egy jó blogbejegyzés a MobileNetről](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Összegzés + +Ebben az egységben megismerte a számítógépes látás neurális hálózatainak fő koncepcióját - a konvolúciós hálózatokat. A valós életben használt architektúrák, amelyek képosztályozást, objektumfelismerést és akár képgenerálást is végeznek, mind CNN-ekre épülnek, csak több réteggel és néhány további tanítási trükkel. + +## 🚀 Kihívás + +A mellékelt jegyzetfüzetekben vannak megjegyzések az alján arról, hogyan lehet nagyobb pontosságot elérni. Végezzen kísérleteket, hogy megnézze, el tud-e érni magasabb pontosságot. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Áttekintés és önálló tanulás + +Bár a CNN-eket leggyakrabban számítógépes látási feladatokhoz használják, általában jók fix méretű minták kinyerésére. Például, ha hangokkal dolgozunk, akkor is használhatunk CNN-eket, hogy bizonyos mintákat keressünk az audió jelben - ebben az esetben a szűrők 1-dimenziósak lennének (és ezt a CNN-t 1D-CNN-nek neveznénk). Néha 3D-CNN-t is használnak, hogy jellemzőket nyerjenek ki többdimenziós térben, például bizonyos események előfordulását videón - a CNN képes bizonyos mintákat megragadni a jellemzők időbeli változásában. Végezzen áttekintést és önálló tanulást arról, hogy milyen más feladatokat lehet elvégezni CNN-ekkel. + +## [Feladat](lab/README.md) + +Ebben a laborban különböző macska- és kutyafajták osztályozása a feladat. Ezek a képek bonyolultabbak, mint az MNIST adatállomány, nagyobb dimenziójúak, és több mint 10 osztály van. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/hu/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..0ec76887 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konvolúciós Neurális Hálók + +Korábban láttuk, hogy a neurális hálók elég jól kezelik a képeket, és még egy egyrétegű perceptron is képes az MNIST adathalmazon található kézzel írt számjegyeket elfogadható pontossággal felismerni. Azonban az MNIST adathalmaz különleges, mivel az összes számjegy középre van igazítva a képen, ami egyszerűbbé teszi a feladatot. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +A való életben azt szeretnénk, hogy képesek legyünk felismerni tárgyakat egy képen, függetlenül azok pontos helyzetétől a képen belül. A számítógépes látás különbözik az általános osztályozástól, mert amikor egy adott tárgyat keresünk a képen, a képet pásztázzuk, hogy bizonyos **mintázatokat** és azok kombinációit keressük. Például, ha egy macskát keresünk, először vízszintes vonalakat kereshetünk, amelyek bajuszokat alkothatnak, majd bizonyos bajuszkombinációk alapján megállapíthatjuk, hogy valóban egy macska képe van előttünk. A mintázatok relatív helyzete és jelenléte fontos, nem pedig azok pontos helyzete a képen. + +A mintázatok kinyeréséhez a **konvolúciós szűrők** fogalmát fogjuk használni. Mint tudjuk, egy kép egy 2D-mátrixként vagy egy színmélységgel rendelkező 3D-tenzorként van ábrázolva. Egy szűrő alkalmazása azt jelenti, hogy veszünk egy viszonylag kicsi **szűrőmag** mátrixot, és az eredeti kép minden egyes pixelére kiszámítjuk a szomszédos pontokkal súlyozott átlagot. Ezt úgy képzelhetjük el, mint egy kis ablakot, amely végigcsúszik az egész képen, és az összes pixelt a szűrőmag mátrix súlyai szerint átlagolja. + +![Függőleges él szűrő](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.hu.png) | ![Vízszintes él szűrő](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.hu.png) +----|---- + +> Kép: Dmitry Soshnikov + +Például, ha 3x3-as függőleges és vízszintes él szűrőket alkalmazunk az MNIST számjegyekre, kiemeléseket (pl. magas értékeket) kapunk ott, ahol az eredeti képen függőleges és vízszintes élek találhatók. Így ez a két szűrő használható az élek "keresésére". Hasonlóan, más szűrőket is tervezhetünk, hogy alacsony szintű mintázatokat keressünk: + +> Kép a [Leung-Malik szűrőbankról](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Azonban, míg manuálisan is tervezhetünk szűrőket bizonyos mintázatok kinyerésére, a hálót úgy is megtervezhetjük, hogy a mintázatokat automatikusan tanulja meg. Ez az egyik fő ötlet a CNN mögött. + +## A CNN fő ötletei + +A CNN-ek működése a következő fontos ötleteken alapul: + +* A konvolúciós szűrők képesek mintázatokat kinyerni +* A hálót úgy tervezhetjük meg, hogy a szűrők automatikusan tanuljanak +* Ugyanezt a megközelítést használhatjuk magas szintű jellemzők mintázatainak megtalálására is, nem csak az eredeti képen. Így a CNN jellemzők kinyerése egy hierarchikus jellemzőrendszeren működik, az alacsony szintű pixelkombinációktól kezdve egészen a kép részeinek magasabb szintű kombinációjáig. + +![Hierarchikus jellemzők kinyerése](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.hu.png) + +> Kép: [Hislop-Lynch tanulmánya](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), [kutatásuk alapján](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Gyakorlatok: Konvolúciós Neurális Hálók + +Folytassuk a konvolúciós neurális hálók működésének felfedezését, és nézzük meg, hogyan érhetünk el tanulható szűrőket az alábbi notebookok segítségével: + +* [Konvolúciós Neurális Hálók - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolúciós Neurális Hálók - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Piramis architektúra + +A legtöbb képfeldolgozásra használt CNN az úgynevezett piramis architektúrát követi. Az eredeti képekre alkalmazott első konvolúciós réteg általában viszonylag kevés szűrőt tartalmaz (8-16), amelyek különböző pixelkombinációknak felelnek meg, például vízszintes/függőleges vonalaknak vagy vonásoknak. A következő szinten csökkentjük a háló térbeli dimenzióját, és növeljük a szűrők számát, ami több egyszerű jellemző kombinációját teszi lehetővé. Minden réteggel, ahogy a végső osztályozó felé haladunk, a kép térbeli dimenziói csökkennek, míg a szűrők száma nő. + +Példaként nézzük meg a VGG-16 architektúráját, amely 92,7%-os pontosságot ért el az ImageNet top-5 osztályozásában 2014-ben: + +![ImageNet rétegek](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.hu.jpg) + +![ImageNet piramis](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.hu.jpg) + +> Kép: [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) + +## Legismertebb CNN architektúrák + +[Folytasd a legismertebb CNN architektúrák tanulmányozását](CNN_Architectures.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/hu/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..a43b1218 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Háziállatok arcainak osztályozása + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) alapján. + +## Feladat + +Képzeld el, hogy egy alkalmazást kell fejlesztened egy kisállat óvoda számára, amely katalogizálja az összes háziállatot. Az alkalmazás egyik nagyszerű funkciója az lenne, hogy egy fénykép alapján automatikusan felismeri a fajtát. Ez sikeresen megvalósítható neurális hálózatok segítségével. + +Egy konvolúciós neurális hálózatot kell betanítanod, amely képes különböző macska- és kutyafajtákat osztályozni a **Pet Faces** adatbázis segítségével. + +## Az Adatbázis + +A **Pet Faces** adatbázist fogjuk használni, amely az [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) kisállat adatbázisból származik. Ez 35 különböző kutya- és macskafajtát tartalmaz. + +![Az adatbázis, amellyel dolgozni fogunk](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.hu.png) + +Az adatbázis letöltéséhez használd az alábbi kódrészletet: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Induló Jegyzetfüzet + +Kezdd a labort a [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) megnyitásával. + +## Tanulság + +Egy viszonylag összetett problémát oldottál meg, amely a képosztályozásról szólt, teljesen az alapoktól! Rengeteg osztály volt, és mégis sikerült elfogadható pontosságot elérned! Érdemes megmérni a top-k pontosságot is, mivel könnyű összekeverni néhány olyan osztályt, amelyek még az emberek számára sem különböztethetők meg egyértelműen. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..44976a91 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Előre betanított hálózatok és transzfer tanulás + +A CNN-ek tanítása sok időt vehet igénybe, és ehhez nagy mennyiségű adat szükséges. Az idő nagy részét azonban azzal töltjük, hogy megtanuljuk azokat az alacsony szintű szűrőket, amelyeket a hálózat használhat a minták kinyerésére a képekből. Felmerül egy természetes kérdés: használhatunk-e egy másik adathalmazon betanított neurális hálózatot, és adaptálhatjuk-e azt különböző képek osztályozására anélkül, hogy teljes tanítási folyamatra lenne szükség? + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Ezt a megközelítést **transzfer tanulásnak** nevezzük, mivel egy neurális hálózati modellből átvisszük a tudást egy másikba. A transzfer tanulás során általában egy előre betanított modellel kezdünk, amelyet egy nagy képadathalmazon, például az **ImageNet**-en tanítottak. Ezek a modellek már jó eredményeket érhetnek el különböző jellemzők kinyerésében általános képekből, és sok esetben elegendő egy osztályozót építeni ezekre a kinyert jellemzőkre, hogy jó eredményt érjünk el. + +> ✅ A transzfer tanulás kifejezés más tudományterületeken is előfordul, például az oktatásban. Arra utal, hogy egy területen szerzett tudást egy másik területen alkalmazunk. + +## Előre betanított modellek mint jellemzők kinyerői + +Az előző szakaszban tárgyalt konvolúciós hálózatok több rétegből állnak, amelyek mindegyike bizonyos jellemzőket nyer ki a képből, kezdve az alacsony szintű pixelkombinációktól (például vízszintes/függőleges vonal vagy stroke), egészen a magasabb szintű jellemzőkombinációkig, amelyek például egy láng szemének felelnek meg. Ha egy CNN-t elég nagy, általános és változatos képadathalmazon tanítunk, a hálózatnak meg kell tanulnia ezeket a közös jellemzőket kinyerni. + +Mind a Keras, mind a PyTorch tartalmaz funkciókat, amelyekkel könnyen betölthetők előre betanított neurális hálózati súlyok néhány gyakori architektúrához, amelyek többségét ImageNet képeken tanították. A leggyakrabban használtakat az előző leckében található [CNN Architektúrák](../07-ConvNets/CNN_Architectures.md) oldalon ismertettük. Különösen érdemes megfontolni az alábbiakat: + +* **VGG-16/VGG-19**, amelyek viszonylag egyszerű modellek, de mégis jó pontosságot adnak. Gyakran jó választás a VGG használata első próbálkozásként, hogy lássuk, hogyan működik a transzfer tanulás. +* **ResNet**, amelyet a Microsoft Research javasolt 2015-ben. Ezeknek több rétegük van, így több erőforrást igényelnek. +* **MobileNet**, amely csökkentett méretű modellek családja, mobil eszközökre alkalmas. Használja őket, ha kevés erőforrással rendelkezik, és hajlandó egy kis pontosságot feláldozni. + +Íme néhány jellemző, amelyet egy macska képéből nyert ki a VGG-16 hálózat: + +![Jellemzők, amelyeket a VGG-16 nyert ki](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.hu.png) + +## Macskák és kutyák adathalmaz + +Ebben a példában a [Macskák és Kutyák](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) adathalmazt fogjuk használni, amely nagyon közel áll egy valós életbeli képosztályozási feladathoz. + +## ✍️ Gyakorlat: Transzfer tanulás + +Nézzük meg a transzfer tanulást működés közben a megfelelő notebookokban: + +* [Transzfer tanulás - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transzfer tanulás - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Az ellenséges macska vizualizálása + +Az előre betanított neurális hálózat különböző mintákat tartalmaz az *agyában*, beleértve az **ideális macska** fogalmát (valamint ideális kutya, ideális zebra stb.). Érdekes lenne valahogy **vizualizálni ezt a képet**. Ez azonban nem egyszerű, mert a minták szétszóródnak a hálózat súlyai között, és hierarchikus struktúrában vannak szervezve. + +Egy megközelítés, amit alkalmazhatunk, az, hogy egy véletlenszerű képpel kezdünk, majd megpróbáljuk **gradiens csökkenés optimalizációs** technikával úgy módosítani azt a képet, hogy a hálózat elkezdje azt macskának gondolni. + +![Kép optimalizációs ciklus](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.hu.png) + +Ha ezt tesszük, akkor valami nagyon hasonlót kapunk, mint egy véletlenszerű zaj. Ennek az az oka, hogy *sokféleképpen lehet a hálózatot rávenni arra, hogy a bemeneti képet macskának gondolja*, beleértve olyanokat is, amelyek vizuálisan nem értelmezhetők. Bár ezek a képek sok olyan mintát tartalmaznak, amelyek tipikusak egy macskára, semmi sem kényszeríti őket arra, hogy vizuálisan megkülönböztethetők legyenek. + +Az eredmény javítása érdekében hozzáadhatunk egy másik tagot a veszteségfüggvényhez, amelyet **variációs veszteségnek** nevezünk. Ez egy metrika, amely megmutatja, mennyire hasonlóak a kép szomszédos pixelei. A variációs veszteség minimalizálása simábbá teszi a képet, és megszabadul a zajtól - így vizuálisan vonzóbb mintákat tár fel. Íme egy példa az ilyen "ideális" képekre, amelyeket nagy valószínűséggel macskának és zebrának osztályoznak: + +![Ideális macska](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.hu.png) | ![Ideális zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.hu.png) +-----|----- + *Ideális macska* | *Ideális zebra* + +Hasonló megközelítést alkalmazhatunk úgynevezett **ellenséges támadások** végrehajtására egy neurális hálózaton. Tegyük fel, hogy meg akarjuk téveszteni a neurális hálózatot, és egy kutyát macskának akarunk láttatni. Ha veszünk egy kutya képét, amelyet a hálózat kutyaként ismer fel, akkor azt egy kicsit módosíthatjuk gradiens csökkenés optimalizációval, amíg a hálózat macskaként nem kezdi osztályozni: + +![Kép egy kutyáról](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.hu.png) | ![Kép egy kutyáról, amelyet macskának osztályoznak](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.hu.png) +-----|----- +*Eredeti kép egy kutyáról* | *Kép egy kutyáról, amelyet macskának osztályoznak* + +Nézze meg a fenti eredmények reprodukálásához szükséges kódot az alábbi notebookban: + +* [Ideális és ellenséges macska - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Következtetés + +A transzfer tanulás segítségével gyorsan összeállíthat egy osztályozót egy egyedi objektum osztályozási feladathoz, és magas pontosságot érhet el. Látható, hogy az összetettebb feladatok, amelyeket most megoldunk, nagyobb számítási teljesítményt igényelnek, és nem oldhatók meg könnyen CPU-n. A következő egységben megpróbálunk egy könnyebb implementációt használni ugyanazon modell tanítására alacsonyabb számítási erőforrásokkal, ami csak kissé alacsonyabb pontosságot eredményez. + +## 🚀 Kihívás + +A kísérő notebookokban vannak megjegyzések az alján arról, hogy a transzfer tudás legjobban hasonló tanítási adatokkal működik (például egy új állatfajta). Kísérletezzen teljesen új típusú képekkel, hogy lássa, mennyire jól vagy rosszul teljesítenek a transzfer tudás modellek. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Áttekintés és önálló tanulás + +Olvassa el a [TrainingTricks.md](TrainingTricks.md) fájlt, hogy elmélyítse tudását a modellek tanításának egyéb módjairól. + +## [Feladat](lab/README.md) + +Ebben a laborban a valós életből vett [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) háziállatok adathalmazt fogjuk használni, amely 35 macska- és kutyafajtát tartalmaz, és egy transzfer tanulási osztályozót fogunk építeni. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..aad7e7db --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Mélytanulási Trükkök + +Ahogy a neurális hálók egyre mélyebbé válnak, az edzésük folyamata egyre nehezebbé válik. Az egyik fő probléma az úgynevezett [eltűnő gradiens](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) vagy [robbanó gradiens](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Ez a bejegyzés](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) jó bevezetést nyújt ezekhez a problémákhoz. + +A mély hálók edzésének hatékonyabbá tétele érdekében néhány technikát alkalmazhatunk. + +## Értékek ésszerű tartományban tartása + +A numerikus számítások stabilabbá tétele érdekében biztosítani szeretnénk, hogy a neurális hálón belüli összes érték ésszerű skálán belül legyen, általában [-1..1] vagy [0..1]. Ez nem egy nagyon szigorú követelmény, de a lebegőpontos számítások természete olyan, hogy különböző nagyságrendű értékeket nem lehet pontosan együtt kezelni. Például, ha összeadjuk 10-10-et és 1010-et, valószínűleg 1010-et kapunk, mert a kisebb érték "átalakul" a nagyobb nagyságrendjére, és így a mantissza elveszik. + +A legtöbb aktivációs függvény nemlinearitása [-1..1] körül van, ezért érdemes az összes bemeneti adatot [-1..1] vagy [0..1] tartományra skálázni. + +## Kezdeti Súlyok Inicializálása + +Ideális esetben azt szeretnénk, hogy az értékek ugyanabban a tartományban maradjanak, miután áthaladnak a háló rétegein. Ezért fontos a súlyokat úgy inicializálni, hogy megőrizzék az értékek eloszlását. + +A normál eloszlás **N(0,1)** nem jó ötlet, mert ha *n* bemenetünk van, a kimenet szórása *n* lesz, és az értékek valószínűleg kiesnek a [0..1] tartományból. + +Gyakran használt inicializálások: + + * Egyenletes eloszlás -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garantálja, hogy nullás középértékű és 1-es szórású bemenetek esetén ugyanaz a középérték/szórás maradjon + * **N(0,√2/(n_in+n_out))** -- az úgynevezett **Xavier inicializálás** (`glorot`), amely segít az értékeket tartományban tartani mind előre-, mind visszafelé terjedés során + +## Batch Normalizáció + +Még megfelelő súlyinicializálás mellett is előfordulhat, hogy az edzés során a súlyok túl nagyok vagy túl kicsik lesznek, és ezáltal az értékek kikerülnek a megfelelő tartományból. Az értékeket vissza lehet hozni a megfelelő tartományba **normalizációs** technikák alkalmazásával. Bár több ilyen technika létezik (Súly normalizáció, Réteg normalizáció), a leggyakrabban használt a Batch Normalizáció. + +A **batch normalizáció** ötlete az, hogy figyelembe vesszük az összes értéket a minibatch-ben, és normalizálást végzünk (azaz kivonjuk az átlagot és osztjuk a szórással) ezek alapján. Ez egy hálórétegként van implementálva, amely ezt a normalizálást végzi a súlyok alkalmazása után, de az aktivációs függvény előtt. Ennek eredményeként valószínűleg magasabb végső pontosságot és gyorsabb edzést érhetünk el. + +Itt található az [eredeti tanulmány](https://arxiv.org/pdf/1502.03167.pdf) a batch normalizációról, a [magyarázat a Wikipédián](https://en.wikipedia.org/wiki/Batch_normalization), és [egy jó bevezető blogbejegyzés](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (valamint egy [orosz nyelvű](https://habrahabr.ru/post/309302/)). + +## Dropout + +A **Dropout** egy érdekes technika, amely az edzés során véletlenszerűen eltávolítja a neuronok bizonyos százalékát. Ez egy rétegként van implementálva, amelynek egy paramétere van (az eltávolítandó neuronok százaléka, általában 10%-50%), és az edzés során véletlenszerűen nullázza a bemeneti vektor elemeit, mielőtt továbbadná a következő rétegnek. + +Bár ez furcsának tűnhet, a dropout hatását láthatjuk az MNIST számjegyosztályozó edzésén a [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) jegyzetfüzetben. Gyorsítja az edzést, és lehetővé teszi, hogy kevesebb edzési epoch alatt magasabb pontosságot érjünk el. + +Ez a hatás többféleképpen magyarázható: + + * Tekinthetjük úgy, mint egy véletlenszerű sokkoló tényezőt a modell számára, amely kimozdítja az optimalizációt a lokális minimumból + * Tekinthetjük úgy, mint *implicit modellátlagolást*, mert mondhatjuk, hogy a dropout során kissé eltérő modellt edzünk + +> *Egyesek azt mondják, hogy amikor egy részeg ember próbál valamit megtanulni, másnap reggel jobban emlékszik rá, mint egy józan ember, mert az agy, amelyben néhány neuron nem működik megfelelően, jobban alkalmazkodik a jelentés megragadásához. Mi soha nem teszteltük, hogy ez igaz-e vagy sem.* + +## Túltanulás Megelőzése + +A mélytanulás egyik nagyon fontos aspektusa, hogy képesek legyünk megelőzni a [túltanulást](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Bár csábító lehet nagyon erős neurális háló modellt használni, mindig egyensúlyban kell tartanunk a modell paramétereinek számát a tanító minták számával. + +> Győződj meg róla, hogy megérted a [túltanulás](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) fogalmát, amelyet korábban bemutattunk! + +Több módszer létezik a túltanulás megelőzésére: + + * Korai leállítás -- folyamatosan figyeljük a validációs halmaz hibáját, és leállítjuk az edzést, amikor a validációs hiba növekedni kezd. + * Explicit Súlycsökkenés / Regularizáció -- extra büntetést adunk a veszteségfüggvényhez a súlyok magas abszolút értékeiért, ami megakadályozza, hogy a modell nagyon instabil eredményeket adjon + * Modellátlagolás -- több modellt edzünk, majd átlagoljuk az eredményt. Ez segít minimalizálni a varianciát. + * Dropout (Implicit Modellátlagolás) + +## Optimalizálók / Edzési Algoritmusok + +Az edzés másik fontos aspektusa a megfelelő edzési algoritmus kiválasztása. Bár a klasszikus **gradiens csökkenés** ésszerű választás, néha túl lassú lehet, vagy más problémákhoz vezethet. + +A mélytanulásban **Stochasztikus Gradiens Csökkenést** (SGD) használunk, amely a gradiens csökkenést alkalmazza a tanító halmazból véletlenszerűen kiválasztott minibatch-ekre. A súlyokat az alábbi képlet szerint állítjuk be: + +wt+1 = wt - η∇ℒ + +### Momentum + +A **momentum SGD**-ben megtartunk egy részt az előző lépések gradienséből. Ez hasonló ahhoz, amikor valahová tehetetlenséggel mozgunk, és kapunk egy ütést egy másik irányba, a pályánk nem változik meg azonnal, hanem megtartja az eredeti mozgás egy részét. Itt bevezetünk egy másik vektort, v-t, amely a *sebességet* képviseli: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Itt a γ paraméter jelzi, hogy mennyire vesszük figyelembe a tehetetlenséget: γ=0 megfelel a klasszikus SGD-nek; γ=1 egy tiszta mozgásegyenlet. + +### Adam, Adagrad, stb. + +Mivel minden rétegben szignálokat szorzunk egy Wi mátrixszal, a ||Wi|| függvényében a gradiens vagy csökkenhet és közel 0 lehet, vagy végtelenül növekedhet. Ez a Robbanó/Eltűnő Gradiens probléma lényege. + +Az egyik megoldás erre a problémára az, hogy csak a gradiens irányát használjuk az egyenletben, és figyelmen kívül hagyjuk az abszolút értéket, azaz: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), ahol ||∇ℒ|| = √∑(∇ℒ)2 + +Ezt az algoritmust **Adagrad**-nak hívják. Más algoritmusok, amelyek ugyanazt az ötletet használják: **RMSProp**, **Adam** + +> **Adam**-ot sok alkalmazásban nagyon hatékony algoritmusnak tartják, így ha nem vagy biztos benne, melyiket használd - válaszd az Adam-et. + +### Gradiens vágás + +A gradiens vágás az előző ötlet kiterjesztése. Amikor ||∇ℒ|| ≤ θ, az eredeti gradiens-t vesszük figyelembe a súlyoptimalizálásban, és amikor ||∇ℒ|| > θ - osztjuk a gradiens-t a normájával. Itt θ egy paraméter, a legtöbb esetben θ=1 vagy θ=10 értéket vehetünk. + +### Tanulási ráta csökkentése + +Az edzés sikere gyakran a tanulási ráta paraméter η-tól függ. Logikus feltételezni, hogy a nagyobb η értékek gyorsabb edzést eredményeznek, amit általában az edzés elején szeretnénk, majd kisebb η értékek lehetővé teszik a háló finomhangolását. Ezért a legtöbb esetben szeretnénk csökkenteni η-t az edzés folyamata során. + +Ez úgy történhet, hogy η-t megszorozzuk egy számmal (pl. 0.98) minden edzési epoch után, vagy bonyolultabb **tanulási ráta ütemezést** használunk. + +## Különböző Hálózati Architektúrák + +A megfelelő hálózati architektúra kiválasztása a problémádhoz trükkös lehet. Általában olyan architektúrát választunk, amely bizonyítottan működik a konkrét feladatunkhoz (vagy hasonlóhoz). Itt van egy [jó áttekintés](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) a számítógépes látás neurális hálózati architektúráiról. + +> Fontos olyan architektúrát választani, amely elég erős lesz a rendelkezésre álló tanító minták számához. Túl erős modell kiválasztása [túltanuláshoz](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) vezethet. + +Egy másik jó megoldás olyan architektúra használata, amely automatikusan alkalmazkodik a szükséges komplexitáshoz. Bizonyos mértékig a **ResNet** architektúra és az **Inception** önállóan alkalmazkodó. [További információ a számítógépes látás architektúrákról](../07-ConvNets/CNN_Architectures.md). + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..8d13b51e --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Az Oxford Pets osztályozása transzfer tanulással + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +Képzeld el, hogy egy alkalmazást kell fejlesztened egy kisállat-nevelő számára, amely az összes kisállatot katalogizálja. Egy ilyen alkalmazás nagyszerű funkciója lenne, ha egy fénykép alapján automatikusan felismerné a fajtát. Ebben a feladatban transzfer tanulást fogunk használni, hogy az [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) kisállat-adatkészlet valódi képeit osztályozzuk. + +## Az adatkészlet + +Az eredeti [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) kisállat-adatkészletet fogjuk használni, amely 35 különböző kutya- és macskafajtát tartalmaz. + +Az adatkészlet letöltéséhez használd az alábbi kódrészletet: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Induló notebook + +Kezdd a labort az [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) megnyitásával. + +## Tanulság + +A transzfer tanulás és az előre betanított hálózatok lehetővé teszik, hogy viszonylag könnyen megoldjunk valós képosztályozási problémákat. Azonban az előre betanított hálózatok jól működnek hasonló típusú képeken, és ha nagyon eltérő képeket kezdünk osztályozni (pl. orvosi képek), akkor valószínűleg sokkal rosszabb eredményeket kapunk. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/hu/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..f48070b0 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoenkóderek + +Amikor CNN-eket tanítunk, az egyik probléma az, hogy sok címkézett adatra van szükségünk. Képklasszifikáció esetén például manuálisan kell az egyes képeket különböző osztályokba sorolni. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Azonban előfordulhat, hogy nyers (címkézetlen) adatokat szeretnénk használni a CNN jellemzők kinyerésére, amit **önfelügyelt tanulásnak** nevezünk. Címkék helyett a tanítóképeket használjuk hálózati bemenetként és kimenetként is. Az **autoenkóder** fő ötlete az, hogy lesz egy **enkóder hálózat**, amely a bemeneti képet valamilyen **rejtett térbe** alakítja (általában egy kisebb méretű vektor), majd egy **dekóder hálózat**, amelynek célja az eredeti kép rekonstruálása. + +> ✅ Az [autoenkóder](https://wikipedia.org/wiki/Autoencoder) "egy mesterséges neurális hálózat típusa, amelyet címkézetlen adatok hatékony kódolásának megtanulására használnak." + +Mivel az autoenkódert arra tanítjuk, hogy az eredeti képből minél több információt megragadjon a pontos rekonstrukció érdekében, a hálózat megpróbálja megtalálni a bemeneti képek legjobb **beágyazását**, hogy megragadja azok jelentését. + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.hu.jpg) + +> Kép a [Keras blogból](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Autoenkóderek használati forgatókönyvei + +Bár az eredeti képek rekonstruálása önmagában nem tűnik hasznosnak, van néhány forgatókönyv, ahol az autoenkóderek különösen hasznosak: + +* **Képek dimenziójának csökkentése vizualizációhoz** vagy **képbeágyazások tanítása**. Az autoenkóderek általában jobb eredményeket adnak, mint a PCA, mivel figyelembe veszik a képek térbeli jellegét és hierarchikus jellemzőit. +* **Zajcsökkentés**, azaz zaj eltávolítása a képről. Mivel a zaj sok haszontalan információt hordoz, az autoenkóder nem tudja mindet beilleszteni a viszonylag kis rejtett térbe, így csak a kép fontos részét ragadja meg. Zajcsökkentők tanításakor az eredeti képekkel kezdünk, és mesterségesen zajt adunk hozzájuk, amelyeket az autoenkóder bemeneteként használunk. +* **Szuperfelbontás**, a kép felbontásának növelése. Magas felbontású képekkel kezdünk, és az alacsonyabb felbontású képet használjuk az autoenkóder bemeneteként. +* **Generatív modellek**. Miután az autoenkódert betanítottuk, a dekóder részt felhasználhatjuk új objektumok létrehozására véletlenszerű rejtett vektorokból kiindulva. + +## Variációs Autoenkóderek (VAE) + +A hagyományos autoenkóderek valamilyen módon csökkentik a bemeneti adatok dimenzióját, és megpróbálják azonosítani a bemeneti képek fontos jellemzőit. Azonban a rejtett vektorok gyakran nem értelmezhetők. Más szóval, ha például az MNIST adathalmazt vesszük, nem könnyű meghatározni, hogy mely számjegyek felelnek meg a különböző rejtett vektoroknak, mivel a közeli rejtett vektorok nem feltétlenül ugyanazokat a számjegyeket jelentik. + +Ezzel szemben generatív modellek tanításához jobb, ha van némi megértésünk a rejtett térről. Ez az ötlet vezet el minket a **variációs autoenkóderhez** (VAE). + +A VAE egy olyan autoenkóder, amely megtanulja előre jelezni a rejtett paraméterek *statisztikai eloszlását*, az úgynevezett **rejtett eloszlást**. Például azt szeretnénk, hogy a rejtett vektorok normálisan legyenek elosztva egy zmean átlaggal és zsigma szórással (mind az átlag, mind a szórás egy d dimenziós vektor). A VAE enkóder megtanulja ezeket a paramétereket előre jelezni, majd a dekóder véletlenszerű vektort vesz ebből az eloszlásból, hogy rekonstruálja az objektumot. + +Összefoglalva: + + * A bemeneti vektorból előre jelezzük `z_mean` és `z_log_sigma` értékeket (a szórás helyett annak logaritmusát jelezzük előre) + * Mintát veszünk egy `sample` vektorból az N(zmean,exp(zlog\_sigma)) eloszlásból + * A dekóder megpróbálja dekódolni az eredeti képet a `sample` vektort bemenetként használva + + + +> Kép [Isaak Dykeman blogbejegyzéséből](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +A variációs autoenkóderek egy összetett veszteségfüggvényt használnak, amely két részből áll: + +* **Rekonstrukciós veszteség**, amely azt mutatja, hogy a rekonstruált kép mennyire közel áll a célhoz (ez lehet például a Mean Squared Error, vagy MSE). Ez ugyanaz a veszteségfüggvény, mint a normál autoenkódereknél. +* **KL veszteség**, amely biztosítja, hogy a rejtett változó eloszlása közel maradjon a normál eloszláshoz. Ez a [Kullback-Leibler divergencia](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) fogalmán alapul - egy metrika, amely két statisztikai eloszlás hasonlóságát méri. + +A VAE-k egyik fontos előnye, hogy viszonylag könnyen lehet új képeket generálni, mivel tudjuk, mely eloszlásból kell mintát venni a rejtett vektorokhoz. Például, ha egy VAE-t tanítunk 2D rejtett vektorral az MNIST adathalmazon, akkor a rejtett vektor komponenseit változtatva különböző számjegyeket kapunk: + +vaemnist + +> Kép [Dmitry Soshnikov](http://soshnikov.com) által + +Figyeljük meg, hogyan olvadnak össze a képek, ahogy a rejtett paramétertér különböző részeiből kezdünk mintát venni. Ezt a teret 2D-ben is vizualizálhatjuk: + +vaemnist cluster + +> Kép [Dmitry Soshnikov](http://soshnikov.com) által + +## ✍️ Gyakorlatok: Autoenkóderek + +További információ az autoenkóderekről az alábbi jegyzetekben található: + +* [Autoenkóderek TensorFlow-ban](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoenkóderek PyTorch-ban](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Az autoenkóderek tulajdonságai + +* **Adatspecifikus** - csak azon képtípusokkal működnek jól, amelyeken tanították őket. Például, ha egy szuperfelbontású hálózatot virágokon tanítunk, az nem fog jól működni portrékon. Ennek oka, hogy a hálózat a magasabb felbontású képet úgy állítja elő, hogy finom részleteket vesz a tanító adathalmazból tanult jellemzőkből. +* **Veszteséges** - a rekonstruált kép nem ugyanaz, mint az eredeti kép. A veszteség jellege a tanítás során használt *veszteségfüggvénytől* függ. +* **Címkézetlen adatokkal működik** + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Összegzés + +Ebben a leckében megismerkedtél az autoenkóderek különböző típusaival, amelyeket az AI kutatók használhatnak. Megtanultad, hogyan építsd fel őket, és hogyan használd őket képek rekonstruálására. Emellett megismerkedtél a VAE-vel és azzal, hogyan lehet új képeket generálni vele. + +## 🚀 Kihívás + +Ebben a leckében megtanultad, hogyan használhatók az autoenkóderek képekhez. De zenéhez is használhatók! Nézd meg a Magenta projekt [MusicVAE](https://magenta.tensorflow.org/music-vae) projektjét, amely autoenkódereket használ a zene rekonstruálásának megtanulására. Végezzen néhány [kísérletet](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) ezzel a könyvtárral, hogy lássa, mit tud létrehozni. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Áttekintés és önálló tanulás + +További információ az autoenkóderekről az alábbi forrásokban található: + +* [Autoenkóderek építése Keras-ban](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blogbejegyzés a NeuroHive-on](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variációs autoenkóderek magyarázata](https://kvfrans.com/variational-autoencoders-explained/) +* [Feltételes variációs autoenkóderek](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Feladat + +A [TensorFlow jegyzet](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) végén található egy "feladat" - ezt használd házi feladatként. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/10-GANs/README.md b/translations/hu/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..fe75ca25 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generatív Adverzális Hálózatok + +Az előző részben megismerkedtünk a **generatív modellekkel**: olyan modellekkel, amelyek képesek új képeket generálni, amelyek hasonlóak a tanító adathalmazban lévőkhöz. A VAE egy jó példa volt a generatív modellre. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Azonban, ha valami igazán jelentős dolgot szeretnénk generálni, például egy festményt megfelelő felbontásban, a VAE-vel azt tapasztaljuk, hogy a tanítás nem konvergál jól. Ehhez az esethez meg kell ismerkednünk egy másik architektúrával, amelyet kifejezetten generatív modellekhez terveztek - **Generatív Adverzális Hálózatokkal**, vagy GAN-ekkel. + +A GAN fő ötlete, hogy két neurális hálózatot tanítunk egymás ellen: + + + +> Kép: [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Egy kis szószedet: +> * **Generátor**: egy hálózat, amely egy véletlenszerű vektort vesz, és eredményként képet állít elő. +> * **Diszkriminátor**: egy hálózat, amely egy képet vesz, és meg kell mondania, hogy az valódi kép-e (a tanító adathalmazból), vagy a generátor által generált. Lényegében egy képosztályozó. + +### Diszkriminátor + +A diszkriminátor architektúrája nem különbözik egy szokványos képosztályozó hálózattól. A legegyszerűbb esetben lehet egy teljesen összekapcsolt osztályozó, de valószínűleg egy [konvolúciós hálózat](../07-ConvNets/README.md) lesz. + +> ✅ A konvolúciós hálózatokon alapuló GAN-t [DCGAN](https://arxiv.org/pdf/1511.06434.pdf)-nek hívják. + +Egy CNN diszkriminátor a következő rétegekből áll: több konvolúció+pooling (csökkenő térbeli mérettel), és egy vagy több teljesen összekapcsolt réteg, hogy "jellemző vektort" kapjunk, végül egy bináris osztályozó. + +> ✅ A 'pooling' ebben az összefüggésben egy olyan technika, amely csökkenti a kép méretét. "A pooling rétegek csökkentik az adatok dimenzióit azáltal, hogy az egyik réteg neuroncsoportjainak kimeneteit egyetlen neuronba kombinálják a következő rétegben." - [forrás](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generátor + +A generátor valamivel bonyolultabb. Úgy tekinthetjük, mint egy fordított diszkriminátort. Egy látens vektorból kiindulva (a jellemző vektor helyett) van egy teljesen összekapcsolt rétege, amely átalakítja a szükséges méretre/alakra, majd dekonvolúció+felbontásnövelés következik. Ez hasonló az [autoencoder](../09-Autoencoders/README.md) *dekóder* részéhez. + +> ✅ Mivel a konvolúciós réteg lineáris szűrőként működik, amely végigmegy a képen, a dekonvolúció lényegében hasonló a konvolúcióhoz, és ugyanazzal a réteglogikával megvalósítható. + + + +> Kép: [Dmitry Soshnikov](http://soshnikov.com) + +### A GAN tanítása + +A GAN-eket **adverzálisnak** nevezik, mert folyamatos verseny zajlik a generátor és a diszkriminátor között. E verseny során mind a generátor, mind a diszkriminátor javul, így a hálózat egyre jobb képek előállítását tanulja meg. + +A tanítás két szakaszban történik: + +* **A diszkriminátor tanítása**. Ez a feladat viszonylag egyszerű: generálunk egy képcsomagot a generátorral, 0-val címkézve őket, ami hamis képet jelent, és veszünk egy képcsomagot a bemeneti adathalmazból (1-es címkével, valódi kép). Kapunk egy *diszkriminátor veszteséget*, és végrehajtjuk a backpropot. +* **A generátor tanítása**. Ez valamivel bonyolultabb, mert nem ismerjük közvetlenül a generátor várt kimenetét. Az egész GAN hálózatot, amely generátorból és diszkriminátorból áll, véletlenszerű vektorokkal tápláljuk, és azt várjuk, hogy az eredmény 1 legyen (ami valódi képeket jelent). Ekkor befagyasztjuk a diszkriminátor paramétereit (nem akarjuk, hogy ebben a lépésben tanuljon), és végrehajtjuk a backpropot. + +E folyamat során a generátor és a diszkriminátor veszteségei nem csökkennek jelentősen. Ideális esetben oszcillálniuk kellene, ami azt jelzi, hogy mindkét hálózat javítja teljesítményét. + +## ✍️ Feladatok: GAN-ek + +* [GAN Notebook TensorFlow/Keras-ban](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook PyTorch-ban](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problémák a GAN-ek tanításával + +A GAN-ekről köztudott, hogy különösen nehéz őket tanítani. Íme néhány probléma: + +* **Módusösszeomlás**. Ez azt jelenti, hogy a generátor megtanul egy sikeres képet előállítani, amely becsapja a diszkriminátort, de nem képes különféle képeket generálni. +* **Érzékenység a hiperparaméterekre**. Gyakran előfordulhat, hogy egy GAN egyáltalán nem konvergál, majd hirtelen a tanulási ráta csökkenése konvergenciát eredményez. +* **Egyensúly fenntartása** a generátor és a diszkriminátor között. Sok esetben a diszkriminátor vesztesége viszonylag gyorsan nullára csökkenhet, ami azt eredményezi, hogy a generátor nem képes tovább tanulni. Ennek leküzdésére megpróbálhatunk különböző tanulási rátákat beállítani a generátor és a diszkriminátor számára, vagy kihagyhatjuk a diszkriminátor tanítását, ha a veszteség már túl alacsony. +* **Magas felbontású tanítás**. Ugyanaz a probléma, mint az autoencodereknél, ez a probléma akkor jelentkezik, amikor túl sok konvolúciós hálózati réteget kell rekonstruálni, ami artefaktumokat eredményez. Ezt a problémát általában úgy oldják meg, hogy úgynevezett **progresszív növekedést** alkalmaznak, amikor először néhány réteget alacsony felbontású képeken tanítanak, majd a rétegeket "feloldják" vagy hozzáadják. Egy másik megoldás az lenne, hogy extra kapcsolatokat adunk a rétegek között, és egyszerre több felbontást tanítunk - részletekért lásd ezt a [Multi-Scale Gradient GANs tanulmányt](https://arxiv.org/abs/1903.06048). + +## Stílusátvitel + +A GAN-ek nagyszerű módot kínálnak művészi képek generálására. Egy másik érdekes technika az úgynevezett **stílusátvitel**, amely egy **tartalomképet** vesz, és egy másik stílusban újrarajzolja, szűrőket alkalmazva egy **stílusképből**. + +A működése a következő: +* Véletlenszerű zajképpel kezdünk (vagy egy tartalomképpel, de a megértés kedvéért egyszerűbb zajképpel kezdeni) +* Célunk egy olyan kép létrehozása, amely közel áll mind a tartalomképhez, mind a stílusképhez. Ezt két veszteségfüggvény határozza meg: + - **Tartalomveszteség**, amelyet a CNN által bizonyos rétegeken kinyert jellemzők alapján számítunk ki az aktuális kép és a tartalomkép között + - **Stílusveszteség**, amelyet az aktuális kép és a stíluskép között számítunk ki egy okos módszerrel Gram-mátrixok segítségével (további részletek az [példa notebookban](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) +* A kép simábbá tétele és a zaj eltávolítása érdekében bevezetjük a **Variációs veszteséget**, amely a szomszédos pixelek közötti átlagos távolságot számítja ki +* A fő optimalizációs ciklus az aktuális képet gradient descent (vagy más optimalizációs algoritmus) segítségével módosítja, hogy minimalizálja a teljes veszteséget, amely az összes veszteség súlyozott összege. + +## ✍️ Példa: [Stílusátvitel](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Összegzés + +Ebben a leckében megismerkedtél a GAN-ekkel és azok tanításával. Megtanultad azokat a különleges kihívásokat is, amelyekkel ez a neurális hálózat típus szembesülhet, valamint néhány stratégiát, hogyan lehet ezeket leküzdeni. + +## 🚀 Kihívás + +Futtasd végig a [Stílusátvitel notebookot](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) saját képeiddel. + +## Áttekintés és önálló tanulás + +További információért olvass többet a GAN-ekről az alábbi forrásokban: + +* Marco Pasini, [10 tanulság, amit egy év alatt GAN-ek tanításából tanultam](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), egy *de facto* GAN architektúra, amit érdemes megfontolni +* [Generatív művészet létrehozása GAN-ekkel az Azure ML-en](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Feladat + +Nézd át a leckéhez kapcsolódó két notebook egyikét, és tanítsd újra a GAN-t saját képeiden. Mit tudsz létrehozni? + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..aaf91d14 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Objektumfelismerés + +Az eddig tárgyalt képosztályozási modellek egy képet vettek alapul, és egy kategóriát eredményeztek, például az 'szám' osztályt egy MNIST problémában. Azonban sok esetben nem elég tudni, hogy egy kép tárgyakat ábrázol - szeretnénk meghatározni azok pontos helyét is. Ez az **objektumfelismerés** lényege. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Objektumfelismerés](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.hu.png) + +> Kép a [YOLO v2 weboldaláról](https://pjreddie.com/darknet/yolov2/) + +## Egy naiv megközelítés az objektumfelismeréshez + +Tegyük fel, hogy egy képen szeretnénk megtalálni egy macskát. Egy nagyon egyszerű megközelítés az alábbi lenne: + +1. A képet felosztjuk több csempére. +2. Képosztályozást futtatunk minden csempén. +3. Azok a csempék, amelyeknél elég magas aktivációt kapunk, tartalmazhatják a keresett objektumot. + +![Naiv objektumfelismerés](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.hu.png) + +> *Kép az [Exercise Notebook](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) fájlból* + +Ez a megközelítés azonban messze nem ideális, mivel az algoritmus csak nagyon pontatlanul tudja meghatározni az objektum határoló dobozát. A pontosabb helymeghatározáshoz valamilyen **regressziót** kell futtatnunk a határoló doboz koordinátáinak előrejelzésére - ehhez pedig speciális adatállományokra van szükség. + +## Regresszió az objektumfelismeréshez + +[Ez a blogbejegyzés](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) remek bevezetőt nyújt az alakzatok felismeréséhez. + +## Adatállományok objektumfelismeréshez + +Az alábbi adatállományokkal találkozhatsz ebben a feladatban: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 osztály +* [COCO](http://cocodataset.org/#home) - Közönséges tárgyak kontextusban. 80 osztály, határoló dobozok és szegmentációs maszkok + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.hu.jpg) + +## Objektumfelismerési metrikák + +### Metszet az unió felett + +Míg a képosztályozásnál könnyű mérni az algoritmus teljesítményét, az objektumfelismerésnél nemcsak az osztály helyességét kell mérni, hanem a határoló doboz helyének pontosságát is. Ehhez az úgynevezett **Metszet az unió felett** (IoU) metrikát használjuk, amely azt méri, hogy két doboz (vagy két tetszőleges terület) mennyire fedik egymást. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.hu.png) + +> *2. ábra [ebből a kiváló blogbejegyzésből az IoU-ról](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Az ötlet egyszerű - a két alakzat metszetének területét elosztjuk az uniójuk területével. Két azonos terület esetén az IoU értéke 1, míg teljesen különálló területeknél 0. Egyébként 0 és 1 között változik. Általában csak azokat a határoló dobozokat vesszük figyelembe, amelyek IoU értéke egy bizonyos érték felett van. + +### Átlagos pontosság + +Tegyük fel, hogy egy adott $C$ osztályú objektum felismerésének hatékonyságát szeretnénk mérni. Ehhez az **Átlagos Pontosság** metrikát használjuk, amelyet az alábbiak szerint számítunk ki: + +1. Vegyük a Pontosság-Visszahívás görbét, amely az érzékenységet mutatja a detektálási küszöbérték függvényében (0-tól 1-ig). +2. A küszöbértéktől függően több vagy kevesebb objektumot detektálunk a képen, és különböző pontosság- és visszahívásértékeket kapunk. +3. A görbe így néz ki: + + + +> *Kép a [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) oldalról* + +Az adott $C$ osztály átlagos pontossága a görbe alatti terület. Pontosabban, a Visszahívás tengelyt általában 10 részre osztjuk, és a Pontosságot átlagoljuk ezeken a pontokon: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP és IoU + +Csak azokat a detektálásokat vesszük figyelembe, amelyek IoU értéke egy bizonyos küszöbérték felett van. Például a PASCAL VOC adatállományban általában $\mbox{IoU Threshold} = 0.5$ értéket feltételezünk, míg a COCO esetében az AP-t különböző $\mbox{IoU Threshold}$ értékekre mérjük. + + + +> *Kép a [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) oldalról* + +### Átlagos Pontosság - mAP + +Az objektumfelismerés fő metrikája az **Átlagos Pontosság**, vagy **mAP**. Ez az Átlagos Pontosság értéke, amelyet az összes objektumosztályra átlagolunk, és néha az $\mbox{IoU Threshold}$ értékekre is. Az **mAP** számításának részleteit +[ebben a blogbejegyzésben](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), valamint [itt kóddal](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) találod. + +## Különböző objektumfelismerési megközelítések + +Az objektumfelismerési algoritmusoknak két fő típusa van: + +* **Régiójavasló hálózatok** (R-CNN, Fast R-CNN, Faster R-CNN). Az alapötlet az, hogy **érdeklődési régiókat** (ROI) generálunk, és CNN-t futtatunk rajtuk, keresve a maximális aktivációt. Ez kissé hasonlít a naiv megközelítéshez, azzal a különbséggel, hogy az ROI-kat okosabb módon generáljuk. Az egyik fő hátránya ezeknek a módszereknek, hogy lassúak, mivel sok CNN osztályozót kell futtatni a képen. +* **Egyszeri futtatású** (YOLO, SSD, RetinaNet) módszerek. Ezekben az architektúrákban a hálózatot úgy tervezzük, hogy egyszerre előrejelezze az osztályokat és az ROI-kat. + +### R-CNN: Régióalapú CNN + +Az [R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) [Szelektív Keresést](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) használ az ROI régiók hierarchikus struktúrájának generálására, amelyeket ezután CNN jellemzőkivonók és SVM-osztályozók dolgoznak fel az objektumosztály meghatározására, valamint lineáris regresszióval a *határoló doboz* koordinátáinak meghatározására. [Hivatalos tanulmány](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.hu.png) + +> *Kép van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.hu.png) + +> *Képek [ebből a blogból](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN - Gyors R-CNN + +Ez a megközelítés hasonló az R-CNN-hez, de a régiókat a konvolúciós rétegek alkalmazása után határozzák meg. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.hu.png) + +> Kép a [hivatalos tanulmányból](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 + +### Gyorsabb R-CNN + +Ennek a megközelítésnek az alapötlete, hogy neurális hálózatot használunk az ROI-k előrejelzésére - az úgynevezett *Régiójavasló Hálózat*. [Tanulmány](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.hu.png) + +> Kép a [hivatalos tanulmányból](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Régióalapú Teljesen Konvolúciós Hálózat + +Ez az algoritmus még gyorsabb, mint a Gyorsabb R-CNN. Az alapötlet a következő: + +1. Jellemzőket vonunk ki ResNet-101 segítségével. +2. A jellemzőket **Pozícióérzékeny Pontszám Térképek** dolgozzák fel. Minden objektumot $C$ osztályból $k\times k$ régiókra osztunk, és az objektumok részeinek előrejelzésére tanítjuk a hálózatot. +3. Minden részre a $k\times k$ régiókból a hálózatok szavaznak az objektumosztályokra, és a maximális szavazatot kapó osztályt választjuk. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.hu.png) + +> Kép a [hivatalos tanulmányból](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +A YOLO egy valós idejű egyszeri futtatású algoritmus. Az alapötlet a következő: + + * A képet $S\times S$ régiókra osztjuk. + * Minden régióra **CNN** előrejelzi $n$ lehetséges objektumot, *határoló doboz* koordinátákat és *bizalom*=*valószínűség* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.hu.png) + +> Kép a [hivatalos tanulmányból](https://arxiv.org/abs/1506.02640) + +### Egyéb algoritmusok + +* RetinaNet: [hivatalos tanulmány](https://arxiv.org/abs/1708.02002) + - [PyTorch Implementáció Torchvisionben](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras Implementáció](https://github.com/fizyr/keras-retinanet) + - [Objektumfelismerés RetinaNet segítségével](https://keras.io/examples/vision/retinanet/) Keras példákban +* SSD (Single Shot Detector): [hivatalos tanulmány](https://arxiv.org/abs/1512.02325) + +## ✍️ Gyakorlatok: Objektumfelismerés + +Folytasd a tanulást az alábbi jegyzetfüzetben: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Összegzés + +Ebben a leckében gyors áttekintést kaptál az objektumfelismerés különböző megközelítéseiről! + +## 🚀 Kihívás + +Olvasd el ezeket a cikkeket és jegyzetfüzeteket a YOLO-ról, és próbáld ki őket magad: + +* [Jó blogbejegyzés](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) a YOLO-ról + * [Hivatalos oldal](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras implementáció](https://github.com/experiencor/keras-yolo2), [lépésről lépésre jegyzetfüzet](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras implementáció](https://github.com/experiencor/keras-yolo2), [lépésről lépésre jegyzetfüzet](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Áttekintés és önálló tanulás + +* [Objektumfelismerés](https://tjmachinelearning.com/lectures/1718/obj/) Nikhil Sardana által +* [Jó összehasonlítás az objektumfelismerési algoritmusokról](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Áttekintés a mély tanulási algoritmusokról objektumfelismeréshez](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Lépésről lépésre bevezetés az alapvető objektumfelismerési algoritmusokba](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Gyorsabb R-CNN implementáció Pythonban objektumfelismeréshez](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Feladat: Objektumfelismerés](lab/README.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..f15ac50a --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Fejdetektálás a Hollywood Heads Dataset segítségével + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +Az emberek számának megszámlálása egy videómegfigyelő kamera képén fontos feladat, amely lehetővé teszi például a boltok látogatószámának becslését vagy az éttermek forgalmas időszakainak meghatározását. Ennek a feladatnak a megoldásához képesnek kell lennünk különböző szögekből felismerni az emberi fejeket. Az objektumfelismerő modell betanításához, amely képes az emberi fejek detektálására, használhatjuk a [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) adathalmazt. + +## Az adathalmaz + +A [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) 369,846 emberi fejet tartalmaz, amelyek 224,740 hollywoodi filmkockán vannak megjelölve. Az adathalmaz a [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) formátumban érhető el, ahol minden képhez tartozik egy XML leíró fájl, amely így néz ki: + +```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 + + +``` + +Ebben az adathalmazban csak egyetlen objektumosztály létezik, a `head`, és minden fejhez megkapjuk a határoló doboz koordinátáit. Az XML fájlokat Python könyvtárakkal lehet feldolgozni, vagy használhatjuk [ezt a könyvtárat](https://pypi.org/project/pascal-voc/), amely közvetlenül a PASCAL VOC formátummal dolgozik. + +## Objektumfelismerés betanítása + +Az objektumfelismerő modell betanításához az alábbi módszerek egyikét használhatjuk: + +* Az [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) és annak Python API-jának használata, hogy programozottan betanítsuk a modellt a felhőben. A Custom Vision csak néhány száz képet tud használni a modell betanításához, így lehet, hogy korlátoznunk kell az adathalmaz méretét. +* A [Keras tutorial](https://keras.io/examples/vision/retinanet/) példájának használata a RetunaNet modell betanításához. +* A [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) beépített moduljának használata a torchvision könyvtárban. + +## Tanulság + +Az objektumfelismerés egy olyan feladat, amelyre gyakran szükség van az iparban. Bár léteznek szolgáltatások, amelyekkel objektumfelismerést végezhetünk (például az [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)), fontos megérteni, hogyan működik az objektumfelismerés, és képesnek lenni saját modellek betanítására. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/hu/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..c0159980 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Szegmentáció + +Korábban már tanultunk az objektumfelismerésről, amely lehetővé teszi számunkra, hogy az objektumokat az *határoló dobozok* előrejelzésével lokalizáljuk a képen. Azonban bizonyos feladatokhoz nemcsak határoló dobozokra van szükségünk, hanem pontosabb objektum lokalizációra is. Ezt a feladatot **szegmentációnak** nevezzük. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +A szegmentációt tekinthetjük **pixelek osztályozásának**, ahol a kép **minden egyes** pixeléről meg kell jósolnunk az osztályát (*háttér* is egy osztály). Két fő szegmentációs algoritmus létezik: + +* **Szemantikus szegmentáció** csak a pixel osztályát határozza meg, és nem különbözteti meg az ugyanazon osztályba tartozó különböző objektumokat. +* **Instance szegmentáció** az osztályokat különböző példányokra osztja. + +Például instance szegmentáció esetén ezek a juhok különböző objektumok, míg szemantikus szegmentáció esetén minden juh egy osztályba tartozik. + + + +> Kép ebből a [blogbejegyzésből](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Különböző neurális architektúrák léteznek a szegmentációhoz, de mindegyiknek ugyanaz a szerkezete. Bizonyos értelemben hasonlít az autoencoderhez, amelyről korábban tanultál, de az eredeti kép dekonstruálása helyett a célunk egy **maszk** dekonstruálása. Így egy szegmentációs hálózatnak a következő részei vannak: + +* **Encoder** kivonja a bemeneti képből a jellemzőket +* **Decoder** átalakítja ezeket a jellemzőket a **maszk képpé**, amelynek mérete és csatornaszáma megegyezik az osztályok számával. + + + +> Kép ebből a [publikációból](https://arxiv.org/pdf/2001.05566.pdf) + +Különösen meg kell említenünk a szegmentációhoz használt veszteségfüggvényt. Klasszikus autoencoderek használatakor meg kell mérnünk a hasonlóságot két kép között, és ehhez használhatjuk az átlagos négyzetes hibát (MSE). Szegmentáció esetén a cél maszk kép minden egyes pixele az osztály számát képviseli (egy-hot kódolva a harmadik dimenzió mentén), így olyan veszteségfüggvényeket kell használnunk, amelyek kifejezetten osztályozásra alkalmasak - keresztentrópia veszteség, amelyet az összes pixelre átlagolunk. Ha a maszk bináris, akkor **bináris keresztentrópia veszteséget** (BCE) használunk. + +> ✅ Az egy-hot kódolás egy olyan technika, amely egy osztály címkét egy olyan vektorrá alakít, amelynek hossza megegyezik az osztályok számával. Nézd meg [ezt a cikket](https://datagy.io/sklearn-one-hot-encode/) erről a technikáról. + +## Szegmentáció az orvosi képalkotásban + +Ebben a leckében a szegmentációt működés közben fogjuk látni, amikor a hálózatot arra tanítjuk, hogy felismerje az emberi anyajegyeket (más néven nevi) orvosi képeken. A képek forrásaként a PH2 Adatbázist fogjuk használni. Ez az adatbázis 200 képet tartalmaz három osztályból: tipikus nevus, atipikus nevus és melanoma. Minden képhez tartozik egy **maszk**, amely körvonalazza a nevust. + +> ✅ Ez a technika különösen alkalmas az ilyen típusú orvosi képalkotásra, de milyen más valós alkalmazásokat tudnál elképzelni? + +navi + +> Kép a PH2 Adatbázisból + +Egy modellt fogunk tanítani arra, hogy bármilyen nevust szegmentáljon a háttérből. + +## ✍️ Gyakorlatok: Szemantikus szegmentáció + +Nyisd meg az alábbi notebookokat, hogy többet megtudj a különböző szemantikus szegmentációs architektúrákról, gyakorold a velük való munkát, és lásd őket működés közben. + +* [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) + +## Összegzés + +A szegmentáció egy nagyon erőteljes technika a képosztályozásban, amely túlmutat a határoló dobozokon, és pixel szintű osztályozást tesz lehetővé. Ez a technika az orvosi képalkotásban és számos más alkalmazásban is használható. + +## 🚀 Kihívás + +A test szegmentációja csak egy a gyakori feladatok közül, amelyeket emberek képeivel végezhetünk. Más fontos feladatok közé tartozik a **csontváz detektálása** és a **testtartás felismerése**. Próbáld ki az [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) könyvtárat, hogy lásd, hogyan használható a testtartás felismerése. + +## Áttekintés és önálló tanulás + +Ez a [wikipedia cikk](https://wikipedia.org/wiki/Image_segmentation) jó áttekintést nyújt a technika különböző alkalmazásairól. Ismerd meg önállóan az Instance szegmentáció és Panoptikus szegmentáció alágazatait ezen a területen. + +## [Feladat](lab/README.md) + +Ebben a laborban próbáld ki az **emberi test szegmentációját** a [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) adathalmazzal a Kaggle-ről. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével került lefordításra. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/hu/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..d027e90d --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Emberi Test Szegmentáció + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) keretében. + +## Feladat + +A videógyártásban, például időjárás-jelentések során, gyakran szükség van arra, hogy egy emberi alakot kivágjunk a kameraképből, és egy másik felvételre helyezzük. Ezt általában **chroma key** technikával végezzük, amikor az embert egy egyszínű háttér előtt filmezik, amelyet később eltávolítanak. Ebben a laborban egy neurális hálózat modellt fogunk tanítani, hogy kivágja az emberi sziluettet. + +## Az Adatkészlet + +A [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) adatkészletet fogjuk használni Kaggle-ről. Töltsd le az adatkészletet manuálisan Kaggle-ről. + +## Indító Jegyzetfüzet + +Nyisd meg a labort a [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) fájl megnyitásával. + +## Tanulság + +Az emberi test szegmentációja csak egy a gyakori feladatok közül, amelyeket emberekről készült képekkel végezhetünk. Más fontos feladatok közé tartozik a **csontváz detektálása** és a **testtartás felismerése**. Nézd meg az [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) könyvtárat, hogy megtudd, hogyan valósíthatók meg ezek a feladatok. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/4-ComputerVision/README.md b/translations/hu/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..ddafdea6 --- /dev/null +++ b/translations/hu/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Számítógépes látás + +![A számítógépes látás tartalmának összefoglalása egy rajzban](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.hu.png) + +Ebben a részben megtanuljuk: + +* [Bevezetés a számítógépes látásba és az OpenCV-be](06-IntroCV/README.md) +* [Konvolúciós neurális hálók](07-ConvNets/README.md) +* [Előre betanított hálók és transzfer tanulás](08-TransferLearning/README.md) +* [Autoenkóderek](09-Autoencoders/README.md) +* [Generatív adverszális hálók](10-GANs/README.md) +* [Objektumfelismerés](11-ObjectDetection/README.md) +* [Szemantikus szegmentáció](12-Segmentation/README.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/13-TextRep/README.md b/translations/hu/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..56632772 --- /dev/null +++ b/translations/hu/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Szöveg ábrázolása tenzorokként + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Szövegklasszifikáció + +A szekció első részében a **szövegklasszifikáció** feladatra fogunk összpontosítani. Az [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) adathalmazt fogjuk használni, amely olyan hírcikkeket tartalmaz, mint például: + +* Kategória: Tudomány/Technológia +* Cím: Ky. cég támogatást nyert peptidek tanulmányozására (AP) +* Szöveg: AP - Egy, a Louisville-i Egyetem kémiai kutatója által alapított cég támogatást nyert egy fejlesztéshez... + +Célunk az lesz, hogy a híreket a szöveg alapján az egyik kategóriába soroljuk. + +## Szöveg ábrázolása + +Ha neurális hálózatokkal szeretnénk természetes nyelvfeldolgozási (NLP) feladatokat megoldani, szükségünk van egy módszerre, amellyel a szöveget tenzorokként ábrázolhatjuk. A számítógépek már most is számokként ábrázolják a szöveges karaktereket, amelyek a képernyőn megjelenő betűtípusokhoz rendelhetők, például ASCII vagy UTF-8 kódolás segítségével. + +Kép, amely egy karakter ASCII és bináris ábrázolását mutatja + +> [Kép forrása](https://www.seobility.net/en/wiki/ASCII) + +Az emberek megértik, hogy egy-egy betű **mit jelent**, és hogyan állnak össze a karakterek egy mondat szavaivá. A számítógépek azonban önmagukban nem rendelkeznek ilyen megértéssel, és a neurális hálózatnak ezt a jelentést a tanulás során kell elsajátítania. + +Ezért különböző megközelítéseket alkalmazhatunk a szöveg ábrázolására: + +* **Karakter szintű ábrázolás**, amikor a szöveget úgy ábrázoljuk, hogy minden karaktert egy számként kezelünk. Ha a szövegkorpusznak *C* különböző karaktere van, akkor a *Hello* szó egy 5x*C* méretű tenzorként ábrázolható. Minden betű egy-egy oszlopot jelentene a tenzorban, egy-egy one-hot kódolással. +* **Szó szintű ábrázolás**, amelyben egy **szókincset** hozunk létre a szöveg összes szavából, majd a szavakat one-hot kódolással ábrázoljuk. Ez a megközelítés valamivel jobb, mert az egyes betűk önmagukban nem hordoznak sok jelentést, így a magasabb szintű szemantikai egységek - a szavak - használatával egyszerűsítjük a neurális hálózat feladatát. Azonban a nagy szótárméret miatt magas dimenziójú, ritka tenzorokkal kell dolgoznunk. + +Bármelyik ábrázolást is választjuk, először a szöveget **tokenek** sorozatává kell alakítanunk, ahol egy token lehet egy karakter, egy szó, vagy akár egy szó egy része is. Ezután a tokent egy számmá alakítjuk, általában egy **szókincs** segítségével, és ezt a számot one-hot kódolással tápláljuk be a neurális hálózatba. + +## N-gramok + +A természetes nyelvben a szavak pontos jelentése csak a kontextusban érthető meg. Például a *neurális hálózat* és a *halászháló* jelentése teljesen eltérő. Az egyik módja annak, hogy ezt figyelembe vegyük, ha a modellünket szópárokra építjük, és a szópárokat külön szókincsbeli tokenekként kezeljük. Így a *Szeretek horgászni menni* mondat a következő tokenek sorozataként ábrázolható: *Szeretek horgászni*, *horgászni menni*. Az ezzel a megközelítéssel járó probléma az, hogy a szótár mérete jelentősen megnő, és az olyan kombinációk, mint *horgászni menni* és *vásárolni menni* külön tokenekként jelennek meg, amelyek nem osztoznak semmilyen szemantikai hasonlóságon, annak ellenére, hogy ugyanaz az ige szerepel bennük. + +Bizonyos esetekben érdemes lehet tri-gramokat -- három szóból álló kombinációkat -- is használni. Ezért ezt a megközelítést gyakran **n-gramoknak** nevezik. Érdemes lehet n-gramokat karakter szintű ábrázolásnál is használni, ahol az n-gramok nagyjából a különböző szótagoknak felelnek meg. + +## Bag-of-Words és TF/IDF + +Amikor olyan feladatokat oldunk meg, mint a szövegklasszifikáció, szükségünk van arra, hogy a szöveget egy fix méretű vektorként ábrázoljuk, amelyet bemenetként használhatunk a végső sűrű osztályozóhoz. Az egyik legegyszerűbb módja ennek az, ha az egyes szavak ábrázolásait kombináljuk, például összeadással. Ha minden szó one-hot kódolását összeadjuk, akkor egy gyakorisági vektort kapunk, amely megmutatja, hogy az egyes szavak hányszor fordulnak elő a szövegben. Az ilyen szövegábrázolást **bag-of-words**-nek (BoW) nevezzük. + + + +> Kép a szerzőtől + +A BoW lényegében azt mutatja meg, hogy mely szavak fordulnak elő a szövegben, és milyen mennyiségben, ami valóban jó indikátora lehet annak, hogy miről szól a szöveg. Például egy politikai hírcikk valószínűleg olyan szavakat tartalmaz, mint *elnök* és *ország*, míg egy tudományos publikációban olyan szavak szerepelhetnek, mint *ütköztető*, *felfedezés*, stb. Így a szavak gyakorisága sok esetben jó indikátora lehet a szöveg tartalmának. + +A BoW problémája, hogy bizonyos gyakori szavak, mint például *és*, *van*, stb., a legtöbb szövegben előfordulnak, és ezeknek a legmagasabb a gyakorisága, elnyomva az igazán fontos szavakat. Csökkenthetjük ezeknek a szavaknak a fontosságát, ha figyelembe vesszük, hogy milyen gyakran fordulnak elő az egész dokumentumgyűjteményben. Ez a fő ötlete a TF/IDF megközelítésnek, amelyet részletesebben tárgyalunk az ehhez a leckéhez tartozó jegyzetfüzetekben. + +Azonban egyik megközelítés sem képes teljes mértékben figyelembe venni a szöveg **szemantikáját**. Ehhez erősebb neurális hálózati modellekre van szükség, amelyeket később tárgyalunk ebben a szekcióban. + +## ✍️ Gyakorlatok: Szövegábrázolás + +Folytasd a tanulást a következő jegyzetfüzetekben: + +* [Szövegábrázolás PyTorch segítségével](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Szövegábrázolás TensorFlow segítségével](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Összegzés + +Eddig olyan technikákat tanulmányoztunk, amelyek súlyt adnak a különböző szavak gyakoriságának. Ezek azonban nem képesek a jelentést vagy a sorrendet ábrázolni. Ahogy a híres nyelvész, J. R. Firth 1935-ben mondta: "Egy szó teljes jelentése mindig kontextuális, és a kontextustól független jelentés tanulmányozása nem vehető komolyan." A kurzus későbbi részében megtanuljuk, hogyan ragadhatjuk meg a szöveg kontextuális információit nyelvi modellezés segítségével. + +## 🚀 Kihívás + +Próbálj ki más gyakorlatokat a bag-of-words és különböző adatmodellek használatával. Inspirációt meríthetsz ebből a [Kaggle versenyből](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Áttekintés és önálló tanulás + +Gyakorold a szövegbeágyazások és a bag-of-words technikák használatát a [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) oldalon. + +## [Feladat: Jegyzetfüzetek](assignment.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/13-TextRep/assignment.md b/translations/hu/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..be18ba5d --- /dev/null +++ b/translations/hu/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Feladat: Jegyzetfüzetek + +Használva az ehhez a leckéhez tartozó jegyzetfüzeteket (akár a PyTorch, akár a TensorFlow verziót), futtasd újra őket a saját adathalmazoddal, például egy Kaggle-ről származóval, megfelelő forrásmegjelöléssel. Írd át a jegyzetfüzetet, hogy kiemeld a saját megállapításaidat. Próbálj ki néhány innovatív adathalmazt, amelyek meglepőek lehetnek, például [ezt az UFO-észlelésekről szólót](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) a NUFORC-tól. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/14-Embeddings/README.md b/translations/hu/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..5a086382 --- /dev/null +++ b/translations/hu/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Beágyazások + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Amikor BoW vagy TF/IDF alapú osztályozókat tanítottunk, magas dimenziós szavak zsákja vektorokkal dolgoztunk, amelyek hossza `vocab_size`, és kifejezetten alacsony dimenziós pozíciós reprezentációs vektorokat alakítottunk át ritka egyhot reprezentációvá. Ez az egyhot reprezentáció azonban nem memóriahatékony. Ezenkívül minden szót egymástól függetlenül kezelünk, azaz az egyhot kódolt vektorok nem fejeznek ki semmilyen szemantikai hasonlóságot a szavak között. + +A **beágyazás** ötlete az, hogy a szavakat alacsonyabb dimenziós, sűrű vektorokkal reprezentáljuk, amelyek valamilyen módon tükrözik a szó szemantikai jelentését. Később megbeszéljük, hogyan lehet értelmes szóbeágyazásokat létrehozni, de egyelőre gondoljunk a beágyazásokra úgy, mint a szóvektor dimenziójának csökkentésére. + +Tehát a beágyazási réteg egy szót vesz bemenetként, és egy meghatározott `embedding_size` méretű kimeneti vektort állít elő. Bizonyos értelemben nagyon hasonló egy `Linear` réteghez, de egyhot kódolt vektor helyett képes lesz egy szó számát bemenetként venni, lehetővé téve számunkra, hogy elkerüljük a nagy egyhot kódolt vektorok létrehozását. + +Ha a beágyazási réteget használjuk osztályozó hálózatunk első rétegeként, akkor áttérhetünk a szavak zsákjáról az **embedding bag** modellre, ahol először minden szót a szövegünkben a megfelelő beágyazásra konvertálunk, majd valamilyen aggregált függvényt számítunk ki az összes beágyazás felett, például `sum`, `average` vagy `max`. + +![Kép, amely egy beágyazási osztályozót mutat öt szekvencia szóra.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.hu.png) + +> Kép a szerzőtől + +## ✍️ Gyakorlatok: Beágyazások + +Folytasd a tanulást az alábbi jegyzetfüzetekben: +* [Beágyazások PyTorch segítségével](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Beágyazások TensorFlow segítségével](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Szemantikai beágyazások: Word2Vec + +Míg a beágyazási réteg megtanulta a szavakat vektorreprezentációra leképezni, ez a reprezentáció nem feltétlenül hordozott sok szemantikai jelentést. Jó lenne olyan vektorreprezentációt tanulni, amelyben hasonló szavak vagy szinonimák olyan vektoroknak felelnek meg, amelyek közel vannak egymáshoz valamilyen vektortávolság (pl. euklideszi távolság) szempontjából. + +Ehhez először elő kell tanítanunk a beágyazási modellt egy nagy szöveggyűjteményen egy specifikus módon. Az egyik módszer a szemantikai beágyazások tanítására a [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Ez két fő architektúrán alapul, amelyeket a szavak elosztott reprezentációjának előállítására használnak: + + - **Folytonos szavak zsákja** (CBoW) — ebben az architektúrában a modellt arra tanítjuk, hogy egy szót jósoljon meg a környező kontextusból. Az ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$ esetén a modell célja, hogy megjósolja $W_0$-t $(W_{-2},W_{-1},W_1,W_2)$ alapján. + - **Folytonos skip-gram** a CBoW ellentéte. A modell a környező kontextus szavait használja a jelenlegi szó megjóslására. + +A CBoW gyorsabb, míg a skip-gram lassabb, de jobban reprezentálja a ritka szavakat. + +![Kép, amely a CBoW és Skip-Gram algoritmusokat mutatja a szavak vektorokká alakítására.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hu.png) + +> Kép [ebből a tanulmányból](https://arxiv.org/pdf/1301.3781.pdf) + +A Word2Vec előtanított beágyazások (valamint más hasonló modellek, mint például GloVe) szintén használhatók a beágyazási réteg helyett a neurális hálózatokban. Azonban foglalkoznunk kell a szókészletekkel, mivel a Word2Vec/GloVe előtanításához használt szókészlet valószínűleg eltér a szövegkorpuszunk szókészletétől. Nézd meg a fenti jegyzetfüzeteket, hogy lásd, hogyan lehet ezt a problémát megoldani. + +## Kontextuális beágyazások + +A hagyományos előtanított beágyazási reprezentációk, mint például a Word2Vec, egyik fő korlátja a szavak jelentésének diszambiguációja. Míg az előtanított beágyazások képesek bizonyos mértékben megragadni a szavak jelentését a kontextusban, minden szó lehetséges jelentését ugyanabba a beágyazásba kódolják. Ez problémákat okozhat a későbbi modellekben, mivel sok szó, például a "play", különböző jelentésekkel bír attól függően, hogy milyen kontextusban használják. + +Például a "play" szó az alábbi két mondatban teljesen eltérő jelentéssel bír: + +- Elmentem egy **színdarabra** a színházban. +- John játszani szeretne a barátaival. + +A fent említett előtanított beágyazások mindkét jelentését ugyanabba a beágyazásba kódolják. Ennek a korlátnak a leküzdéséhez olyan beágyazásokat kell építenünk, amelyek a **nyelvi modellre** alapoznak, amelyet egy nagy szövegkorpuszra tanítanak, és *tudja*, hogyan lehet a szavakat különböző kontextusokban összekapcsolni. A kontextuális beágyazások tárgyalása túlmutat ennek az oktatóanyagnak a keretein, de később visszatérünk rájuk, amikor a nyelvi modellekről beszélünk a kurzus során. + +## Összegzés + +Ebben a leckében felfedezted, hogyan lehet beágyazási rétegeket építeni és használni TensorFlow-ban és Pytorch-ban, hogy jobban tükrözzék a szavak szemantikai jelentését. + +## 🚀 Kihívás + +A Word2Vec-et néhány érdekes alkalmazásra használták, például dalok szövegének és költészet generálására. Nézd meg [ezt a cikket](https://www.politetype.com/blog/word2vec-color-poems), amely bemutatja, hogyan használta a szerző a Word2Vec-et költészet generálására. Nézd meg [Dan Shiffmann videóját](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) is, hogy felfedezz egy másik magyarázatot erre a technikára. Ezután próbáld meg alkalmazni ezeket a technikákat saját szövegkorpuszodra, amelyet például Kaggle-ről szerezhetsz be. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Áttekintés és önálló tanulás + +Olvasd el ezt a tanulmányt a Word2Vec-ről: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Feladat: Jegyzetfüzetek](assignment.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/14-Embeddings/assignment.md b/translations/hu/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..0d084db9 --- /dev/null +++ b/translations/hu/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Feladat: Jegyzetfüzetek + +Használva az ehhez a leckéhez tartozó jegyzetfüzeteket (akár a PyTorch, akár a TensorFlow verziót), futtasd újra őket a saját adathalmazoddal, például egy Kaggle-ről származóval, megfelelő forrásmegjelöléssel. Írd át a jegyzetfüzetet, hogy kiemeld a saját megállapításaidat. Próbálj ki egy másik típusú adathalmazt, és dokumentáld az eredményeidet, például olyan szövegeket használva, mint [ezek a Beatles-dalszövegek](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Felelősségkizárás**: +Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális, emberi fordítást igénybe venni. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/15-LanguageModeling/README.md b/translations/hu/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..ec2203f3 --- /dev/null +++ b/translations/hu/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Nyelvi Modellezés + +A szemantikus beágyazások, mint például a Word2Vec és a GloVe, valójában az első lépést jelentik a **nyelvi modellezés** felé – olyan modellek létrehozása felé, amelyek valamilyen módon *megértik* (vagy *reprezentálják*) a nyelv természetét. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +A nyelvi modellezés fő gondolata az, hogy címkézetlen adathalmazokon tanítsuk őket felügyelet nélküli módon. Ez azért fontos, mert hatalmas mennyiségű címkézetlen szöveg áll rendelkezésünkre, míg a címkézett szövegek mennyiségét mindig korlátozza az a munka, amit a címkézésre fordíthatunk. Leggyakrabban olyan nyelvi modelleket építhetünk, amelyek képesek **hiányzó szavakat megjósolni** a szövegben, mivel egyszerűen ki lehet takarni egy véletlenszerű szót a szövegben, és azt használni tanítómintaként. + +## Beágyazások tanítása + +Korábbi példáinkban előre betanított szemantikus beágyazásokat használtunk, de érdekes látni, hogyan lehet ezeket a beágyazásokat betanítani. Számos lehetséges ötlet létezik, amelyeket felhasználhatunk: + +* **N-Gram** nyelvi modellezés, amikor egy tokent az előző N token alapján jósolunk meg (N-gram). +* **Folytonos Szózsák** (CBoW), amikor a középső tokent $W_0$ jósoljuk meg egy token sorozatban $W_{-N}$, ..., $W_N$. +* **Skip-gram**, ahol a középső tokenből $W_0$ egy szomszédos tokenhalmazt {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} jósolunk meg. + +![kép egy tanulmányból, amely a szavak vektorokká alakítását mutatja](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.hu.png) + +> Kép [ebből a tanulmányból](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Példa Jegyzetfüzetek: CBoW modell tanítása + +Folytasd a tanulást az alábbi jegyzetfüzetekben: + +* [CBoW Word2Vec tanítása TensorFlow-val](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [CBoW Word2Vec tanítása PyTorch-csal](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Összegzés + +Az előző leckében láttuk, hogy a szóbeágyazások szinte varázslatosan működnek! Most már tudjuk, hogy a szóbeágyazások tanítása nem egy túl bonyolult feladat, és képesek lehetünk saját szóbeágyazásokat tanítani specifikus szakterületi szövegekhez, ha szükséges. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Áttekintés és Önálló Tanulás + +* [Hivatalos PyTorch oktatóanyag a nyelvi modellezésről](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Hivatalos TensorFlow oktatóanyag a Word2Vec modell tanításáról](https://www.TensorFlow.org/tutorials/text/word2vec). +* A **gensim** keretrendszer használata a leggyakrabban használt beágyazások tanítására néhány kódsorral [ebben a dokumentációban](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) van leírva. + +## 🚀 [Feladat: Skip-Gram Modell Tanítása](lab/README.md) + +A laborban arra hívunk ki, hogy módosítsd az órai kódot, és taníts Skip-Gram modellt a CBoW helyett. [Olvasd el a részleteket](lab/README.md). + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/hu/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..c58dca57 --- /dev/null +++ b/translations/hu/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Skip-Gram Modell Tréningje + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +Ebben a laborban az a kihívás, hogy Word2Vec modellt taníts Skip-Gram technikával. Taníts egy hálózatot beágyazással, hogy megjósolja a szomszédos szavakat egy $N$ token széles Skip-Gram ablakban. Használhatod a [leckében található kódot](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb), és kicsit módosíthatod. + +## Az Adatkészlet + +Bármilyen könyvet használhatsz. Rengeteg ingyenes szöveget találhatsz a [Project Gutenberg](https://www.gutenberg.org/) oldalán, például itt van egy közvetlen link Lewis Carroll [Alice Csodaországban](https://www.gutenberg.org/files/11/11-0.txt) című művéhez. Vagy használhatod Shakespeare darabjait, amelyeket az alábbi kóddal szerezhetsz meg: + +```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') +``` + +## Fedezd fel! + +Ha van időd és szeretnél mélyebben elmerülni a témában, próbálj ki néhány dolgot: + +* Hogyan befolyásolja a beágyazási méret az eredményeket? +* Hogyan hatnak a különböző szövegstílusok az eredményre? +* Vegyél néhány nagyon különböző típusú szót és azok szinonimáit, szerezd meg a vektoriális reprezentációikat, alkalmazz PCA-t a dimenziók 2-re csökkentéséhez, és ábrázold őket 2D térben. Látsz bármilyen mintázatot? + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/16-RNN/README.md b/translations/hu/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..a5396159 --- /dev/null +++ b/translations/hu/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rekurrens Neurális Hálózatok + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +Az előző szakaszokban gazdag szemantikai reprezentációkat használtunk a szövegekhez, valamint egy egyszerű lineáris osztályozót az embeddingek tetején. Ez az architektúra a mondatokban szereplő szavak összesített jelentését ragadja meg, de nem veszi figyelembe a szavak **sorrendjét**, mivel az embeddingek tetején végzett aggregációs művelet eltávolította ezt az információt az eredeti szövegből. Mivel ezek a modellek nem képesek a szavak sorrendjét modellezni, nem tudnak megoldani összetettebb vagy kétértelmű feladatokat, mint például szöveg generálása vagy kérdés megválaszolása. + +Ahhoz, hogy a szövegszekvencia jelentését megragadjuk, egy másik neurális hálózati architektúrát kell használnunk, amelyet **rekurrens neurális hálózatnak** (RNN) nevezünk. Az RNN-ben a mondatot egyesével, szimbólumonként adjuk át a hálózaton, amely egy **állapotot** hoz létre, amit aztán a következő szimbólummal együtt újra átadunk a hálózatnak. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.hu.png) + +> Kép a szerzőtől + +Az X0,...,Xn tokenek bemeneti szekvenciáját figyelembe véve az RNN egy neurális hálózati blokkok sorozatát hozza létre, és ezt a sorozatot végponttól végpontig tanítja visszaterjesztéssel. Minden hálózati blokk egy (Xi,Si) párt kap bemenetként, és Si+1-et állít elő eredményként. Az utolsó állapot Sn vagy (kimenet Yn) egy lineáris osztályozóba kerül, hogy előállítsa az eredményt. Az összes hálózati blokk ugyanazokat a súlyokat osztja meg, és egyetlen visszaterjesztési lépésben végponttól végpontig tanul. + +Mivel az állapotvektorok S0,...,Sn átmennek a hálózaton, képes megtanulni a szavak közötti szekvenciális függőségeket. Például, amikor a *nem* szó megjelenik valahol a szekvenciában, megtanulhatja bizonyos elemek tagadását az állapotvektoron belül, ami tagadást eredményez. + +> ✅ Mivel a fenti képen látható összes RNN blokk súlyai megosztottak, ugyanaz a kép egyetlen blokként is ábrázolható (a jobb oldalon) egy rekurrens visszacsatolási hurokkal, amely visszaviszi a hálózat kimeneti állapotát a bemenethez. + +## Az RNN cella anatómiája + +Nézzük meg, hogyan van felépítve egy egyszerű RNN cella. Elfogadja az előző állapotot Si-1 és az aktuális szimbólumot Xi bemenetként, és elő kell állítania a kimeneti állapotot Si (és néha érdekel minket egy másik kimenet Yi is, mint például generatív hálózatok esetében). + +Egy egyszerű RNN cellának két súlymátrixa van: az egyik átalakítja a bemeneti szimbólumot (nevezzük W-nek), a másik pedig az állapotot (H). Ebben az esetben a hálózat kimenete σ(W×Xi+H×Si-1+b) formában számítódik ki, ahol σ az aktivációs függvény, és b egy további bias. + +RNN Cell Anatomy + +> Kép a szerzőtől + +Sok esetben a bemeneti tokenek az embedding rétegen keresztül jutnak az RNN-be, hogy csökkentsék a dimenziót. Ebben az esetben, ha a bemeneti vektorok dimenziója *emb_size*, és az állapotvektor *hid_size* - akkor W mérete *emb_size*×*hid_size*, és H mérete *hid_size*×*hid_size*. + +## Hosszú-rövid távú memória (LSTM) + +A klasszikus RNN-ek egyik fő problémája az úgynevezett **eltűnő gradiens** probléma. Mivel az RNN-eket egyetlen visszaterjesztési lépésben végponttól végpontig tanítják, nehézséget okoz a hiba propagálása a hálózat első rétegeihez, így a hálózat nem tudja megtanulni a távoli tokenek közötti kapcsolatokat. Ennek a problémának az elkerülésére az egyik megoldás az **explicit állapotkezelés** bevezetése úgynevezett **kapuk** segítségével. Két jól ismert architektúra létezik ebben a kategóriában: **Hosszú-rövid távú memória** (LSTM) és **Kapuzott relé egység** (GRU). + +![Image showing an example long short term memory cell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Kép forrása TBD + +Az LSTM hálózat felépítése hasonló az RNN-hez, de két állapotot továbbít rétegről rétegre: az aktuális állapotot C, és a rejtett vektort H. Minden egységnél a rejtett vektor Hi össze van kapcsolva a bemenettel Xi, és ezek irányítják, hogy mi történik az állapottal C **kapuk** segítségével. Minden kapu egy neurális hálózat szigmoid aktivációval (kimenet tartománya [0,1]), amely bitmaszkként működik, amikor megszorozzuk az állapotvektorral. A következő kapuk léteznek (balról jobbra a fenti képen): + +* A **felejtő kapu** egy rejtett vektort vesz, és meghatározza, hogy az állapotvektor C mely komponenseit kell elfelejteni, és melyeket kell továbbítani. +* A **bemeneti kapu** információt vesz a bemeneti és rejtett vektorokból, és beilleszti az állapotba. +* A **kimeneti kapu** az állapotot egy lineáris rétegen keresztül átalakítja *tanh* aktivációval, majd kiválasztja annak bizonyos komponenseit a rejtett vektor Hi segítségével, hogy új állapotot Ci+1 állítson elő. + +Az állapot C komponensei gondolhatók úgy, mint bizonyos jelzők, amelyeket be- és kikapcsolhatunk. Például, amikor a *Alice* névvel találkozunk a szekvenciában, feltételezhetjük, hogy egy női karakterre utal, és bekapcsolhatjuk az állapotban azt a jelzőt, hogy női főnév van a mondatban. Amikor később találkozunk az *és Tom* kifejezéssel, bekapcsolhatjuk azt a jelzőt, hogy többes számú főnév van. Így az állapot manipulálásával nyomon követhetjük a mondatrészek nyelvtani tulajdonságait. + +> ✅ Egy kiváló forrás az LSTM belső működésének megértéséhez Christopher Olah [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) című cikke. + +## Bidirekcionális és többrétegű RNN-ek + +Olyan rekurrens hálózatokat tárgyaltunk, amelyek egy irányban működnek, a szekvencia elejétől a végéig. Ez természetesnek tűnik, mivel hasonlít arra, ahogyan olvasunk és hallgatunk beszédet. Azonban mivel sok gyakorlati esetben véletlen hozzáférésünk van a bemeneti szekvenciához, érdemes lehet rekurrens számítást végezni mindkét irányban. Az ilyen hálózatokat **bidirekcionális** RNN-eknek nevezzük. Bidirekcionális hálózat esetén két rejtett állapotvektorra van szükségünk, egy-egy irányhoz. + +Egy rekurrens hálózat, legyen az egyirányú vagy bidirekcionális, bizonyos mintákat ragad meg egy szekvencián belül, és ezeket az állapotvektorba menti vagy a kimenetbe továbbítja. Ahogy a konvolúciós hálózatoknál, itt is építhetünk egy másik rekurrens réteget az első fölé, hogy magasabb szintű mintákat ragadjunk meg, és az első réteg által kinyert alacsony szintű mintákból építkezzünk. Ez vezet minket a **többrétegű RNN** fogalmához, amely két vagy több rekurrens hálózatból áll, ahol az előző réteg kimenete bemenetként kerül a következő rétegbe. + +![Image showing a Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.hu.jpg) + +*Kép Fernando López [ezen csodálatos bejegyzéséből](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3)* + +## ✍️ Gyakorlatok: Embeddingek + +Folytasd a tanulást az alábbi jegyzetekben: + +* [RNN-ek PyTorch segítségével](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN-ek TensorFlow segítségével](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Összegzés + +Ebben az egységben láttuk, hogy az RNN-ek használhatók szekvencia osztályozásra, de valójában sok más feladatot is képesek kezelni, mint például szöveg generálása, gépi fordítás és még sok más. Ezeket a feladatokat a következő egységben fogjuk megvizsgálni. + +## 🚀 Kihívás + +Olvass el néhány irodalmat az LSTM-ekről, és gondold át az alkalmazásaikat: + +- [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) + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Áttekintés és önálló tanulás + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) Christopher Olah-tól. + +## [Feladat: Jegyzetek](assignment.md) + +**Felelősségkizárás**: +Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális, emberi fordítást igénybe venni. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/16-RNN/assignment.md b/translations/hu/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..f8209113 --- /dev/null +++ b/translations/hu/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Feladat: Jegyzetfüzetek + +Használva az ehhez a leckéhez tartozó jegyzetfüzeteket (akár a PyTorch, akár a TensorFlow verziót), futtasd újra őket a saját adathalmazoddal, például egy Kaggle-ről származóval, megfelelő forrásmegjelöléssel. Írd át a jegyzetfüzetet, hogy kiemeld a saját megállapításaidat. Próbálj ki egy másik típusú adathalmazt, és dokumentáld az eredményeidet, például olyan szövegekkel, mint [ez a Kaggle verseny adathalmaz az időjárásról szóló tweetekről](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/hu/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..cb9beb86 --- /dev/null +++ b/translations/hu/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generatív hálózatok + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +A Rekurrens Neurális Hálózatok (RNN-ek) és azok kapuzott cellaváltozatai, mint például a Long Short Term Memory Cells (LSTM-ek) és a Gated Recurrent Units (GRU-k), lehetőséget biztosítanak a nyelvi modellezésre, mivel képesek megtanulni a szavak sorrendjét, és előre jelezni a következő szót egy sorozatban. Ez lehetővé teszi, hogy az RNN-eket **generatív feladatokra** használjuk, például egyszerű szöveggenerálásra, gépi fordításra, sőt akár képaláírások készítésére is. + +> ✅ Gondolj arra, hányszor használtál generatív feladatokat, például szövegkiegészítést gépelés közben. Nézz utána kedvenc alkalmazásaidnak, hogy használtak-e RNN-eket. + +Az előző egységben tárgyalt RNN architektúrában minden RNN egység a következő rejtett állapotot adta ki eredményként. Azonban hozzáadhatunk egy másik kimenetet is minden rekurrens egységhez, amely lehetővé teszi, hogy egy **sorozatot** adjunk ki (ami az eredeti sorozattal azonos hosszúságú). Továbbá használhatunk olyan RNN egységeket is, amelyek nem fogadnak bemenetet minden lépésben, hanem csak egy kezdeti állapotvektort vesznek, és ebből állítanak elő egy kimeneti sorozatot. + +Ez különböző neurális architektúrákat tesz lehetővé, amelyeket az alábbi ábra mutat: + +![Ábra, amely a rekurrens neurális hálózatok gyakori mintázatait mutatja.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hu.jpg) + +> Kép Andrej Karpaty [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) című blogbejegyzéséből + +* **Egy-az-egyhez**: hagyományos neurális hálózat egy bemenettel és egy kimenettel +* **Egy-a-sokhoz**: generatív architektúra, amely egy bemeneti értéket fogad, és egy kimeneti értéksorozatot generál. Például, ha egy **képaláírás-generáló** hálózatot szeretnénk tanítani, amely egy kép szöveges leírását állítja elő, akkor a képet bemenetként használhatjuk, egy CNN-en keresztül rejtett állapotot nyerhetünk ki, majd egy rekurrens lánc szó szerint generálja az aláírást. +* **Sok-az-egyhez**: az előző egységben tárgyalt RNN architektúráknak felel meg, például szövegklasszifikáció esetén. +* **Sok-a-sokhoz**, vagy **sorozat-a-sorozathoz**: olyan feladatokhoz, mint például a **gépi fordítás**, ahol az első RNN összegyűjti az összes információt a bemeneti sorozatból a rejtett állapotba, majd egy másik RNN lánc ezt az állapotot bontja ki a kimeneti sorozattá. + +Ebben az egységben egyszerű generatív modellekre fogunk összpontosítani, amelyek segítenek szöveget generálni. Az egyszerűség kedvéért karakteralapú tokenizálást fogunk használni. + +Ezt az RNN-t lépésről lépésre tanítjuk szöveg generálására. Minden lépésben egy `nchars` hosszúságú karakterláncot veszünk, és megkérjük a hálózatot, hogy minden bemeneti karakterhez generálja a következő kimeneti karaktert: + +![Ábra, amely egy RNN által a 'HELLO' szó generálását mutatja.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.hu.png) + +Szöveg generálásakor (inferencia során) egy **indító** szöveggel kezdünk, amelyet az RNN cellákon keresztülvezetünk, hogy előállítsuk a köztes állapotot, majd ebből az állapotból indul a generálás. Egy karaktert generálunk egyszerre, majd az állapotot és a generált karaktert továbbadjuk egy másik RNN cellának, hogy generálja a következőt, amíg elegendő karaktert nem generálunk. + + + +> Kép a szerzőtől + +## ✍️ Gyakorlatok: Generatív hálózatok + +Folytasd a tanulást az alábbi jegyzetfüzetekben: + +* [Generatív hálózatok PyTorch segítségével](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generatív hálózatok TensorFlow segítségével](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Lágy szöveggenerálás és hőmérséklet + +Minden RNN cella kimenete egy karakterekre vonatkozó valószínűségi eloszlás. Ha mindig a legnagyobb valószínűségű karaktert választjuk a generált szöveg következő karaktereként, a szöveg gyakran "ciklusba" kerülhet, és ugyanazokat a karakterláncokat ismételheti újra és újra, mint ebben a példában: + +``` +today of the second the company and a second the company ... +``` + +Azonban, ha megnézzük a következő karakter valószínűségi eloszlását, előfordulhat, hogy a néhány legmagasabb valószínűség közötti különbség nem nagy, például az egyik karakter valószínűsége 0,2, míg egy másiké 0,19 stb. Például, amikor a '*play*' sorozat következő karakterét keressük, a következő karakter lehet egyaránt szóköz vagy **e** (mint a *player* szóban). + +Ez arra a következtetésre vezet, hogy nem mindig "igazságos" a legnagyobb valószínűségű karaktert választani, mert a második legnagyobb valószínűségű karakter választása is értelmes szöveghez vezethet. Bölcsebb, ha a karaktereket a hálózat kimenete által adott valószínűségi eloszlásból **mintavételezzük**. Használhatunk egy **hőmérséklet** nevű paramétert is, amely kisimítja a valószínűségi eloszlást, ha több véletlenszerűséget szeretnénk hozzáadni, vagy meredekebbé teszi, ha inkább a legnagyobb valószínűségű karakterekhez ragaszkodnánk. + +Fedezd fel, hogyan valósul meg ez a lágy szöveggenerálás a fent hivatkozott jegyzetfüzetekben. + +## Összegzés + +Bár a szöveggenerálás önmagában is hasznos lehet, a fő előnyök abból származnak, hogy képesek vagyunk szöveget generálni RNN-ek segítségével egy kezdeti jellemzővektorból. Például a szöveggenerálást használják gépi fordítás során (sorozat-a-sorozathoz, ebben az esetben az *enkóder* állapotvektorát használják a fordított üzenet generálására vagy *dekódolására*), vagy egy kép szöveges leírásának generálására (ebben az esetben a jellemzővektor egy CNN kinyerőből származik). + +## 🚀 Kihívás + +Vegyél részt néhány Microsoft Learn leckén ebben a témában: + +* Szöveggenerálás [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) segítségével + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Áttekintés és önálló tanulás + +Íme néhány cikk, amelyekkel bővítheted tudásodat: + +* Különböző megközelítések szöveggenerálásra Markov-lánccal, LSTM-mel és GPT-2-vel: [blogbejegyzés](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Szöveggenerálási példa a [Keras dokumentációjában](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Feladat](lab/README.md) + +Láttuk, hogyan lehet karakterenként szöveget generálni. A laborban a szóalapú szöveggenerálást fogod felfedezni. + +**Felelősség kizárása**: +Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/hu/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..4ec76120 --- /dev/null +++ b/translations/hu/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Szószintű szöveggenerálás RNN-ekkel + +Laborfeladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) keretében. + +## Feladat + +Ebben a laborban bármelyik könyvet használhatod, és azt kell adatként felhasználnod egy szószintű szöveggenerátor betanításához. + +## Az adatállomány + +Bármelyik könyvet szabadon használhatod. Rengeteg ingyenes szöveget találhatsz a [Project Gutenberg](https://www.gutenberg.org/) oldalán, például itt van egy közvetlen link Lewis Carroll [Alice Csodaországban](https://www.gutenberg.org/files/11/11-0.txt) című művéhez. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget az ebből a fordításból eredő félreértésekért vagy téves értelmezésekért. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/18-Transformers/README.md b/translations/hu/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..22505a3b --- /dev/null +++ b/translations/hu/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Figyelem Mechanizmusok és Transzformerek + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Az NLP terület egyik legfontosabb problémája a **gépi fordítás**, amely alapvető feladat olyan eszközök mögött, mint a Google Translate. Ebben a részben a gépi fordításra, vagy általánosabban bármilyen *sorról-sorra* feladatra (amit **mondattranszdukciónak** is neveznek) fogunk összpontosítani. + +Az RNN-ekkel a sorról-sorra megvalósítás két rekurrens hálózaton keresztül történik, ahol az egyik hálózat, az **enkóder**, egy bemeneti sorozatot egy rejtett állapotba tömörít, míg a másik hálózat, a **dekóder**, ezt a rejtett állapotot egy lefordított eredménnyé bontja ki. Ezzel a megközelítéssel azonban van néhány probléma: + +* Az enkóder hálózat végső állapota nehezen emlékszik a mondat elejére, ami gyenge modellminőséget eredményez hosszú mondatok esetén. +* A sorozat minden szava ugyanolyan hatással van az eredményre. A valóságban azonban a bemeneti sorozat bizonyos szavai gyakran nagyobb hatással vannak a kimeneti sorozatra, mint mások. + +A **Figyelem Mechanizmusok** lehetőséget nyújtanak arra, hogy súlyozzuk az egyes bemeneti vektorok kontextuális hatását az RNN kimeneti előrejelzéseire. Ez úgy valósul meg, hogy rövidítéseket hozunk létre a bemeneti RNN köztes állapotai és a kimeneti RNN között. Ily módon, amikor a yt kimeneti szimbólumot generáljuk, figyelembe vesszük az összes bemeneti rejtett állapotot hi, különböző súlyozási együtthatókkal αt,i. + +![Kép egy enkóder/dekóder modellről additív figyelem réteggel](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.hu.png) + +> Az enkóder-dekóder modell additív figyelem mechanizmussal [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), idézve [ebből a blogbejegyzésből](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +A figyelem mátrix {αi,j} azt reprezentálja, hogy bizonyos bemeneti szavak milyen mértékben játszanak szerepet egy adott szó generálásában a kimeneti sorozatban. Az alábbiakban egy ilyen mátrix példáját láthatjuk: + +![Kép egy mintázott igazításról, amelyet az RNNsearch-50 talált, Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.hu.png) + +> Ábra [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (3. ábra) + +A figyelem mechanizmusok felelősek az NLP jelenlegi vagy közel jelenlegi csúcstechnológiájáért. A figyelem hozzáadása azonban jelentősen növeli a modell paramétereinek számát, ami méretezési problémákat okozott az RNN-ekkel. Az RNN-ek méretezésének egyik kulcsfontosságú korlátja, hogy a modellek rekurrens természete megnehezíti a tanítás párhuzamosítását és csoportosítását. Az RNN-ben a sorozat minden elemét sorrendben kell feldolgozni, ami azt jelenti, hogy nem lehet könnyen párhuzamosítani. + +![Enkóder Dekóder Figyelemmel](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Ábra a [Google Blogból](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +A figyelem mechanizmusok elfogadása és ez a korlát vezetett a ma ismert és használt csúcstechnológiás Transzformer Modellek létrehozásához, mint például a BERT és az Open-GPT3. + +## Transzformer modellek + +A transzformerek egyik fő ötlete az RNN-ek szekvenciális jellegének elkerülése, és egy olyan modell létrehozása, amely párhuzamosítható a tanítás során. Ezt két ötlet megvalósításával érik el: + +* pozíciós kódolás +* önfigyelem mechanizmus használata minták megragadására RNN-ek (vagy CNN-ek) helyett (ezért hívják a transzformereket bemutató cikket *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Pozíciós Kódolás/Beágyazás + +A pozíciós kódolás ötlete a következő: +1. Az RNN-ek használatakor a tokenek relatív pozícióját a lépések száma képviseli, így nem kell kifejezetten reprezentálni. +2. Azonban, amikor áttérünk a figyelemre, tudnunk kell a tokenek relatív pozícióját a sorozaton belül. +3. A pozíciós kódolás eléréséhez a tokenek sorozatát kiegészítjük a tokenek pozícióinak sorozatával a sorozatban (azaz egy 0,1,... számok sorozatával). +4. Ezután a token pozícióját összekeverjük egy token beágyazási vektorral. A pozíció (egész szám) vektorrá alakításához különböző megközelítéseket alkalmazhatunk: + +* Tanítható beágyazás, hasonlóan a token beágyazáshoz. Ez az itt tárgyalt megközelítés. Beágyazási rétegeket alkalmazunk mind a tokenekre, mind azok pozícióira, így azonos dimenziójú beágyazási vektorokat kapunk, amelyeket összeadunk. +* Fix pozíciós kódolási függvény, ahogy az eredeti cikk javasolja. + + + +> Kép a szerzőtől + +Az eredmény, amit a pozíciós beágyazással kapunk, beágyazza az eredeti tokent és annak pozícióját a sorozaton belül. + +### Többfejű Önsfigyelem + +Ezután mintákat kell megragadnunk a sorozaton belül. Ehhez a transzformerek **önfigyelem** mechanizmust használnak, amely lényegében figyelem, amelyet ugyanarra a sorozatra alkalmaznak bemenetként és kimenetként. Az önfigyelem alkalmazása lehetővé teszi számunkra, hogy figyelembe vegyük a mondaton belüli **kontekztust**, és lássuk, mely szavak kapcsolódnak egymáshoz. Például lehetővé teszi számunkra, hogy lássuk, mely szavakra utalnak korreferenciák, mint például *az*, és figyelembe vegyük a kontextust: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.hu.png) + +> Kép a [Google Blogból](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +A transzformerekben **Többfejű Figyelmet** használunk annak érdekében, hogy a hálózat képes legyen különböző típusú függőségeket megragadni, például hosszú távú vs. rövid távú szavak kapcsolatait, korreferenciát vs. valami mást stb. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) további részleteket tartalmaz a transzformer rétegek megvalósításáról. + +### Enkóder-Dekóder Figyelem + +A transzformerekben a figyelmet két helyen használják: + +* Minták megragadására a bemeneti szövegen belül önfigyelem segítségével +* Sorozatfordítás végrehajtására - ez az enkóder és dekóder közötti figyelem réteg. + +Az enkóder-dekóder figyelem nagyon hasonló az RNN-ekben használt figyelem mechanizmushoz, ahogy a szakasz elején leírtuk. Ez az animált diagram magyarázza az enkóder-dekóder figyelem szerepét. + +![Animált GIF, amely bemutatja, hogyan történnek az értékelések a transzformer modellekben.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Mivel minden bemeneti pozíciót függetlenül térképezünk minden kimeneti pozícióhoz, a transzformerek jobban párhuzamosíthatók, mint az RNN-ek, ami lehetővé teszi sokkal nagyobb és kifejezőbb nyelvi modellek létrehozását. Minden figyelem fej különböző szavak közötti kapcsolatok tanulására használható, ami javítja az NLP feladatok eredményeit. + +## BERT + +A **BERT** (Bidirectional Encoder Representations from Transformers) egy nagyon nagy, többrétegű transzformer hálózat, amelynek 12 rétege van a *BERT-base*-hez, és 24 a *BERT-large*-hoz. A modellt először egy nagy szövegkorpuszra (WikiPedia + könyvek) tanítják be felügyelet nélküli tanítással (maszkolt szavak előrejelzése egy mondatban). Az előtanítás során a modell jelentős szintű nyelvi megértést szív magába, amelyet később más adathalmazokkal finomhangolva lehet hasznosítani. Ezt a folyamatot **transzfer tanulásnak** nevezzük. + +![kép a http://jalammar.github.io/illustrated-bert/ oldalról](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.hu.png) + +> Kép [forrása](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Gyakorlatok: Transzformerek + +Folytasd a tanulást az alábbi jegyzetfüzetekben: + +* [Transzformerek PyTorch-ban](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transzformerek TensorFlow-ban](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Összegzés + +Ebben a leckében megismerkedtél a Transzformerekkel és Figyelem Mechanizmusokkal, amelyek az NLP eszköztárának alapvető elemei. Számos Transzformer architektúra létezik, beleértve a BERT-et, DistilBERT-et, BigBird-et, OpenGPT3-at és még sok mást, amelyeket finomhangolni lehet. A [HuggingFace csomag](https://github.com/huggingface/) lehetőséget nyújt sok ilyen architektúra tanítására PyTorch és TensorFlow segítségével. + +## 🚀 Kihívás + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Áttekintés és Önálló Tanulás + +* [Blogbejegyzés](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), amely magyarázza a klasszikus [Attention is all you need](https://arxiv.org/abs/1706.03762) cikket a transzformerekről. +* [Blogbejegyzés-sorozat](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) a transzformerekről, amely részletesen magyarázza az architektúrát. + +## [Feladat](assignment.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/18-Transformers/assignment.md b/translations/hu/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..876b780c --- /dev/null +++ b/translations/hu/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Feladat: Transformers + +Kísérletezz a Transformers-szel a HuggingFace-en! Próbáld ki az általuk biztosított szkripteket, hogy dolgozhass a weboldalukon elérhető különböző modellekkel: https://huggingface.co/docs/transformers/run_scripts. Próbálj ki egyet az ő adathalmazaik közül, majd importálj egy sajátot ebből a tananyagból vagy a Kaggle-ről, és nézd meg, tudsz-e érdekes szövegeket generálni. Készíts egy jegyzetfüzetet az eredményeidről. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/19-NER/README.md b/translations/hu/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..14b6a6c5 --- /dev/null +++ b/translations/hu/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,93 @@ + +# Névjegy Felismerés + +Eddig főként egy NLP feladatra, a klasszifikációra koncentráltunk. Azonban léteznek más NLP feladatok is, amelyeket neurális hálózatokkal meg lehet oldani. Az egyik ilyen feladat a **[Névjegy Felismerés](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), amely a szövegben található konkrét entitások, például helyek, személynevek, dátum-idő intervallumok, kémiai képletek stb. felismerésével foglalkozik. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Példa a NER használatára + +Tegyük fel, hogy egy természetes nyelvi chatbotot szeretnél fejleszteni, hasonlóan az Amazon Alexa vagy a Google Assistant megoldásaihoz. Az intelligens chatbotok úgy működnek, hogy *megértik*, mit szeretne a felhasználó, azáltal hogy szövegklasszifikációt végeznek a bemeneti mondaton. Ennek a klasszifikációnak az eredménye az úgynevezett **szándék**, amely meghatározza, mit kell tennie a chatbotnak. + +Bot NER + +> Kép a szerzőtől + +Azonban a felhasználó megadhat bizonyos paramétereket a mondat részeként. Például, ha az időjárásról kérdez, megadhat egy helyszínt vagy dátumot. A chatbotnak képesnek kell lennie felismerni ezeket az entitásokat, és kitölteni a paraméterhelyeket, mielőtt végrehajtja a műveletet. Pontosan itt jön képbe a NER. + +> ✅ Egy másik példa lehet [tudományos orvosi cikkek elemzése](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Az egyik fő dolog, amit keresnünk kell, az a konkrét orvosi kifejezések, például betegségek és orvosi anyagok. Míg egy kis számú betegséget valószínűleg ki lehet nyerni szövegrészlet-kereséssel, összetettebb entitások, mint például kémiai vegyületek és gyógyszernevek, bonyolultabb megközelítést igényelnek. + +## NER mint Token Klasszifikáció + +A NER modellek lényegében **token klasszifikációs modellek**, mivel minden bemeneti tokenről el kell döntenünk, hogy egy entitáshoz tartozik-e vagy sem, és ha igen, melyik entitásosztályhoz. + +Vegyük például az alábbi cikkcímet: + +**Tricuspidalis billentyű regurgitáció** és **lítium-karbonát** **toxicitás** egy újszülött csecsemőben. + +Az entitások itt a következők: + +* A Tricuspidalis billentyű regurgitáció egy betegség (`DIS`) +* A Lítium-karbonát egy kémiai anyag (`CHEM`) +* A Toxicitás szintén egy betegség (`DIS`) + +Figyeld meg, hogy egy entitás több tokenből is állhat. És, ahogy ebben az esetben, meg kell különböztetnünk két egymást követő entitást. Ezért gyakori, hogy két osztályt használunk minden entitáshoz - az egyik az entitás első tokenjét jelöli (gyakran a `B-` előtagot használjuk, a **b**eginning, azaz kezdés jelölésére), a másik pedig az entitás folytatását (`I-`, azaz **i**nner token). Az összes **o**ther, azaz egyéb tokenek jelölésére az `O` osztályt használjuk. Az ilyen token címkézést [BIO címkézésnek](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (vagy IOB) nevezzük. Ha címkézzük, a címünk így fog kinézni: + +Token | Címke +------|----- +Tricuspidalis | B-DIS +billentyű | I-DIS +regurgitáció | I-DIS +és | O +lítium | B-CHEM +karbonát | I-CHEM +toxicitás | B-DIS +egy | O +újszülött | O +csecsemőben | O +. | O + +Mivel egy-egy megfeleltetést kell létrehoznunk a tokenek és osztályok között, egy **sok-az-egyhez** neurális hálózati modellt tudunk tanítani ebből a képből: + +![Kép, amely a gyakori rekurzív neurális hálózati mintákat mutatja.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.hu.jpg) + +> *Kép [ebből a blogbejegyzésből](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) [Andrej Karpathy](http://karpathy.github.io/) tollából. A NER token klasszifikációs modellek megfelelnek a jobb szélső hálózati architektúrának ezen a képen.* + +## NER modellek tanítása + +Mivel a NER modell lényegében egy token klasszifikációs modell, az általunk már ismert RNN-eket használhatjuk erre a feladatra. Ebben az esetben minden rekurzív hálózati blokk visszaadja a token ID-t. Az alábbi példajegyzet bemutatja, hogyan lehet LSTM-et tanítani token klasszifikációra. + +## ✍️ Példajegyzetek: NER + +Folytasd a tanulást az alábbi jegyzetben: + +* [NER TensorFlow-val](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Összegzés + +A NER modell egy **token klasszifikációs modell**, ami azt jelenti, hogy token klasszifikációt tud végezni. Ez egy nagyon gyakori feladat az NLP-ben, amely segít felismerni konkrét entitásokat a szövegben, például helyeket, neveket, dátumokat és még sok mást. + +## 🚀 Kihívás + +Teljesítsd az alábbi feladathoz kapcsolódó kihívást, amelyben egy orvosi kifejezéseket felismerő modellt kell tanítanod, majd próbáld ki egy másik adathalmazon. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Áttekintés és önálló tanulás + +Olvasd el a blogot [A rekurzív neurális hálózatok ésszerűtlen hatékonysága](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) címmel, és kövesd az ott található További Olvasmányok szekciót, hogy elmélyítsd tudásodat. + +## [Feladat](lab/README.md) + +Az ehhez a leckéhez tartozó feladatban egy orvosi entitás felismerő modellt kell tanítanod. Kezdheted az LSTM modell tanításával, ahogy ebben a leckében leírtuk, majd folytathatod a BERT transformer modell használatával. Olvasd el [az utasításokat](lab/README.md), hogy minden részletet megtudj. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/19-NER/lab/README.md b/translations/hu/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..5d95e917 --- /dev/null +++ b/translations/hu/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Laboratóriumi feladat az [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) anyagából. + +## Feladat + +Ebben a laborban egy névfelismerő modellt kell betanítanod orvosi kifejezésekre. + +## Az Adathalmaz + +Ahhoz, hogy NER modellt tudjunk tanítani, megfelelően címkézett adathalmazra van szükségünk, amely tartalmazza az orvosi entitásokat. A [BC5CDR adathalmaz](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) több mint 1500 tudományos cikkből származó, betegségeket és vegyi anyagokat tartalmazó címkézett entitásokat foglal magában. Az adathalmaz letöltéséhez regisztrálnod kell a weboldalukon. + +A BC5CDR adathalmaz így néz ki: + +``` +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 +... +``` + +Ebben az adathalmazban az első két sor a cikk címe és absztraktja, majd az egyes entitások következnek, amelyek kezdő- és végpozícióját a cím+absztrakt blokkban adják meg. Az entitás típusán kívül megkapod az adott entitás ontológiai azonosítóját is egy orvosi ontológiában. + +Python kódot kell írnod, hogy ezt az adathalmazt BIO kódolású formátumba alakítsd. + +## A Hálózat + +Az első próbálkozás a NER modellre egy LSTM hálózat használata lehet, ahogy az órán látott példában is szerepelt. Azonban az NLP feladatokban a [transformer architektúra](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), különösen a [BERT nyelvi modellek](https://en.wikipedia.org/wiki/BERT_(language_model)) sokkal jobb eredményeket mutatnak. Az előre betanított BERT modellek megértik a nyelv általános szerkezetét, és viszonylag kis adathalmazokkal és számítási költségekkel finomhangolhatók specifikus feladatokra. + +Mivel az NER modellt orvosi környezetben szeretnénk alkalmazni, érdemes olyan BERT modellt használni, amelyet orvosi szövegeken tanítottak be. A Microsoft Research kiadott egy előre betanított modellt, amelyet [PubMedBERT][PubMedBERT]-nek neveznek ([publikáció][PubMedBERT-Pub]), és amelyet a [PubMed](https://pubmed.ncbi.nlm.nih.gov/) adattár szövegein finomhangoltak. + +A *de facto* szabvány a transformer modellek tanítására a [Hugging Face Transformers](https://huggingface.co/) könyvtár. Ez a könyvtár egy közösség által karbantartott előre betanított modellek gyűjteményét is tartalmazza, beleértve a PubMedBERT-et. A modell betöltéséhez és használatához mindössze néhány sor kódra van szükség: + +```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) +``` + +Ez biztosítja számunkra a `model` objektumot, amelyet tokenosztályozási feladatra építettek `classes` számú osztállyal, valamint a `tokenizer` objektumot, amely a bemeneti szöveget tokenekre bontja. Az adathalmazt BIO formátumba kell konvertálnod, figyelembe véve a PubMedBERT tokenizálását. [Ez a Python kódrészlet](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) inspirációként szolgálhat. + +## Összegzés + +Ez a feladat nagyon közel áll ahhoz, amit valószínűleg el kell végezned, ha nagy mennyiségű természetes nyelvű szöveg elemzésével szeretnél mélyebb betekintést nyerni. A mi esetünkben a betanított modellt alkalmazhatjuk a [COVID-hoz kapcsolódó cikkek adathalmazára](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), és megnézhetjük, milyen következtetéseket tudunk levonni. [Ez a blogbejegyzés](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) és [ez a tanulmány](https://www.mdpi.com/2504-2289/6/1/4) bemutatja, milyen kutatásokat lehet végezni ezen a cikkgyűjteményen NER segítségével. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/20-LangModels/README.md b/translations/hu/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..18aeebe3 --- /dev/null +++ b/translations/hu/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Előre Trénelt Nagy Nyelvi Modellek + +Az eddigi feladataink során egy neurális hálót tanítottunk be egy adott feladat elvégzésére címkézett adathalmaz segítségével. Nagy transzformer modellek, mint például a BERT esetében, önfelügyelt nyelvi modellezést használunk egy nyelvi modell létrehozásához, amelyet aztán további, specifikus területekre irányuló képzéssel specializálunk konkrét feladatokra. Azonban bebizonyosodott, hogy a nagy nyelvi modellek számos feladatot képesek megoldani bármiféle területspecifikus képzés nélkül is. Az ilyen modellek családját **GPT**-nek, azaz Generatív Előre Trénelt Transzformernek nevezzük. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Szöveg Generálás és Perplexitás + +Az a gondolat, hogy egy neurális háló képes általános feladatokat elvégezni utólagos képzés nélkül, a [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) című tanulmányban kerül bemutatásra. A fő elképzelés az, hogy számos más feladat modellezhető **szöveg generálás** segítségével, mivel a szöveg megértése lényegében azt jelenti, hogy képesek vagyunk előállítani azt. Mivel a modell hatalmas mennyiségű szövegen van betanítva, amely az emberi tudást öleli fel, széles körű témákban ismereteket szerez. + +> A szöveg megértése és előállítása magában foglalja a körülöttünk lévő világ ismeretét is. Az emberek nagy mértékben olvasás útján tanulnak, és a GPT hálózat ebben hasonló. + +A szöveg generáló hálózatok úgy működnek, hogy megjósolják a következő szó valószínűségét $$P(w_N)$$. Azonban a következő szó feltétel nélküli valószínűsége megegyezik ennek a szónak a szövegkorpuszban való gyakoriságával. A GPT képes megadni a következő szó **feltételes valószínűségét**, figyelembe véve az előző szavakat: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> További információt a valószínűségekről a [Data Science for Beginners Curriculum](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) című anyagunkban találhatsz. + +A nyelvi generáló modellek minőségét **perplexitás** segítségével lehet meghatározni. Ez egy belső metrika, amely lehetővé teszi a modell minőségének mérését bármiféle feladatspecifikus adathalmaz nélkül. Az *egy mondat valószínűségének* fogalmán alapul - a modell magas valószínűséget rendel egy olyan mondathoz, amely valószínűleg valódi (azaz a modell nem **zavarodott** meg tőle), és alacsony valószínűséget olyan mondatokhoz, amelyek kevésbé értelmesek (pl. *Can it does what?*). Ha a modellnek valódi szövegkorpusz mondatokat adunk, elvárjuk, hogy magas valószínűséget és alacsony **perplexitást** kapjunk. Matematikailag a perplexitás a teszthalmaz normalizált inverz valószínűségeként van definiálva: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Kísérletezhetsz szöveg generálással a [GPT-alapú szövegszerkesztővel a Hugging Face-től](https://transformer.huggingface.co/doc/gpt2-large)**. Ebben a szerkesztőben elkezdheted írni a szövegedet, és a **[TAB]** megnyomásával több befejezési lehetőséget kapsz. Ha ezek túl rövidek, vagy nem vagy elégedett velük - nyomd meg újra a [TAB]-ot, és további lehetőségeket kapsz, beleértve hosszabb szövegrészeket is. + +## A GPT egy Család + +A GPT nem egyetlen modell, hanem a [OpenAI](https://openai.com) által fejlesztett és betanított modellek gyűjteménye. + +A GPT modellek között található: + +| [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) | +| -- | -- | -- | +|Nyelvi modell akár 1,5 milliárd paraméterrel. | Nyelvi modell akár 175 milliárd paraméterrel. | 100T paraméterrel, és képes képeket és szövegeket is bemenetként fogadni, valamint szöveget generálni kimenetként. | + +A GPT-3 és GPT-4 modellek elérhetők [Microsoft Azure kognitív szolgáltatásként](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), valamint [OpenAI API](https://openai.com/api) formájában. + +## Prompt Engineering + +Mivel a GPT hatalmas mennyiségű adat alapján van betanítva, hogy megértse a nyelvet és a kódot, válaszokat ad a bemenetekre (promptekre). A promtpek a GPT bemenetei vagy lekérdezései, amelyekben utasításokat adunk a modelleknek az elvégzendő feladatokról. Ahhoz, hogy a kívánt eredményt kapjuk, a leghatékonyabb promptot kell megalkotnunk, amely magában foglalja a megfelelő szavak, formátumok, kifejezések vagy akár szimbólumok kiválasztását. Ezt a megközelítést [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) néven ismerjük. + +[Ez a dokumentáció](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) további információt nyújt a prompt engineeringről. + +## ✍️ Példa Notebook: [Játék az OpenAI-GPT-vel](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Folytasd a tanulást az alábbi notebookokban: + +* [Szöveg generálása OpenAI-GPT és Hugging Face Transformers segítségével](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Következtetés + +Az új általános előre trénelt nyelvi modellek nemcsak a nyelvi struktúrát modellezik, hanem hatalmas mennyiségű természetes nyelvet is tartalmaznak. Ezért hatékonyan használhatók bizonyos NLP feladatok megoldására nulla vagy kevés tanítással. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/5-NLP/README.md b/translations/hu/lessons/5-NLP/README.md new file mode 100644 index 00000000..da4093d0 --- /dev/null +++ b/translations/hu/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Természetes Nyelvfeldolgozás + +![Összefoglaló az NLP feladatokról egy rajzban](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.hu.png) + +Ebben a részben a neurális hálózatok használatára összpontosítunk, hogy megoldjuk a **természetes nyelvfeldolgozással (NLP)** kapcsolatos feladatokat. Számos NLP probléma van, amelyeket szeretnénk, ha a számítógépek meg tudnának oldani: + +* **Szöveg osztályozása** egy tipikus osztályozási probléma, amely szövegszekvenciákra vonatkozik. Példák: e-mailek osztályozása spam vagy nem spam kategóriába, vagy cikkek kategorizálása sport, üzlet, politika stb. témák szerint. Chatbotok fejlesztésekor gyakran meg kell értenünk, mit akart mondani a felhasználó – ebben az esetben **szándék osztályozásról** van szó. A szándék osztályozás során gyakran sok kategóriával kell dolgoznunk. +* **Érzelemelemzés** egy tipikus regressziós probléma, ahol egy számot (érzelmet) kell hozzárendelnünk, amely kifejezi, mennyire pozitív vagy negatív egy mondat jelentése. Az érzelemelemzés egy fejlettebb változata az **aspektus-alapú érzelemelemzés** (ABSA), ahol nem az egész mondathoz, hanem annak különböző részeihez (aspektusokhoz) rendelünk érzelmet, pl. *Ebben az étteremben tetszett a konyha, de a hangulat borzalmas volt*. +* **Név entitás felismerés** (NER) arra a problémára utal, hogy bizonyos entitásokat kell kinyerni a szövegből. Például meg kell értenünk, hogy a *Holnap Párizsba kell repülnöm* mondatban a *holnap* szó DÁTUM-ra utal, míg *Párizs* egy HELYSÉG. +* **Kulcsszó kinyerés** hasonló a NER-hez, de itt automatikusan kell kinyerni a mondat jelentéséhez fontos szavakat, anélkül, hogy előzetesen specifikus entitástípusokra tanítanánk. +* **Szöveg csoportosítása** hasznos lehet, ha hasonló mondatokat szeretnénk csoportosítani, például technikai támogatási beszélgetésekben hasonló kéréseket. +* **Kérdés megválaszolása** arra utal, hogy egy modell képes legyen egy adott kérdésre válaszolni. A modell egy szöveges részletet és egy kérdést kap bemenetként, és meg kell adnia a szöveg azon részét, ahol a válasz található (vagy néha generálnia kell a válasz szövegét). +* **Szöveg generálása** egy modell képessége új szöveg létrehozására. Ez tekinthető egy osztályozási feladatnak, amely előrejelzi a következő betűt/szót egy *szöveges indítás* alapján. Fejlett szöveg generáló modellek, mint például a GPT-3, képesek más NLP feladatokat is megoldani olyan technikák segítségével, mint a [prompt programozás](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) vagy a [prompt mérnökség](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Szöveg összefoglalása** egy olyan technika, amikor azt szeretnénk, hogy a számítógép "elolvassa" a hosszú szöveget, és néhány mondatban összefoglalja. +* **Gépi fordítás** tekinthető egy nyelven történő szöveg megértésének és egy másik nyelven történő szöveg generálásának kombinációjaként. + +Kezdetben a legtöbb NLP feladatot hagyományos módszerekkel oldották meg, például nyelvtanokkal. Például gépi fordítás esetén elemzőket használtak, hogy az eredeti mondatot szintaxisfává alakítsák, majd magasabb szintű szemantikai struktúrákat nyertek ki, hogy reprezentálják a mondat jelentését, és ezen jelentés és a célnyelv nyelvtana alapján generálták az eredményt. Manapság sok NLP feladatot hatékonyabban oldanak meg neurális hálózatokkal. + +> Számos klasszikus NLP módszer megtalálható a [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python könyvtárban. Egy remek [NLTK könyv](https://www.nltk.org/book/) is elérhető online, amely bemutatja, hogyan lehet különböző NLP feladatokat megoldani az NLTK segítségével. + +A kurzusunkban főként a neurális hálózatok használatára fogunk összpontosítani az NLP területén, és szükség esetén használni fogjuk az NLTK-t. + +Már megtanultuk, hogyan használjunk neurális hálózatokat táblázatos adatok és képek feldolgozására. A fő különbség ezek között az adatok és a szöveg között az, hogy a szöveg változó hosszúságú szekvencia, míg a képek esetében a bemenet mérete előre ismert. Míg a konvolúciós hálózatok képesek mintákat kinyerni a bemeneti adatokból, a szövegben lévő minták összetettebbek. Például a tagadás elválasztható a tárgytól sok szóval (pl. *Nem szeretem a narancsot* vs. *Nem szeretem azokat a nagy színes ízletes narancsokat*), és ezt még mindig egy mintaként kell értelmezni. Ezért a nyelv kezeléséhez új neurális hálózattípusokat kell bevezetnünk, mint például *rekurzív hálózatok* és *transformerek*. + +## Könyvtárak telepítése + +Ha helyi Python telepítést használ a kurzus futtatásához, szükség lehet az NLP-hez szükséges összes könyvtár telepítésére az alábbi parancsokkal: + +**PyTorch esetén** +```bash +pip install -r requirements-torch.txt +``` +**TensorFlow esetén** +```bash +pip install -r requirements-tf.txt +``` + +> A TensorFlow-val való NLP-t kipróbálhatod a [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) oldalon. + +## GPU Figyelmeztetés + +Ebben a részben néhány példában meglehetősen nagy modelleket fogunk tanítani. +* **Használj GPU-val ellátott számítógépet**: Javasolt GPU-val ellátott számítógépen futtatni a jegyzetfüzeteket, hogy csökkentsük a várakozási időt nagy modellek esetén. +* **GPU memória korlátok**: GPU használata esetén előfordulhat, hogy kifogy a GPU memória, különösen nagy modellek tanítása során. +* **GPU memória fogyasztás**: A GPU memória fogyasztása a tanítás során számos tényezőtől függ, beleértve a minibatch méretét. +* **Minimális minibatch méret**: Ha GPU memória problémákba ütközöl, próbáld meg csökkenteni a minibatch méretét a kódban. +* **TensorFlow GPU memória felszabadítás**: A TensorFlow régebbi verziói nem mindig szabadítják fel megfelelően a GPU memóriát, ha több modellt tanítasz egy Python kernelben. A GPU memória hatékony kezeléséhez beállíthatod, hogy a TensorFlow csak szükség esetén foglaljon GPU memóriát. +* **Kód beillesztése**: A TensorFlow beállításához, hogy csak szükség esetén növelje a GPU memória foglalását, illeszd be az alábbi kódot a jegyzetfüzetedbe: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Ha érdekel az NLP klasszikus gépi tanulási perspektívából, látogasd meg [ezt a leckesorozatot](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## Ebben a részben +Ebben a részben megtanuljuk: + +* [Szöveg reprezentálása tensorokként](13-TextRep/README.md) +* [Szóbeágyazások](14-Emdeddings/README.md) +* [Nyelvi modellezés](15-LanguageModeling/README.md) +* [Rekurzív neurális hálózatok](16-RNN/README.md) +* [Generatív hálózatok](17-GenerativeNetworks/README.md) +* [Transformerek](18-Transformers/README.md) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/hu/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..f8ae73c1 --- /dev/null +++ b/translations/hu/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Genetikus Algoritmusok + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +A **Genetikus Algoritmusok** (GA) egy **evolúciós megközelítésen** alapulnak a mesterséges intelligenciában, amely során egy populáció evolúciós módszereit használjuk egy adott probléma optimális megoldásának megtalálására. Az ötletet 1975-ben [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) javasolta. + +A Genetikus Algoritmusok az alábbi alapelveken nyugszanak: + +* A probléma érvényes megoldásai **génekként** reprezentálhatók +* A **keresztezés** lehetővé teszi, hogy két megoldást kombináljunk, és egy új, érvényes megoldást kapjunk +* A **szelekció** segítségével a **fitness függvény** alapján kiválasztjuk az optimálisabb megoldásokat +* **Mutációkat** vezetünk be, hogy destabilizáljuk az optimalizálást, és elkerüljük a lokális minimumokat + +Ha Genetikus Algoritmust szeretnél megvalósítani, az alábbiakra van szükséged: + + * Meg kell találnod egy módszert, amellyel a probléma megoldásait **génekként** kódolhatod, g∈Γ + * A Γ génhalmazon definiálnod kell egy **fitness függvényt**, fit: Γ→**R**. A kisebb függvényértékek jobb megoldásokat jelentenek. + * Definiálnod kell egy **keresztezési** mechanizmust, amely két gént kombinálva új, érvényes megoldást ad crossover: Γ2→Γ. + * Definiálnod kell egy **mutációs** mechanizmust mutate: Γ→Γ. + +Sok esetben a keresztezés és a mutáció egyszerű algoritmusok, amelyek numerikus sorozatokkal vagy bitvektorokkal manipulálnak. + +A genetikus algoritmus konkrét megvalósítása esetről esetre változhat, de az általános struktúra a következő: + +1. Válassz egy kezdeti populációt G⊂Γ +2. Véletlenszerűen válaszd ki, hogy a következő lépésben melyik műveletet hajtod végre: keresztezés vagy mutáció +3. **Keresztezés**: + * Véletlenszerűen válassz ki két gént g1, g2 ∈ G + * Számítsd ki a keresztezést g=crossover(g1,g2) + * Ha fit(g)1) vagy fit(g)2), cseréld ki a populáció megfelelő génjét g-re. +4. **Mutáció** - válassz ki véletlenszerűen egy gént g∈G, és cseréld ki mutate(g)-re +5. Ismételd a 2. lépéstől, amíg el nem érünk egy elég kicsi fit értéket, vagy amíg el nem érjük a lépések maximális számát. + +## Tipikus Feladatok + +A Genetikus Algoritmusokkal általában az alábbi feladatokat oldják meg: + +1. Ütemezés optimalizálása +1. Optimális csomagolás +1. Optimális vágás +1. Kimerítő keresés felgyorsítása + +## ✍️ Gyakorlatok: Genetikus Algoritmusok + +Folytasd a tanulást az alábbi jegyzetfüzetekben: + +Nézd meg [ezt a jegyzetfüzetet](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), amely két példát mutat be a Genetikus Algoritmusok használatára: + +1. Kincs igazságos elosztása +1. 8 Királynő Probléma + +## Összegzés + +A Genetikus Algoritmusokat számos probléma megoldására használják, beleértve a logisztikai és keresési problémákat. A területet a pszichológia és a számítástechnika témáinak ötvözése inspirálta. + +## 🚀 Kihívás + +"A genetikus algoritmusok egyszerűen megvalósíthatók, de a viselkedésük nehezen érthető." [forrás](https://wikipedia.org/wiki/Genetic_algorithm) Kutass utána egy genetikus algoritmus megvalósításának, például egy Sudoku rejtvény megoldásának, és magyarázd el, hogyan működik, akár vázlatként, akár folyamatábraként. + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Áttekintés és Önálló Tanulás + +Nézd meg [ezt a nagyszerű videót](https://www.youtube.com/watch?v=qv6UVOQ0F44), amely bemutatja, hogyan tanulhat meg egy számítógép Super Mario-t játszani genetikus algoritmusokkal tanított neurális hálózatok segítségével. A következő részben [többet tanulunk arról, hogyan tanulnak a számítógépek ilyen játékokat játszani](../22-DeepRL/README.md). + +## [Feladat: Diofantikus Egyenlet](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +A célod egy úgynevezett **Diofantikus egyenlet** megoldása - egy olyan egyenleté, amelynek egész számú gyökei vannak. Például, tekintsük az a+2b+3c+4d=30 egyenletet. Meg kell találnod azokat az egész számú gyököket, amelyek kielégítik ezt az egyenletet. + +*Ezt a feladatot [ez az írás](https://habr.com/post/128704/) inspirálta.* + +Tippek: + +1. A gyököket tekintheted a [0;30] intervallumban +1. Génként használhatod a gyökértékek listáját + +Használd a [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) fájlt kiindulópontként. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget az ebből a fordításból eredő félreértésekért vagy téves értelmezésekért. \ No newline at end of file diff --git a/translations/hu/lessons/6-Other/22-DeepRL/README.md b/translations/hu/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..20005948 --- /dev/null +++ b/translations/hu/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Mély megerősítéses tanulás + +A megerősítéses tanulás (RL) az egyik alapvető gépi tanulási paradigma, a felügyelt tanulás és a nem felügyelt tanulás mellett. Míg a felügyelt tanulásnál ismert kimenetekkel rendelkező adathalmazra támaszkodunk, az RL a **cselekvés általi tanuláson** alapul. Például, amikor először látunk egy számítógépes játékot, elkezdünk játszani, még akkor is, ha nem ismerjük a szabályokat, és hamarosan képesek vagyunk javítani a képességeinken pusztán azáltal, hogy játszunk és alkalmazkodunk a viselkedésünkhöz. + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Az RL végrehajtásához szükségünk van: + +* Egy **környezetre** vagy **szimulátorra**, amely meghatározza a játék szabályait. Képesnek kell lennünk kísérleteket futtatni a szimulátorban, és megfigyelni az eredményeket. +* Valamilyen **jutalomfüggvényre**, amely jelzi, mennyire volt sikeres a kísérletünk. Számítógépes játék tanulása esetén a jutalom a végső pontszámunk lenne. + +A jutalomfüggvény alapján képesnek kell lennünk módosítani a viselkedésünket és javítani a képességeinken, hogy legközelebb jobban teljesítsünk. A fő különbség az RL és más gépi tanulási típusok között az, hogy az RL-ben általában nem tudjuk, hogy nyertünk-e vagy vesztettünk-e, amíg be nem fejezzük a játékot. Ezért nem mondhatjuk meg, hogy egy adott lépés önmagában jó-e vagy sem - csak a játék végén kapunk jutalmat. + +Az RL során általában sok kísérletet hajtunk végre. Minden kísérlet során egyensúlyozni kell az eddig tanult optimális stratégia követése (**kihasználás**) és az új lehetséges állapotok felfedezése (**felfedezés**) között. + +## OpenAI Gym + +Az RL-hez nagyszerű eszköz az [OpenAI Gym](https://gym.openai.com/) - egy **szimulációs környezet**, amely számos különböző környezetet képes szimulálni, az Atari játékoktól kezdve a fizikai egyensúlyozási problémákig. Ez az egyik legnépszerűbb szimulációs környezet a megerősítéses tanulási algoritmusok képzéséhez, és a [OpenAI](https://openai.com/) tartja karban. + +> **Note**: Az OpenAI Gym összes elérhető környezetét [itt](https://gym.openai.com/envs/#classic_control) tekintheti meg. + +## CartPole egyensúlyozás + +Valószínűleg mindannyian láttatok már modern egyensúlyozó eszközöket, mint például a *Segway* vagy *Gyroscooter*. Ezek képesek automatikusan egyensúlyozni, azáltal, hogy a kerekeiket az accelerométer vagy giroszkóp jeleire reagálva állítják be. Ebben a részben megtanuljuk, hogyan oldjunk meg egy hasonló problémát - egy rúd egyensúlyozását. Ez hasonló ahhoz a helyzethez, amikor egy cirkuszi előadó egy rudat próbál egyensúlyozni a kezén - de ez az egyensúlyozás csak 1D-ben történik. + +Az egyensúlyozás egyszerűsített változata **CartPole** problémaként ismert. A CartPole világban van egy vízszintes csúszka, amely balra vagy jobbra mozoghat, és a cél az, hogy egy függőleges rudat egyensúlyozzunk a csúszka tetején, miközben az mozog. + +egy cartpole + +Ennek a környezetnek a létrehozásához és használatához néhány Python kódsorra van szükség: + +```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}") +``` + +Minden környezet pontosan ugyanúgy érhető el: +* `env.reset` új kísérletet indít +* `env.step` szimulációs lépést hajt végre. Egy **akciót** kap az **akciótérből**, és visszaad egy **megfigyelést** (a megfigyelési térből), valamint egy jutalmat és egy befejezési jelzőt. + +A fenti példában minden lépésnél véletlenszerű akciót hajtunk végre, ezért a kísérlet élettartama nagyon rövid: + +![nem egyensúlyozó cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Az RL algoritmus célja egy modell - az úgynevezett **politika** π - képzése, amely az adott állapothoz tartozó akciót adja vissza. A politikát tekinthetjük valószínűségi modellnek is, például bármely állapot *s* és akció *a* esetén visszaadja a valószínűséget π(*a*|*s*), hogy az *s* állapotban az *a* akciót kellene végrehajtanunk. + +## Policy Gradients algoritmus + +A politika modellezésének legnyilvánvalóbb módja egy neurális hálózat létrehozása, amely bemenetként az állapotokat kapja, és visszaadja a megfelelő akciókat (pontosabban az összes akció valószínűségeit). Bizonyos értelemben ez hasonló lenne egy normál osztályozási feladathoz, egy jelentős különbséggel - előre nem tudjuk, hogy mely akciókat kellene végrehajtanunk az egyes lépésekben. + +Az ötlet itt az, hogy becsüljük meg ezeket a valószínűségeket. Létrehozunk egy **kumulatív jutalmak** vektort, amely megmutatja a kísérlet minden lépésénél elért teljes jutalmat. Emellett alkalmazunk **jutalom diszkontálást**, azaz a korábbi jutalmakat egy γ=0.99 együtthatóval szorozzuk meg, hogy csökkentsük a korábbi jutalmak szerepét. Ezután megerősítjük azokat a lépéseket a kísérleti útvonal mentén, amelyek nagyobb jutalmakat eredményeznek. + +> Tudjon meg többet a Policy Gradient algoritmusról, és nézze meg működés közben a [példa notebookban](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Actor-Critic algoritmus + +A Policy Gradients megközelítés továbbfejlesztett változata az **Actor-Critic**. A mögöttes fő ötlet az, hogy a neurális hálózatot két dolog visszaadására képezzük: + +* A politika, amely meghatározza, hogy melyik akciót kell végrehajtani. Ezt a részt **színésznek** (actor) nevezzük. +* Az állapotban várható teljes jutalom becslése - ezt a részt **kritikusnak** (critic) nevezzük. + +Bizonyos értelemben ez az architektúra hasonlít egy [GAN](../../4-ComputerVision/10-GANs/README.md)-ra, ahol két hálózatot egymás ellen képezünk. Az actor-critic modellben a színész javasolja a végrehajtandó akciót, míg a kritikus megpróbál kritikus lenni, és megbecsülni az eredményt. Azonban a célunk az, hogy ezeket a hálózatokat összhangban képezzük. + +Mivel ismerjük mind a valós kumulatív jutalmakat, mind a kritikus által a kísérlet során visszaadott eredményeket, viszonylag könnyű olyan veszteségfüggvényt létrehozni, amely minimalizálja a kettő közötti különbséget. Ez adja a **kritikus veszteséget**. Az **színész veszteséget** ugyanazzal a megközelítéssel számíthatjuk ki, mint a Policy Gradient algoritmusban. + +Egy ilyen algoritmus futtatása után elvárhatjuk, hogy a CartPole így viselkedjen: + +![egyensúlyozó cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Gyakorlatok: Policy Gradients és Actor-Critic RL + +Folytassa a tanulást az alábbi notebookokban: + +* [RL TensorFlow-ban](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL PyTorch-ban](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Egyéb RL feladatok + +A megerősítéses tanulás manapság gyorsan növekvő kutatási terület. Néhány érdekes példa a megerősítéses tanulásra: + +* Számítógép tanítása **Atari játékok** játszására. Ennek a problémának a kihívása, hogy nem egyszerű állapotot kapunk vektorként, hanem egy képernyőképet - és CNN-t kell használnunk, hogy ezt a képernyőképet vektorrá alakítsuk, vagy hogy jutalominformációt nyerjünk ki. Az Atari játékok elérhetők a Gym-ben. +* Számítógép tanítása táblás játékok, például sakk és go játszására. A legújabb csúcstechnológiás programok, mint például **Alpha Zero**, két ügynök egymás elleni játékával, és minden lépésnél való fejlődéssel lettek kiképezve. +* Az iparban az RL-t szimulációból származó vezérlőrendszerek létrehozására használják. Egy [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) nevű szolgáltatás kifejezetten erre lett tervezve. + +## Összegzés + +Most megtanultuk, hogyan képezzünk ügynököket, hogy jó eredményeket érjenek el pusztán azáltal, hogy egy jutalomfüggvényt biztosítunk nekik, amely meghatározza a játék kívánt állapotát, és lehetőséget adunk nekik az intelligens keresési tér felfedezésére. Sikeresen kipróbáltunk két algoritmust, és viszonylag rövid idő alatt jó eredményt értünk el. Ez azonban csak a kezdete az RL-be való utazásának, és mindenképpen érdemes egy külön tanfolyamot elvégezni, ha mélyebben szeretne belemerülni. + +## 🚀 Kihívás + +Fedezze fel az 'Egyéb RL feladatok' szakaszban felsorolt alkalmazásokat, és próbáljon meg egyet megvalósítani! + +## [Előadás utáni kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Áttekintés és önálló tanulás + +Tudjon meg többet a klasszikus megerősítéses tanulásról a [Machine Learning for Beginners Curriculum](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md) segítségével. + +Nézze meg [ezt a nagyszerű videót](https://www.youtube.com/watch?v=qv6UVOQ0F44), amely arról szól, hogyan tanulhat meg egy számítógép Super Mario-t játszani. + +## Feladat: [Train a Mountain Car](lab/README.md) + +A feladat során az lenne a célja, hogy egy másik Gym környezetet - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) - képezzen ki. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/6-Other/22-DeepRL/lab/README.md b/translations/hu/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..c3ef779f --- /dev/null +++ b/translations/hu/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## A környezet + +A Mountain Car környezet egy völgyben rekedt autóból áll. A célod az, hogy kiugorj a völgyből és elérd a zászlót. Az elérhető műveletek: gyorsítás balra, gyorsítás jobbra, vagy semmit sem csinálni. Megfigyelheted az autó helyzetét az x-tengely mentén, valamint a sebességét. + +## Kezdő notebook + +Kezdd el a labort a [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) megnyitásával. + +## Tanulság + +A labor során meg kell tanulnod, hogy az RL algoritmusok új környezethez való alkalmazása gyakran meglehetősen egyszerű, mivel az OpenAI Gym minden környezethez ugyanazt az interfészt biztosítja, és az algoritmusok jellemzően nem függenek nagymértékben a környezet természetétől. A Python kódot akár úgy is átszervezheted, hogy bármilyen környezetet paraméterként átadhass az RL algoritmusnak. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/6-Other/23-MultiagentSystems/README.md b/translations/hu/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..9db40b7c --- /dev/null +++ b/translations/hu/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,145 @@ + +# Többügynökös rendszerek + +Az intelligencia elérésének egyik lehetséges módja az úgynevezett **emergens** (vagy **szinergikus**) megközelítés, amely azon az elven alapul, hogy sok viszonylag egyszerű ügynök együttes viselkedése a rendszer egészének összetettebb (vagy intelligensebb) viselkedését eredményezheti. Elméletileg ez a [Kollektív intelligencia](https://en.wikipedia.org/wiki/Collective_intelligence), az [Emergentizmus](https://en.wikipedia.org/wiki/Global_brain) és az [Evolúciós kibernetika](https://en.wikipedia.org/wiki/Global_brain) elvein alapul, amelyek szerint a magasabb szintű rendszerek valamilyen hozzáadott értéket nyernek, ha megfelelően kombinálják őket alacsonyabb szintű rendszerekből (az úgynevezett *metarendszer-átmenet elve*). + +## [Előadás előtti kvíz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +A **többügynökös rendszerek** iránya az 1990-es években jelent meg a mesterséges intelligencia területén, válaszul az internet és az elosztott rendszerek növekedésére. Az egyik klasszikus mesterséges intelligencia tankönyv, az [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), a klasszikus mesterséges intelligencia szemléletét a többügynökös rendszerek nézőpontjából vizsgálja. + +A többügynökös megközelítés központi eleme az **ügynök** fogalma – egy olyan entitás, amely egy bizonyos **környezetben** él, amelyet érzékelni tud, és amelyre hatással lehet. Ez egy nagyon tág definíció, és számos különböző típusú és osztályozású ügynök létezhet: + +* Az érvelési képességük alapján: + - **Reaktív** ügynökök általában egyszerű kérés-válasz típusú viselkedést mutatnak + - **Deliberatív** ügynökök valamilyen logikai érvelési és/vagy tervezési képességet alkalmaznak +* Az alapján, hogy hol futtatják a kódjukat: + - **Statikus** ügynökök egy dedikált hálózati csomóponton működnek + - **Mobil** ügynökök képesek a kódjukat hálózati csomópontok között mozgatni +* A viselkedésük alapján: + - **Passzív ügynökök** nem rendelkeznek konkrét célokkal. Ezek az ügynökök reagálhatnak külső ingerekre, de maguktól nem kezdeményeznek cselekvést. + - **Aktív ügynökök** rendelkeznek bizonyos célokkal, amelyeket követnek + - **Kognitív ügynökök** összetett tervezést és érvelést alkalmaznak + +A többügynökös rendszereket manapság számos alkalmazásban használják: + +* Játékokban sok nem játékos karakter (NPC) valamilyen mesterséges intelligenciát alkalmaz, és intelligens ügynöknek tekinthető +* Videógyártásban a komplex 3D jelenetek renderelése, amelyek tömegeket tartalmaznak, tipikusan többügynökös szimulációval történik +* Rendszermodellezésben a többügynökös megközelítést használják egy komplex modell viselkedésének szimulálására. Például a többügynökös megközelítést sikeresen alkalmazták a COVID-19 betegség globális terjedésének előrejelzésére. Hasonló megközelítés alkalmazható egy város forgalmának modellezésére, és annak vizsgálatára, hogyan reagál a forgalmi szabályok változásaira. +* Komplex automatizálási rendszerekben minden eszköz független ügynökként működhet, ami az egész rendszert kevésbé monolitikussá és robusztusabbá teszi. + +Nem fogunk mélyen belemenni a többügynökös rendszerek részleteibe, de megvizsgálunk egy példát a **többügynökös modellezésre**. + +## NetLogo + +A [NetLogo](https://ccl.northwestern.edu/netlogo/) egy többügynökös modellezési környezet, amely a [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programozási nyelv módosított változatán alapul. Ezt a nyelvet eredetileg a programozási koncepciók tanítására fejlesztették ki gyerekek számára, és lehetővé teszi egy **teknős** nevű ügynök irányítását, amely mozoghat, és nyomot hagyhat maga után. Ez lehetővé teszi komplex geometriai alakzatok létrehozását, ami vizuális módon segíti az ügynök viselkedésének megértését. + +A NetLogo-ban sok teknőst hozhatunk létre a `create-turtles` parancs segítségével. Ezután utasíthatjuk az összes teknőst, hogy végezzen el bizonyos műveleteket (az alábbi példában - mozogjon előre 10 egységet): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Természetesen nem túl érdekes, ha minden teknős ugyanazt csinálja, ezért a `ask` parancs segítségével csoportokat is utasíthatunk, például azokat, amelyek egy bizonyos pont közelében vannak. Különböző *fajtájú* teknősöket is létrehozhatunk a `breed [cats cat]` paranccsal. Itt a `cat` a fajta neve, és meg kell adnunk az egyes és többes számú alakot is, mert a különböző parancsok az érthetőség érdekében különböző formákat használnak. + +> ✅ Nem fogunk belemenni a NetLogo nyelv tanulásába – ha érdekel, látogasd meg a kiváló [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) oldalt. + +A NetLogo-t [letöltheted](https://ccl.northwestern.edu/netlogo/download.shtml) és telepítheted, hogy kipróbáld. + +### Modellek könyvtára + +A NetLogo egyik nagyszerű tulajdonsága, hogy tartalmaz egy működő modellekből álló könyvtárat, amelyeket kipróbálhatsz. Lépj a **File → Models Library** menüpontra, és számos modellkategória közül választhatsz. + +NetLogo Models Library + +> Dmitry Soshnikov által készített képernyőkép a modellek könyvtáráról + +Megnyithatsz egy modellt, például **Biology → Flocking**. + +### Főbb elvek + +A modell megnyitása után a NetLogo fő képernyőjére kerülsz. Itt egy minta modell, amely a farkasok és juhok populációját írja le véges erőforrások (fű) mellett. + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.hu.png) + +> Dmitry Soshnikov által készített képernyőkép + +Ezen a képernyőn láthatod: + +* Az **Interfész** szekciót, amely tartalmazza: + - A fő mezőt, ahol az ügynökök élnek + - Különböző vezérlőelemeket: gombokat, csúszkákat stb. + - Grafikonokat, amelyeken a szimuláció paramétereit jelenítheted meg +* A **Kód** fület, amely tartalmazza a szerkesztőt, ahol a NetLogo programot írhatod + +A legtöbb esetben az interfész tartalmaz egy **Setup** gombot, amely inicializálja a szimuláció állapotát, és egy **Go** gombot, amely elindítja a végrehajtást. Ezeket a megfelelő kezelők kezelik a kódban, amelyek így néznek ki: + +``` +to go [ +... +] +``` + +A NetLogo világa a következő objektumokból áll: + +* **Ügynökök** (teknősök), amelyek mozoghatnak a mezőn, és végezhetnek valamilyen tevékenységet. Az ügynököket a `ask turtles [...]` szintaxissal utasíthatod, és a zárójelek közötti kódot minden ügynök *teknős módban* hajtja végre. +* **Foltok** (patches), amelyek a mező négyzet alakú területei, ahol az ügynökök élnek. Hivatkozhatsz az ugyanazon a folton lévő összes ügynökre, vagy megváltoztathatod a foltok színét és egyéb tulajdonságait. A foltokat is utasíthatod a `ask patches` paranccsal. +* **Megfigyelő** (observer), amely egy egyedi ügynök, és a világot irányítja. Az összes gombkezelő *megfigyelő módban* fut. + +> ✅ A többügynökös környezet szépsége abban rejlik, hogy a teknős módban vagy folt módban futó kódot az összes ügynök párhuzamosan hajtja végre. Így kevés kód megírásával és az egyes ügynökök viselkedésének programozásával komplex szimulációs rendszer viselkedését hozhatod létre. + +### Flocking + +A többügynökös viselkedés példájaként vizsgáljuk meg a **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** jelenséget. A Flocking egy összetett minta, amely nagyon hasonlít arra, ahogyan a madárrajok repülnek. Ha figyeled őket, azt gondolhatod, hogy valamilyen kollektív algoritmust követnek, vagy hogy valamilyen *kollektív intelligenciával* rendelkeznek. Azonban ez az összetett viselkedés akkor jön létre, amikor minden egyes ügynök (ebben az esetben egy *madár*) csak a közvetlen közelében lévő ügynököket figyeli, és három egyszerű szabályt követ: + +* **Igazodás** – az ügynök a szomszédos ügynökök átlagos irányába fordul +* **Kohézió** – az ügynök a szomszédok átlagos pozíciója felé próbál haladni (*hosszú távú vonzás*) +* **Elválás** – ha túl közel kerül más madarakhoz, távolodni próbál (*rövid távú taszítás*) + +Futtathatod a flocking példát, és megfigyelheted a viselkedést. Állíthatod a paramétereket is, például az *elválás mértékét* vagy a *látótávolságot*, amely meghatározza, hogy egy madár milyen messzire lát. Figyeld meg, hogy ha a látótávolságot 0-ra csökkented, minden madár megvakul, és a flocking megszűnik. Ha az elválást 0-ra csökkented, minden madár egy egyenes vonalba gyűlik. + +> ✅ Válts a **Kód** fülre, és nézd meg, hol vannak a flocking három szabálya (igazodás, kohézió és elválás) a kódban megvalósítva. Figyeld meg, hogy csak azokra az ügynökökre hivatkozunk, amelyek a látótávolságon belül vannak. + +### Egyéb modellek, amelyeket érdemes megnézni + +Van néhány további érdekes modell, amelyeket kipróbálhatsz: + +* **Art → Fireworks** bemutatja, hogyan tekinthető egy tűzijáték az egyes tűzcsóvák kollektív viselkedésének +* **Social Science → Traffic Basic** és **Social Science → Traffic Grid** bemutatja a városi forgalom modelljét 1D-ben és 2D rácson, lámpákkal vagy anélkül. Minden autó a következő szabályokat követi: + - Ha az előtte lévő hely üres – gyorsít (egy bizonyos maximális sebességig) + - Ha akadályt lát maga előtt – fékez (és állíthatod, hogy milyen messzire lát a sofőr) +* **Social Science → Party** bemutatja, hogyan csoportosulnak az emberek egy koktélpartin. Megtalálhatod azokat a paraméterkombinációkat, amelyek a csoport boldogságának leggyorsabb növekedéséhez vezetnek. + +Amint ezekből a példákból láthatod, a többügynökös szimulációk nagyon hasznosak lehetnek egy olyan komplex rendszer viselkedésének megértéséhez, amely egyénekből áll, akik ugyanazt vagy hasonló logikát követik. Használhatók virtuális ügynökök, például [NPC-k](https://en.wikipedia.org/wiki/NPC) irányítására számítógépes játékokban, vagy ügynökök irányítására 3D animált világokban. + +## Deliberatív ügynökök + +A fent leírt ügynökök nagyon egyszerűek, és valamilyen algoritmus segítségével reagálnak a környezet változásaira. Ezeket **reaktív ügynököknek** nevezzük. Azonban néha az ügynökök képesek érvelni és megtervezni a cselekvéseiket, ebben az esetben **deliberatív ügynököknek** nevezzük őket. + +Egy tipikus példa lehet egy személyes ügynök, amely egy embertől kapott utasítást, hogy foglaljon le egy nyaralási utat. Tegyük fel, hogy az interneten sok ügynök él, akik segíthetnek neki. Az ügynöknek kapcsolatba kell lépnie más ügynökökkel, hogy megtudja, milyen járatok érhetők el, milyen árakon érhetők el a szállodák különböző időpontokban, és meg kell próbálnia a legjobb árat kialkudni. Amikor a nyaralási terv elkészül és a tulajdonos jóváhagyja, az ügynök folytathatja a foglalást. + +Ehhez az ügynököknek **kommunikálniuk** kell. A sikeres kommunikációhoz szükségük van: + +* Valamilyen **szabványos nyelvre a tudás cseréjéhez**, például [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) és [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ezeket a nyelveket a [beszédaktus-elmélet](https://en.wikipedia.org/wiki/Speech_act) alapján tervezték. +* Ezeknek a nyelveknek tartalmazniuk kell valamilyen **tárgyalási protokollokat**, amelyek különböző **aukciótípusokon** alapulnak. +* Egy **közös ontológiára**, hogy ugyanazokra a fogalmakra hivatkozzanak, ismerve azok szemantikáját +* Egy módra, hogy **felfedezzék**, mit tudnak tenni a különböző ügynökök, szintén valamilyen ontológia alapján + +A deliberatív ügynökök sokkal összetettebbek, mint a reaktívak, mert nemcsak a környezet változásaira reagálnak, hanem képesek *kezdeményezni* is cselekvéseket. Az egyik javasolt architektúra a deliberatív ügynökökhöz az úgynevezett Hiedelem-Vágy-Szándék (Belief-Desire-Intention, BDI) ügynök: + +* **Hiedelmek** alkotják az ügynök környezetéről szóló tudásbázist. Ez lehet egy tudásbázis vagy szabályok halmaza, amelyeket az ügynök alkalmazhat egy adott helyzetre. +* **Vágyak** határozzák meg, hogy mit akar az ügynök elérni, azaz a céljait. Például a fent említett személyes asszisztens ügynök célja egy utazás lefoglalása, míg egy szállodai ügynök célja a profit maximalizálása. +* **Szándékok** azok a konkrét cselekvések, amelyeket az ügynök a céljai eléréséhez tervez. A cselekvések általában megváltoztatják a környezetet, + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/hu/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..65e66ea3 --- /dev/null +++ b/translations/hu/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# NetLogo Feladat + +Válassz egyet a NetLogo könyvtárában található modellek közül, és használd fel arra, hogy egy valós életbeli helyzetet a lehető legpontosabban szimulálj. Egy jó példa lehet, ha az Alternatív Vizualizációk mappában található Vírus modellt módosítod úgy, hogy bemutasd, hogyan használható a COVID-19 terjedésének modellezésére. Tudsz készíteni egy modellt, amely utánozza egy valódi vírus terjedését? + +Mutasd be a munkádat úgy, hogy elmented a módosított modellt, és készítesz egy videós bemutatót, amely elmagyarázza, hogyan kapcsolódik a modell egy valós életbeli helyzethez. + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár igyekszünk pontosságra törekedni, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/7-Ethics/README.md b/translations/hu/lessons/7-Ethics/README.md new file mode 100644 index 00000000..9cc2d22f --- /dev/null +++ b/translations/hu/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etikus és Felelős Mesterséges Intelligencia + +Majdnem befejezted ezt a kurzust, és remélem, hogy mostanra világosan látod, hogy a mesterséges intelligencia számos formális matematikai módszeren alapul, amelyek lehetővé teszik számunkra, hogy kapcsolatokat találjunk az adatokban, és modelleket képezzünk ki az emberi viselkedés bizonyos aspektusainak utánzására. A történelem ezen pontján a mesterséges intelligenciát egy nagyon erőteljes eszköznek tekintjük, amely segít mintázatokat kinyerni az adatokból, és ezeket a mintázatokat új problémák megoldására alkalmazni. + +## [Előadás előtti kvíz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +A tudományos fantasztikus irodalomban azonban gyakran találkozunk olyan történetekkel, ahol a mesterséges intelligencia veszélyt jelent az emberiségre. Ezek a történetek általában valamilyen mesterséges intelligencia-lázadás köré épülnek, amikor az MI úgy dönt, hogy szembeszáll az emberekkel. Ez azt sugallja, hogy az MI-nek valamilyen érzelmei vannak, vagy olyan döntéseket hozhat, amelyeket a fejlesztői nem láttak előre. + +Az a mesterséges intelligencia, amelyről ebben a kurzusban tanultunk, nem más, mint nagy mátrixszámítás. Ez egy nagyon erőteljes eszköz, amely segít megoldani a problémáinkat, és mint minden más erőteljes eszköz - jó és rossz célokra egyaránt használható. Fontos megjegyezni, hogy *visszaélhetnek* vele. + +## A Felelős Mesterséges Intelligencia Alapelvei + +Annak érdekében, hogy elkerüljük az MI véletlen vagy szándékos visszaélését, a Microsoft meghatározta a fontos [Felelős Mesterséges Intelligencia Alapelveket](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Az alábbi fogalmak képezik ezen alapelvek alapját: + +* **Méltányosság** a *modell torzítások* fontos problémájához kapcsolódik, amelyeket az okozhat, ha torzított adatokat használunk a tanításhoz. Például, ha megpróbáljuk megjósolni egy személy szoftverfejlesztői állásának valószínűségét, a modell valószínűleg nagyobb előnyben részesíti a férfiakat - egyszerűen azért, mert a tanító adathalmaz valószínűleg férfi közönségre volt torzítva. Gondosan egyensúlyba kell hoznunk a tanító adatokat, és meg kell vizsgálnunk a modellt, hogy elkerüljük a torzításokat, és biztosítsuk, hogy a modell relevánsabb jellemzőket vegyen figyelembe. +* **Megbízhatóság és biztonság**. Természetüknél fogva az MI modellek hibázhatnak. Egy neurális hálózat valószínűségeket ad vissza, és ezt figyelembe kell vennünk a döntéshozatal során. Minden modellnek van bizonyos pontossága és visszahívási aránya, és ezt meg kell értenünk, hogy megelőzzük a hibás tanácsok által okozott károkat. +* **Adatvédelem és biztonság** bizonyos MI-specifikus vonatkozásokkal bír. Például, amikor adatokat használunk egy modell tanításához, ezek az adatok valamilyen módon "beépülnek" a modellbe. Egyrészt ez növeli a biztonságot és az adatvédelmet, másrészt emlékeznünk kell arra, hogy milyen adatokkal tanítottuk a modellt. +* **Befogadás** azt jelenti, hogy nem azért építünk MI-t, hogy helyettesítsük az embereket, hanem hogy kiegészítsük őket, és kreatívabbá tegyük a munkánkat. Ez a méltányossághoz is kapcsolódik, mert amikor alulreprezentált közösségekkel foglalkozunk, a legtöbb általunk gyűjtött adathalmaz valószínűleg torzított, és biztosítanunk kell, hogy ezek a közösségek is be legyenek vonva, és helyesen kezelje őket az MI. +* **Átláthatóság**. Ez magában foglalja annak biztosítását, hogy mindig egyértelmű legyen, ha MI-t használunk. Továbbá, ahol csak lehetséges, olyan MI rendszereket szeretnénk használni, amelyek *értelmezhetők*. +* **Elszámoltathatóság**. Amikor az MI modellek bizonyos döntéseket hoznak, nem mindig világos, hogy ki a felelős ezekért a döntésekért. Biztosítanunk kell, hogy megértsük, hol rejlik az MI döntéseinek felelőssége. A legtöbb esetben azt szeretnénk, hogy emberek is részt vegyenek a fontos döntések meghozatalában, hogy ténylegesen emberek legyenek elszámoltathatók. + +## Eszközök a Felelős Mesterséges Intelligenciához + +A Microsoft kifejlesztette a [Felelős MI Eszköztárat](https://github.com/microsoft/responsible-ai-toolbox), amely egy sor eszközt tartalmaz: + +* Értelmezhetőségi Irányítópult (InterpretML) +* Méltányossági Irányítópult (FairLearn) +* Hibaanalízis Irányítópult +* Felelős MI Irányítópult, amely tartalmazza: + + - EconML - eszköz az Ok-okozati Elemzéshez, amely a "mi lenne, ha" kérdésekre összpontosít + - DiCE - eszköz az Ellentétes Elemzéshez, amely lehetővé teszi, hogy lássuk, mely jellemzőket kell megváltoztatni a modell döntésének befolyásolásához + +További információért az MI etikáról, kérlek látogasd meg [ezt a leckét](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) a Gépi Tanulás Tantervben, amely feladatokat is tartalmaz. + +## Áttekintés és Önálló Tanulás + +Végezd el ezt a [Tanulási Útvonalat](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), hogy többet megtudj a felelős MI-ről. + +## [Előadás utáni kvíz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/README.md b/translations/hu/lessons/README.md new file mode 100644 index 00000000..e97e7571 --- /dev/null +++ b/translations/hu/lessons/README.md @@ -0,0 +1,17 @@ + +# Áttekintés + +![Áttekintés egy rajzban](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.hu.png) + +> Vázlatrajz: [Tomomi Imura](https://twitter.com/girlie_mac) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/X-Extras/X1-MultiModal/README.md b/translations/hu/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..6cfb9606 --- /dev/null +++ b/translations/hu/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Multi-Modális Hálózatok + +A transzformer modellek sikerét követően az NLP feladatok megoldásában, hasonló architektúrákat kezdtek alkalmazni a számítógépes látás feladataira is. Egyre nagyobb az érdeklődés olyan modellek építése iránt, amelyek *kombinálják* a látás és a természetes nyelv feldolgozásának képességeit. Az egyik ilyen próbálkozás az OpenAI által készült CLIP és DALL.E. + +## Kontrasztív Képelőtanulás (CLIP) + +A CLIP fő ötlete, hogy képes legyen összehasonlítani szöveges utasításokat egy képpel, és meghatározni, mennyire felel meg a kép az utasításnak. + +![CLIP Architektúra](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.hu.png) + +> *Kép [ebből a blogbejegyzésből](https://openai.com/blog/clip/)* + +A modellt az internetről származó képeken és azok felirataival tanítják. Minden batch esetében N (kép, szöveg) párt veszünk, és ezeket valamilyen vektoriális reprezentációvá alakítjuk át I, ..., T formában. Ezeket a reprezentációkat ezután egymáshoz illesztjük. A veszteségfüggvény célja, hogy maximalizálja a koszinusz hasonlóságot az egy párhoz tartozó vektorok között (pl. I és T), és minimalizálja a koszinusz hasonlóságot az összes többi pár között. Ezért nevezik ezt a megközelítést **kontrasztívnak**. + +A CLIP modell/könyvtár elérhető az [OpenAI GitHub](https://github.com/openai/CLIP) oldalán. A megközelítést [ebben a blogbejegyzésben](https://openai.com/blog/clip/) ismertetik, részletesebben pedig [ebben a tanulmányban](https://arxiv.org/pdf/2103.00020.pdf). + +Miután a modellt betanították, megadhatunk neki egy batch képet és egy batch szöveges utasítást, és a kimenet egy valószínűségi tenzor lesz. A CLIP több feladatra is használható: + +**Képosztályozás** + +Tegyük fel, hogy képeket kell osztályoznunk például macskák, kutyák és emberek között. Ebben az esetben megadhatjuk a modellnek a képet, és egy sor szöveges utasítást: "*egy macska képe*", "*egy kutya képe*", "*egy ember képe*". A kapott 3 valószínűségi vektorban csak ki kell választanunk a legmagasabb értékű indexet. + +![CLIP Képosztályozáshoz](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.hu.png) + +> *Kép [ebből a blogbejegyzésből](https://openai.com/blog/clip/)* + +**Szöveg-alapú Képkeresés** + +Az ellenkezőjét is megtehetjük. Ha van egy képkollekciónk, átadhatjuk ezt a kollekciót a modellnek, valamint egy szöveges utasítást – ez megadja azt a képet, amely a legjobban hasonlít az adott utasításhoz. + +## ✍️ Példa: [CLIP használata képosztályozáshoz és képkereséshez](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Nyisd meg a [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebookot, hogy lásd a CLIP működését. + +## Képalkotás VQGAN+CLIP segítségével + +A CLIP **képalkotásra** is használható szöveges utasítás alapján. Ehhez szükség van egy **generátor modellre**, amely képes képeket generálni valamilyen vektoriális bemenet alapján. Az egyik ilyen modell a [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +A VQGAN főbb ötletei, amelyek megkülönböztetik a hagyományos [GAN](../../4-ComputerVision/10-GANs/README.md)-tól, a következők: +* Autoregresszív transzformer architektúra használata, amely kontextusban gazdag vizuális elemek sorozatát generálja, amelyek a képet alkotják. Ezeket a vizuális elemeket pedig [CNN](../../4-ComputerVision/07-ConvNets/README.md) tanulja meg. +* Alképrész-diszkriminátor használata, amely felismeri, hogy a kép részei "valósak" vagy "hamisak" (szemben a hagyományos GAN "mindent vagy semmit" megközelítésével). + +További információ a VQGAN-ról a [Taming Transformers](https://compvis.github.io/taming-transformers/) weboldalon található. + +A VQGAN és a hagyományos GAN egyik fontos különbsége, hogy az utóbbi bármilyen bemeneti vektorból képes elfogadható képet előállítani, míg a VQGAN valószínűleg nem koherens képet hoz létre. Ezért tovább kell irányítanunk a képalkotási folyamatot, amit a CLIP segítségével tehetünk meg. + +![VQGAN+CLIP Architektúra](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.hu.png) + +Ahhoz, hogy egy szöveges utasításhoz illeszkedő képet generáljunk, egy véletlenszerű kódoló vektorral kezdünk, amelyet a VQGAN-on keresztül egy képpé alakítunk. Ezután a CLIP-et használjuk egy veszteségfüggvény előállítására, amely megmutatja, mennyire felel meg a kép a szöveges utasításnak. A cél ennek a veszteségnek a minimalizálása, a visszaterjesztés segítségével a bemeneti vektor paramétereinek módosításával. + +Egy nagyszerű könyvtár, amely megvalósítja a VQGAN+CLIP-et, a [Pixray](http://github.com/pixray/pixray). + +![Pixray által készített kép](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.hu.png) | ![Pixray által készített kép](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.hu.png) | ![Pixray által készített kép](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.hu.png) +----|----|---- +Kép generálva az *egy fiatal irodalomtanár akvarell portréja könyvvel* utasítás alapján | Kép generálva az *egy fiatal női informatikatanár olajportréja számítógéppel* utasítás alapján | Kép generálva az *egy idős matematikatanár olajportréja táblával* utasítás alapján + +> Képek az **Artificial Teachers** gyűjteményből, [Dmitry Soshnikov](http://soshnikov.com) által + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +A DALL-E a GPT-3 egy változata, amelyet képek generálására tanítottak szöveges utasítások alapján. 12 milliárd paraméterrel lett betanítva. + +A CLIP-től eltérően a DALL-E egyszerre kapja meg a szöveget és a képet egyetlen tokenfolyamként. Ezért több utasításból képeket generálhatunk a szöveg alapján. + +### [DALL-E 2](https://openai.com/dall-e-2) +A DALL.E 1 és 2 közötti fő különbség, hogy a második verzió valósághűbb képeket és művészeti alkotásokat generál. + +Példák a DALL-E által generált képekre: +![DALL-E által készített kép](../../../../../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.hu.png) | ![DALL-E által készített kép](../../../../../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.hu.png) | ![DALL-E által készített kép](../../../../../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.hu.png) +----|----|---- +Kép generálva az *egy fiatal irodalomtanár akvarell portréja könyvvel* utasítás alapján | Kép generálva az *egy fiatal női informatikatanár olajportréja számítógéppel* utasítás alapján | Kép generálva az *egy idős matematikatanár olajportréja táblával* utasítás alapján + +## Hivatkozások + +* VQGAN tanulmány: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* CLIP tanulmány: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/sketchnotes/LICENSE.md b/translations/hu/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..eb47808b --- /dev/null +++ b/translations/hu/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,112 @@ + +Attribution-ShareAlike 4.0 Nemzetközi + +======================================================================= + +A Creative Commons Corporation ("Creative Commons") nem ügyvédi iroda, és nem nyújt jogi szolgáltatásokat vagy jogi tanácsokat. A Creative Commons nyilvános licencének terjesztése nem hoz létre ügyvéd-ügyfél vagy más kapcsolatot. A Creative Commons licencét és kapcsolódó információit "ahogy van" alapon teszi elérhetővé. A Creative Commons nem vállal garanciát licencére, a licenc feltételei szerint engedélyezett anyagokra vagy bármely kapcsolódó információra vonatkozóan. A Creative Commons a lehető legteljesebb mértékben elhárít minden felelősséget az ezek használatából eredő károkért. + +Creative Commons nyilvános licencek használata + +A Creative Commons nyilvános licencek szabványos feltételeket biztosítanak, amelyeket az alkotók és más jogtulajdonosok használhatnak szerzői jogvédelem alatt álló eredeti művek és más anyagok megosztására, valamint bizonyos jogokra, amelyeket az alábbi nyilvános licenc határoz meg. Az alábbi megfontolások csak tájékoztató jellegűek, nem teljes körűek, és nem képezik a licenc részét. + + Megfontolások licencadók számára: Nyilvános licencünk azok számára készült, akik jogosultak engedélyt adni a nyilvánosságnak az anyag olyan módon történő használatára, amelyet egyébként a szerzői jog és bizonyos más jogok korlátoznának. Licencünk visszavonhatatlan. A licencadóknak el kell olvasniuk és meg kell érteniük a választott licenc feltételeit, mielőtt alkalmaznák azt. A licencadóknak biztosítaniuk kell az összes szükséges jogot, mielőtt alkalmaznák licencünket, hogy a nyilvánosság az elvárásoknak megfelelően újrahasználhassa az anyagot. A licencadóknak egyértelműen meg kell jelölniük minden olyan anyagot, amely nem tartozik a licenc hatálya alá. Ez magában foglalja más CC-licencelt anyagokat vagy olyan anyagokat, amelyeket a szerzői jog alóli kivétel vagy korlátozás alapján használnak. További megfontolások licencadók számára: wiki.creativecommons.org/Considerations_for_licensors + + Megfontolások a nyilvánosság számára: A nyilvános licencünk használatával a licencadó engedélyt ad a nyilvánosságnak az engedélyezett anyag meghatározott feltételek szerinti használatára. Ha a licencadó engedélye valamilyen okból nem szükséges – például egy alkalmazandó szerzői jogi kivétel vagy korlátozás miatt –, akkor az ilyen használatot nem szabályozza a licenc. Licencünk csak a szerzői jog és bizonyos más jogok alapján biztosít engedélyeket, amelyeket a licencadó jogosult megadni. Az engedélyezett anyag használatát más okokból továbbra is korlátozhatják, például azért, mert másoknak szerzői joguk vagy más jogaik vannak az anyagban. A licencadó különleges kéréseket tehet, például kérheti, hogy minden módosítást jelöljenek meg vagy írjanak le. Bár licencünk nem követeli meg ezeket, ajánlott tiszteletben tartani az ilyen kéréseket, ha ésszerűek. További megfontolások a nyilvánosság számára: wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 Nemzetközi Nyilvános Licenc + +Az Engedélyezett Jogok (lent meghatározva) gyakorlásával Ön elfogadja és beleegyezik a Creative Commons Attribution-ShareAlike 4.0 Nemzetközi Nyilvános Licenc ("Nyilvános Licenc") feltételeibe. Amennyiben ez a Nyilvános Licenc szerződésként értelmezhető, az Engedélyezett Jogokat az Ön ezen feltételek elfogadásáért kapja, és a Licencadó az anyag elérhetővé tételével kapott előnyökért biztosítja Önnek ezeket a jogokat. + +1. szakasz – Fogalommeghatározások. + + a. Adaptált Anyag: Olyan anyag, amely szerzői jog és hasonló jogok hatálya alá tartozik, és amely az Engedélyezett Anyagból származik vagy azon alapul, és amelyben az Engedélyezett Anyagot lefordítják, átalakítják, elrendezik, átalakítják vagy más módon módosítják oly módon, hogy az a Licencadó szerzői jogi és hasonló jogai alapján engedélyt igényel. Ha az Engedélyezett Anyag zenei mű, előadás vagy hangfelvétel, az Adaptált Anyag mindig létrejön, ha az Engedélyezett Anyagot időben szinkronizálják mozgóképpel. + + b. Adapter Licenc: Az a licenc, amelyet Ön alkalmaz a szerzői jogi és hasonló jogaira az Adaptált Anyagban, a Nyilvános Licenc feltételeinek megfelelően. + + c. BY-SA Kompatibilis Licenc: Olyan licenc, amelyet a Creative Commons a creativecommons.org/compatiblelicenses oldalon felsorol, és amely lényegében egyenértékű ezzel a Nyilvános Licenccel. + + d. Szerzői jog és hasonló jogok: Szerzői jog és/vagy a szerzői joghoz szorosan kapcsolódó hasonló jogok, beleértve többek között az előadási, sugárzási, hangfelvételi és sui generis adatbázis-jogokat, függetlenül attól, hogy a jogokat hogyan nevezik vagy kategorizálják. A Nyilvános Licenc szempontjából a 2(b)(1)-(2) szakaszban meghatározott jogok nem minősülnek szerzői jog és hasonló jogoknak. + + e. Hatékony technológiai intézkedések: Olyan intézkedések, amelyeket megfelelő hatóság hiányában nem lehet megkerülni a WIPO Szerzői Jogi Egyezmény 1996. december 20-án elfogadott 11. cikkének és/vagy hasonló nemzetközi megállapodásoknak megfelelő törvények alapján. + + f. Kivételek és korlátozások: Méltányos használat, méltányos eljárás és/vagy bármely más kivétel vagy korlátozás a szerzői jog és hasonló jogok alól, amely az Engedélyezett Anyag használatára vonatkozik. + + g. Licenc Elemei: A Creative Commons Nyilvános Licenc nevében felsorolt licenc attribútumok. A Nyilvános Licenc Licenc Elemei az Attribution és a ShareAlike. + + h. Engedélyezett Anyag: Az a művészeti vagy irodalmi alkotás, adatbázis vagy más anyag, amelyre a Licencadó alkalmazta ezt a Nyilvános Licencet. + + i. Engedélyezett Jogok: Azok a jogok, amelyeket Ön a Nyilvános Licenc feltételei szerint kap, és amelyek korlátozódnak az Engedélyezett Anyag használatára vonatkozó szerzői jog és hasonló jogokra, amelyeket a Licencadó jogosult engedélyezni. + + j. Licencadó: Az(ok) az egyén(ek) vagy szervezet(ek), akik a jogokat biztosítják e Nyilvános Licenc alapján. + + k. Megosztás: Az anyag nyilvánosság számára történő elérhetővé tétele bármilyen módon vagy folyamatban, amely engedélyt igényel az Engedélyezett Jogok alapján, például sokszorosítás, nyilvános megjelenítés, nyilvános előadás, terjesztés, közvetítés, kommunikáció vagy importálás, valamint az anyag elérhetővé tétele a nyilvánosság számára, beleértve azokat a módokat, amelyek lehetővé teszik, hogy a nyilvánosság tagjai az anyagot egyénileg választott helyről és időben érjék el. + + l. Sui Generis Adatbázis-jogok: Olyan jogok, amelyek nem szerzői jogból származnak, és amelyek az Európai Parlament és a Tanács 1996. március 11-i 96/9/EK irányelvéből erednek az adatbázisok jogi védelméről, módosítva és/vagy utódjogszabályokkal, valamint más lényegében egyenértékű jogok bárhol a világon. + + m. Ön: Az a személy vagy szervezet, amely az Engedélyezett Jogokat gyakorolja e Nyilvános Licenc alapján. Az Ön kifejezésnek megfelelő jelentése van. + + +Jogok, majd az adatbázis, amelyben Önnek Sui Generis Adatbázis Jogai vannak (de nem az egyes tartalmai), Alkalmazott Anyagnak minősül, + +beleértve a 3(b) szakasz céljait is; és +c. Be kell tartania a 3(a) szakasz feltételeit, ha megosztja az adatbázis tartalmának egészét vagy jelentős részét. + +A félreértések elkerülése végett ez a 4. szakasz kiegészíti, és nem helyettesíti az Ön kötelezettségeit ezen Nyilvános Licenc alapján, ha az Engedélyezett Jogok más Szerzői Jogokat és Hasonló Jogokat is tartalmaznak. + +### 5. szakasz – Jótállás kizárása és felelősség korlátozása + +a. HACSAK A LICENCADÓ KÜLÖN NEM VÁLLALTA, AMENNYIBEN LEHETSÉGES, A LICENCADÓ AZ ENGEDÉLYEZETT ANYAGOT „AHOGY VAN” ÉS „AHOGY ELÉRHETŐ” ALAPON BIZTOSÍTJA, ÉS SEMMILYEN KIJELENTÉST VAGY GARANCIÁT NEM TESZ AZ ENGEDÉLYEZETT ANYAGGAL KAPCSOLATBAN, LEGYEN AZ KIFEJEZETT, VÉLELMEZETT, TÖRVÉNYI VAGY MÁS. EZ MAGÁBAN FOGLALJA, DE NEM KORLÁTOZÓDIK A TULAJDONJOGRA, FORGALOMKÉPESSÉGRE, ADOTT CÉLRA VALÓ ALKALMASSÁGRA, JOGSÉRTÉS HIÁNYÁRA, REJTETT VAGY MÁS HIBÁK HIÁNYÁRA, PONTOSSÁGRA, ILLETVE HIBÁK JELENLÉTÉRE VAGY HIÁNYÁRA, AKÁR ISMERT, AKÁR FELFEDEZHETŐ. AHOL A GARANCIÁK KIZÁRÁSA NEM ENGEDÉLYEZETT TELJES MÉRTÉKBEN VAGY RÉSZBEN, EZ A KIZÁRÁS ÖNRE NEM VONATKOZHAT. + +b. AMENNYIBEN LEHETSÉGES, A LICENCADÓ SEMMILYEN ESETBEN SEM FELEL ÖN FELÉ SEMMILYEN JOGI ALAPON (BELEÉRTVE, DE NEM KORLÁTOZVA A GONDATLANSÁGOT) VAGY MÁS MÓDON SEMMILYEN KÖZVETLEN, KÜLÖNLEGES, KÖZVETETT, JÁRULÉKOS, KÖVETKEZMÉNYES, BÜNTETŐ, PÉLDAÉRTÉKŰ VAGY MÁS VESZTESÉGÉRT, KÖLTSÉGÉRT, KIADÁSÉRT VAGY KÁRÉRT, AMELY EBBŐL A NYILVÁNOS LICENCBŐL VAGY AZ ENGEDÉLYEZETT ANYAG HASZNÁLATÁBÓL ERED, MÉG AKKOR SEM, HA A LICENCADÓT TÁJÉKOZTATTÁK AZ ILYEN VESZTESÉGEK, KÖLTSÉGEK, KIADÁSOK VAGY KÁROK LEHETŐSÉGÉRŐL. AHOL A FELELŐSSÉG KORLÁTOZÁSA NEM ENGEDÉLYEZETT TELJES MÉRTÉKBEN VAGY RÉSZBEN, EZ A KORLÁTOZÁS ÖNRE NEM VONATKOZHAT. + +c. A fentiekben biztosított jótállás kizárása és felelősség korlátozása úgy értelmezendő, hogy amennyire lehetséges, a lehető leginkább megközelíti az abszolút jótállás kizárását és minden felelősség lemondását. + +### 6. szakasz – Időtartam és megszűnés + +a. Ez a Nyilvános Licenc a licencelt Szerzői Jogok és Hasonló Jogok időtartamára vonatkozik. Azonban, ha Ön nem tartja be ezt a Nyilvános Licencet, akkor az Ön jogai e Nyilvános Licenc alapján automatikusan megszűnnek. + +b. Ha az Ön joga az Engedélyezett Anyag használatára a 6(a) szakasz alapján megszűnt, az újra érvénybe lép: + +1. automatikusan attól a naptól kezdve, amikor a jogsértés orvoslásra kerül, feltéve, hogy az orvoslás az Ön tudomására jutásától számított 30 napon belül megtörténik; vagy +2. a Licencadó kifejezett visszaállítása révén. + +A félreértések elkerülése végett ez a 6(b) szakasz nem érinti a Licencadó jogát arra, hogy jogorvoslatot keressen az Ön ezen Nyilvános Licenc megsértése miatt. + +c. A félreértések elkerülése végett a Licencadó az Engedélyezett Anyagot külön feltételek vagy kikötések alapján is kínálhatja, vagy bármikor leállíthatja az Engedélyezett Anyag terjesztését; azonban ez nem szünteti meg ezt a Nyilvános Licencet. + +d. Az 1., 5., 6., 7. és 8. szakaszok túlélnek e Nyilvános Licenc megszűnését. + +### 7. szakasz – Egyéb feltételek és kikötések + +a. A Licencadót nem kötik az Ön által közölt további vagy eltérő feltételek vagy kikötések, hacsak azokat kifejezetten el nem fogadja. + +b. Az Engedélyezett Anyaggal kapcsolatos bármely megállapodás, megértés vagy egyezség, amely itt nincs kifejtve, különálló és független e Nyilvános Licenc feltételeitől és kikötéseitől. + +### 8. szakasz – Értelmezés + +a. A félreértések elkerülése végett ez a Nyilvános Licenc nem csökkenti, korlátozza, szűkíti vagy szab feltételeket az Engedélyezett Anyag bármely olyan használatára, amely jogszerűen engedély nélkül is megvalósítható e Nyilvános Licenc alapján. + +b. Amennyiben lehetséges, ha e Nyilvános Licenc bármely rendelkezése végrehajthatatlannak minősül, azt automatikusan a minimálisan szükséges mértékben módosítani kell, hogy végrehajtható legyen. Ha a rendelkezés nem módosítható, azt el kell választani e Nyilvános Licenctől anélkül, hogy a fennmaradó feltételek és kikötések végrehajthatóságát befolyásolná. + +c. E Nyilvános Licenc egyetlen feltétele vagy kikötése sem tekinthető lemondottnak, és egyetlen nem teljesítés sem tekinthető elfogadottnak, hacsak a Licencadó kifejezetten el nem fogadja. + +d. E Nyilvános Licenc semmilyen rendelkezése nem minősülhet vagy értelmezhető úgy, hogy az a Licencadóra vagy Önre vonatkozó bármely joghatóság vagy hatóság jogi eljárásaival szembeni kiváltságok és mentességek korlátozását vagy lemondását jelenti. + +--- + +A Creative Commons nem részese a nyilvános licenceinek. Ennek ellenére a Creative Commons dönthet úgy, hogy valamely nyilvános licencét alkalmazza az általa közzétett anyagokra, és ezekben az esetekben „Licencadóként” tekintendő. A Creative Commons nyilvános licenceinek szövege a CC0 Nyilvános Tartomány Felajánlás keretében a köztulajdonnak van szentelve. Kivéve azt a korlátozott célt, hogy jelezze, hogy egy anyag Creative Commons nyilvános licenc alatt van megosztva, vagy ahogyan azt a Creative Commons által közzétett szabályzatok (creativecommons.org/policies) engedélyezik, a Creative Commons nem engedélyezi a „Creative Commons” védjegy vagy bármely más Creative Commons védjegy vagy logó használatát előzetes írásbeli hozzájárulása nélkül, beleértve, de nem kizárólagosan, a nyilvános licencek bármilyen jogosulatlan módosításával vagy az engedélyezett anyag használatával kapcsolatos egyéb megállapodásokkal, megértésekkel vagy egyezségekkel összefüggésben. A félreértések elkerülése végett ez a bekezdés nem képezi részét a nyilvános licenceknek. + +A Creative Commons elérhető a creativecommons.org oldalon. + +**Felelősség kizárása**: +Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/hu/lessons/sketchnotes/README.md b/translations/hu/lessons/sketchnotes/README.md new file mode 100644 index 00000000..1c52191f --- /dev/null +++ b/translations/hu/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Az összes tananyaghoz tartozó sketchnote itt tölthető le. + +🎨 Készítette: 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/) + +**Felelősség kizárása**: +Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet. \ No newline at end of file diff --git a/translations/my/README.md b/translations/my/README.md new file mode 100644 index 00000000..34708dd9 --- /dev/null +++ b/translations/my/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) + +# အခြေခံသိရှိရန်အတွက် အတတ်ပညာရပ် - သင်ခန်းစာများ + +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI For Beginners - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +**Artificial Intelligence** (AI) ရဲ့ ကမ္ဘာကို 12-ပတ်၊ 24-သင်ခန်းစာများဖြင့် လေ့လာပါ။ သင်ခန်းစာများ၊ မေးခွန်းများနှင့် လက်တွေ့လုပ်ငန်းများပါဝင်ပြီး အခြေခံသင်ယူသူများအတွက် သင့်လျော်သည်။ TensorFlow နှင့် PyTorch ကိရိယာများ၊ AI ရဲ့ စည်းကမ်းများကိုလည်း လေ့လာနိုင်ပါသည်။ + +## သင်လေ့လာနိုင်မည့်အရာများ + +**[သင်ခန်းစာများ၏ Mindmap](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +ဒီသင်ခန်းစာများတွင် သင်လေ့လာနိုင်မည့်အရာများမှာ - + +* **Artificial Intelligence** ရဲ့ အမျိုးမျိုးသောနည်းလမ်းများ၊ အထူးသဖြင့် **Knowledge Representation** နှင့် reasoning ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)) ကို အသုံးပြုသော "ရိုးရိုးလေး" symbolic နည်းလမ်းများ။ +* **Neural Networks** နှင့် **Deep Learning**၊ အခေတ်သစ် AI ရဲ့ အခြေခံဖြစ်သော နည်းလမ်းများ။ TensorFlow နှင့် PyTorch ကဲ့သို့သော framework နှစ်ခုကို အသုံးပြု၍ အဓိကအကြောင်းအရာများကို code ဖြင့် ရှင်းလင်းပြသမည်။ +* **Neural Architectures** ကို ရုပ်ပုံများနှင့် စာသားများအတွက် အသုံးပြုခြင်း။ နောက်ဆုံးပေါ်နည်းလမ်းများကို လေ့လာမည်ဖြစ်သော်လည်း အချို့နည်းလမ်းများမှာ နောက်ဆုံးပေါ်နည်းလမ်းများထက် နည်းနည်းနောက်ကျနိုင်သည်။ +* **Genetic Algorithms** နှင့် **Multi-Agent Systems** ကဲ့သို့သော နည်းလမ်းများကိုလည်း လေ့လာမည်။ + +ဒီသင်ခန်းစာများတွင် မပါဝင်မည့်အရာများ - + +> [ဒီသင်ခန်းစာများအတွက် Microsoft Learn collection မှ အပိုဆောင်းအရင်းအမြစ်များကို ရှာဖွေပါ](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* **AI in Business** ကို အသုံးပြုခြင်းဆိုင်ရာ စီးပွားရေးအခွက်အခွင်းများ။ [Introduction to AI for business users](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/) နှင့် ပူးပေါင်းဖွင့်လှစ်ထားသည်။ +* **Classic Machine Learning** ကို [Machine Learning for Beginners Curriculum](http://github.com/Microsoft/ML-for-Beginners) မှာ ရှင်းလင်းထားသည်။ +* **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)** ကို အသုံးပြု၍ AI လက်တွေ့အသုံးချမှုများ။ Microsoft Learn မှာ [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), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** နှင့် အခြား module များကို စတင်လေ့လာပါ။ +* **Cloud Frameworks** (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) ကို အသုံးပြု၍ သင်ခန်းစာများကို လေ့လာပါ။ +* **Conversational AI** နှင့် **Chat Bots**။ [Create conversational AI solutions](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum) သင်ခန်းစာများကို လေ့လာပါ၊ သို့မဟုတ် [ဒီ blog post](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) ကို အသေးစိတ်ဖတ်ရှုပါ။ +* **Deep Mathematics** (deep learning) အတွက် [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/) မှာလည်း ရရှိနိုင်ပါသည်။ + +_Cloud_ AI ကို စတင်လေ့လာရန် [Get started with artificial intelligence on Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) သင်ခန်းစာများကို လေ့လာပါ။ + +# အကြောင်းအရာ + +| | သင်ခန်းစာလင့်ခ် | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [သင်ခန်းစာများ စတင်ပြင်ဆင်ခြင်း](./lessons/0-course-setup/setup.md) | [သင့်ရဲ့ Development Environment ကို ပြင်ဆင်ပါ](./lessons/0-course-setup/how-to-run.md) | | +| I | [**AI ရဲ့ အကျဉ်းချုပ်**](./lessons/1-Intro/README.md) | | | +| 01 | [AI ရဲ့ သမိုင်းကြောင်းနှင့် အကျဉ်းချုပ်](./lessons/1-Intro/README.md) | - | - | +| II | **Symbolic AI** | +| 02 | [Knowledge Representation နှင့် Expert Systems](./lessons/2-Symbolic/README.md) | [Expert Systems](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 | [**Neural Networks ရဲ့ အကျဉ်းချုပ်**](./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 | [Multi-Layered Perceptron နှင့် ကိုယ်ပိုင် 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 | [Frameworks (PyTorch/TensorFlow) နှင့် 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 | [**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 | [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 | [ကြိုတင်သင်ကြားထားသောကွန်ယက်များနှင့် လွှဲပြောင်းသင်ကြားမှု](./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) | [Lab](./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 | [Generative Adversarial Networks နှင့် အနုပညာစတိုင်လွှဲပြောင်းမှု](./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) | [Lab](./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 | [အဓိပ္ပါယ်ဆိုင်ရာ စကားလုံး embedding များ။ 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 | [ဘာသာစကားမော်ဒယ်ဖွဲ့စည်းမှု။ ကိုယ်ပိုင် 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 | [ပြန်လည်ထပ်ဆင့်သော နယူးရယ်ကွန်ယက်များ](./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 | [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 | [အမည်ပေးထားသော အဖွဲ့အစည်းအသိအမှတ်ပြုမှု](./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 | [ကြီးမားသော ဘာသာစကားမော်ဒယ်များ၊ Prompt Programming နှင့် Few-Shot Tasks](./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 | [Genetic Algorithms](./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) | [Lab](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Multi-Agent Systems](./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 | [Multi-Modal Networks, 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 Notebooks များ၊ အများအားဖြင့် framework (**PyTorch** သို့မဟုတ် **TensorFlow**) အတွက် သီးသန့်ဖြစ်သည်။ ထို notebook များတွင် သီအိုရီဆိုင်ရာ အကြောင်းအရာများလည်း ပါဝင်ပြီး၊ ခေါင်းစဉ်ကို နားလည်ရန် notebook တစ်ခု (PyTorch သို့မဟုတ် TensorFlow) ကို အနည်းဆုံး လေ့လာရမည်။ +* **Labs** သင်ခန်းစာအချို့တွင် ရရှိနိုင်ပြီး သင်လေ့လာထားသော အကြောင်းအရာများကို သတ်မှတ်ပြဿနာတစ်ခုတွင် လက်တွေ့ကျင့်သုံးနိုင်ရန် အခွင့်အရေးပေးသည်။ +* အချို့သော အပိုင်းများတွင် [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) မှ ဆက်စပ်သော ခေါင်းစဉ်များကို ဖော်ပြထားသည်။ + +## စတင်ရန် + +- သင်၏ ဖွံ့ဖြိုးရေးပတ်ဝန်းကျင်ကို ပြင်ဆင်ရန် အကူအညီပေးသည့် [setup lesson](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) တစ်ခုကို ဖန်တီးထားပါသည်။ +- ဆရာများအတွက်လည်း [curricula setup lesson](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) အဆင့်များကို လိုက်နာပါ။ + +အဆင့်များကို လိုက်နာပါ: + +Repository ကို Fork လုပ်ပါ: ဒီစာမျက်နှာ၏ အပေါ်ယံညာဘက်တွင် "Fork" ခလုတ်ကို နှိပ်ပါ။ + +Repository ကို Clone လုပ်ပါ: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +ဒီ repo ကို နောက်ပိုင်းတွင် လွယ်ကူစွာ ရှာဖွေရန်အတွက် star (🌟) လုပ်ထားပါ။ + +## အခြား သင်ကြားသူများနှင့် တွေ့ဆုံပါ + +ဒီသင်တန်းကို လေ့လာနေသော အခြား သင်ကြားသူများနှင့် တွေ့ဆုံရန်နှင့် အထောက်အကူရရန် [တရားဝင် AI Discord server](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 တွင် ထည့်သွင်းထားပါသည်။ ၎င်းများကို သင်ခန်းစာများအတွင်းမှ ချိတ်ဆက်ထားပြီး၊ quiz app ကို ဒေသတွင်းတွင် အလုပ်လည်စေခြင်း သို့မဟုတ် Azure သို့ တင်သွင်းနိုင်ပါသည်။ `quiz-app` ဖိုလ်ဒါအတွင်းရှိ လမ်းညွှန်ချက်များကို လိုက်နာပါ။ ၎င်းများကို တဖြည်းဖြည်း ဒေသီဖြစ်အောင် ပြုလုပ်နေပါသည်။ +## အကူအညီလိုအပ်သည် + +သင်မှာ အကြံပြုချက်များရှိပါသလား၊ ဒါမှမဟုတ် စာလုံးပေါင်းအမှားများ သို့မဟုတ် ကုဒ်အမှားများ ရှာဖွေတွေ့ရှိပါသလား။ Issue တစ်ခုတင်ပေးပါ သို့မဟုတ် pull request တစ်ခု ဖန်တီးပေးပါ။ + +## အထူးကျေးဇူးတင်စကား + +* **✍️ အဓိကရေးသားသူ:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 တည်းဖြတ်သူ:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Sketchnote ပုံဆွဲသူ:** [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/my/SECURITY.md b/translations/my/SECURITY.md new file mode 100644 index 00000000..d5ad28ff --- /dev/null +++ b/translations/my/SECURITY.md @@ -0,0 +1,49 @@ + +## လုံခြုံရေး + +Microsoft သည် ၎င်း၏ ဆော့ဖ်ဝဲထုတ်ကုန်များနှင့် ဝန်ဆောင်မှုများ၏ လုံခြုံရေးကို အလေးထားဆောင်ရွက်ပြီး၊ ၎င်းတွင် [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/) အပါအဝင် GitHub အဖွဲ့အစည်းများမှ စီမံခန့်ခွဲထားသော အရင်းအမြစ်ကုဒ်ရုံများအားလုံး ပါဝင်သည်။ + +သင်သည် Microsoft ပိုင် GitHub ရုံတစ်ခုတွင် [Microsoft ၏ လုံခြုံရေးထိခိုက်မှု အဓိပ္ပါယ်ဖွင့်ဆိုချက်](https://aka.ms/opensource/security/definition) အတိုင်း လုံခြုံရေးထိခိုက်မှုတစ်ခု ရှာဖွေတွေ့ရှိခဲ့သည်ဟု ယုံကြည်ပါက၊ အောက်တွင် ဖော်ပြထားသည့်အတိုင်း ကျွန်ုပ်တို့ထံ အကြောင်းကြားပေးပါ။ + +## လုံခြုံရေးပြဿနာများ အကြောင်းကြားခြင်း + +**GitHub public issues မှတစ်ဆင့် လုံခြုံရေးထိခိုက်မှုများကို အကြောင်းမကြားပါနှင့်။** + +ထိုအစား 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 key ဖြင့် စာဝှက်နိုင်ပါက ပိုမိုကောင်းမွန်ပါမည်။ [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey) မှ ဒေါင်းလုဒ်လုပ်ပါ။ + +သင်သည် ၂၄ နာရီအတွင်း တုံ့ပြန်ချက်ရရှိမည်ဖြစ်သည်။ တစ်စုံတစ်ရာအကြောင်းကြောင့် မရရှိပါက၊ သင်၏မူရင်းစာကို ကျွန်ုပ်တို့ရရှိခဲ့ကြောင်း သေချာစေရန် အီးမေးလ်ဖြင့် ထပ်မံဆက်သွယ်ပါ။ အပိုဆောင်းအချက်အလက်များကို [microsoft.com/msrc](https://aka.ms/opensource/security/msrc) တွင် ရှာဖွေနိုင်ပါသည်။ + +ကျွန်ုပ်တို့အား အောက်ပါ အချက်အလက်များ (သင်ပေးနိုင်သလောက်) ပါဝင်စေရန် ကြိုးစားပါက၊ ပြဿနာ၏ သဘာဝနှင့် အကျယ်အဝန်းကို ပိုမိုနားလည်နိုင်စေပါမည်- + + * ပြဿနာအမျိုးအစား (ဥပမာ- buffer overflow, SQL injection, cross-site scripting, စသည်) + * ပြဿနာဖြစ်ပေါ်နေသော အရင်းအမြစ်ဖိုင်(များ)၏ လမ်းကြောင်းအပြည့်အစုံ + * ထိခိုက်မှုရှိသော အရင်းအမြစ်ကုဒ်၏ တည်နေရာ (tag/branch/commit သို့မဟုတ် တိုက်ရိုက် URL) + * ပြဿနာကို ထပ်မံဖြစ်ပေါ်စေရန် လိုအပ်သော အထူးဖွဲ့စည်းမှု + * ပြဿနာကို ထပ်မံဖြစ်ပေါ်စေရန် လိုက်နာရမည့် လှုပ်ရှားမှုအဆင့်များ + * Proof-of-concept သို့မဟုတ် exploit code (ဖြစ်နိုင်ပါက) + * ပြဿနာ၏ သက်ရောက်မှု၊ ထိုပြဿနာကို တိုက်ခိုက်သူက မည်သို့ အသုံးချနိုင်မည်ဖြစ်သည်ကို အပါအဝင် + +ဤအချက်အလက်များသည် သင်၏ အကြောင်းကြားချက်ကို ပိုမိုလျင်မြန်စွာ စီစဉ်နိုင်စေပါမည်။ + +သင်သည် bug bounty အတွက် အကြောင်းကြားနေပါက၊ အပြည့်အစုံသော အကြောင်းကြားချက်များသည် ပိုမိုမြင့်မားသော bounty ဆုငွေ ရရှိစေနိုင်ပါသည်။ ကျွန်ုပ်တို့၏ လက်ရှိအစီအစဉ်များအကြောင်း အသေးစိတ်ကို [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) စာမျက်နှာတွင် ကြည့်ရှုပါ။ + +## အကြိုက်ဆုံးဘာသာစကားများ + +ကျွန်ုပ်တို့သည် အားလုံးကို အင်္ဂလိပ်ဘာသာဖြင့် ဆက်သွယ်ရန် ပိုမိုနှစ်သက်ပါသည်။ + +## မူဝါဒ + +Microsoft သည် [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/my/etc/CODE_OF_CONDUCT.md b/translations/my/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..af30b943 --- /dev/null +++ b/translations/my/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoft Open Source Code of Conduct + +ဒီပရောဂျက်သည် [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) ကို လက်ခံထားပါသည်။ + +အရင်းအမြစ်များ: + +- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Code of Conduct 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/my/etc/CONTRIBUTING.md b/translations/my/etc/CONTRIBUTING.md new file mode 100644 index 00000000..aaaa95fb --- /dev/null +++ b/translations/my/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# အထောက်အပံ့ပေးခြင်း + +ဒီပရောဂျက်ဟာ အထောက်အပံ့ပေးမှုနဲ့ အကြံပြုချက်တွေကို ကြိုဆိုပါတယ်။ အများစုသော အထောက်အပံ့ပေးမှုတွေဟာ Contributor License Agreement (CLA) ကို သဘောတူဖို့ လိုအပ်ပါတယ်။ ဒါဟာ သင့်အနေဖြင့် သင့်အထောက်အပံ့ကို အသုံးပြုခွင့်ပေးဖို့ အခွင့်အရေးရှိတယ်၊ အမှန်တကယ်ပေးတယ်ဆိုတာကို ကြေညာတဲ့ အချက်လက်စာချုပ်တစ်ခုဖြစ်ပါတယ်။ အသေးစိတ်အချက်အလက်များကို https://cla.microsoft.com မှာ ကြည့်ရှုနိုင်ပါတယ်။ + +သင့်အနေဖြင့် pull request တင်သွင်းတဲ့အခါ CLA-bot က သင့်အနေဖြင့် CLA ပေးဖို့ လိုအပ်မလားဆိုတာကို အလိုအလျောက် စစ်ဆေးပြီး PR ကို သင့်တော်အောင် အမှတ်အသား (label) သို့မဟုတ် မှတ်ချက် (comment) ထည့်သွင်းပေးပါမယ်။ Bot ရဲ့ အညွှန်းချက်တွေကို လိုက်နာရုံပါပဲ။ CLA ကို သင့်အနေဖြင့် ကျွန်ုပ်တို့ CLA အသုံးပြုတဲ့ repository အားလုံးမှာ တစ်ခါတည်းပဲ လုပ်ရပါမယ်။ + +ဒီပရောဂျက်ဟာ [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) ကို ဆက်သွယ်နိုင်ပါတယ်။ + +# အထောက်အပံ့ပေးရန် ရှာဖွေနေခြင်း + +လက်ရှိတွင် ကျွန်ုပ်တို့ အောက်ပါအကြောင်းအရာများအတွက် အထောက်အပံ့ပေးမှုများကို တက်ကြွစွာ ရှာဖွေနေပါတယ်- + +- [ ] Deep Reinforcement Learning အပိုင်းရေးသားရန် +- [ ] Object Detection အပိုင်း + notebook ကို တိုးတက်အောင် ပြုပြင်ရန် +- [ ] PyTorch Lightning (ဒီအပိုင်းအတွက် [https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md](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/my/etc/Mindmap.md b/translations/my/etc/Mindmap.md new file mode 100644 index 00000000..4762ad02 --- /dev/null +++ b/translations/my/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 + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Symbolic 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) + - [Ontologies](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Semantic Web + +## [Neural Networks](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) + - [Multi-Layered Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [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) + - [Overfitting](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Computer Vision](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - MS Learn တွင် + - [AI Fundamentals: Computer Vision ကိုလေ့လာပါ](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [CV with PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [CV with TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Computer Vision မိတ်ဆက်. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Convolutional Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [CNN Architectures](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) + - [Training Tricks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders နှင့် VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generative Adversarial Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Style Transfer](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Object Detection](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentation](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Natural Language Processing](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 with PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP with 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 + - [Semantic Embeddings](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) + - [Recurrent Neural Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generative Recurrent Networks](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers နှင့် BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Named Entity Recognition](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) +## အခြားနည်းလမ်းများ + - [Genetic Algorithms](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) + - [Multi-Agent Systems](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) + - [MS Learn တွင် တာဝန်ရှိသော AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) +## အပိုဆောင်းများ + - [Multimodal Networks](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/my/etc/SUPPORT.md b/translations/my/etc/SUPPORT.md new file mode 100644 index 00000000..63aeebc4 --- /dev/null +++ b/translations/my/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/my/etc/TRANSLATIONS.md b/translations/my/etc/TRANSLATIONS.md new file mode 100644 index 00000000..994111ca --- /dev/null +++ b/translations/my/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# သင်ခန်းစာများကို ဘာသာပြန်ခြင်းဖြင့် အထောက်အကူပြုပါ + +ဒီသင်ခန်းစာများအတွက် ဘာသာပြန်မှုများကို ကြိုဆိုပါသည်! + +## လမ်းညွှန်ချက်များ + +သင်ခန်းစာ folder နှင့် သင်ခန်းစာမိတ်ဆက် folder တစ်ခုချင်းစီတွင် ဘာသာပြန်ထားသော markdown ဖိုင်များပါဝင်သည်။ + +> မှတ်ချက် - code sample ဖိုင်များအတွင်းရှိ code များကို ဘာသာပြန်မလုပ်ပါနှင့်။ ဘာသာပြန်ရန်လိုအပ်သောအရာများမှာ 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 ဖိုင်တွင် သင်၏ဘာသာစကား code ကို dropdown တွင် ထည့်ပါ။ + +3. quiz-app ရဲ့ [translations index.js ဖိုင်](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) ကို ပြင်ဆင်ပြီး သင်၏ဘာသာစကားကို ထည့်ပါ။ + +4. နောက်ဆုံးတွင် သင်ဘာသာပြန်ထားသော README.md ဖိုင်များအတွင်းရှိ quiz links အားလုံးကို သင်ဘာသာပြန်ထားသော 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/my/etc/quiz-app/README.md b/translations/my/etc/quiz-app/README.md new file mode 100644 index 00000000..9955f42d --- /dev/null +++ b/translations/my/etc/quiz-app/README.md @@ -0,0 +1,134 @@ + +# မေးခွန်းများ + +ဒီမေးခွန်းများဟာ AI သင်ခန်းစာများအတွက် [!NOTE] သင်ခန်းစာမတိုင်မီနှင့်ပြီးနောက် မေးခွန်းများဖြစ်ပါတယ်။ https://aka.ms/ai-beginners မှာတွေ့နိုင်ပါတယ်။ + +## ဘာသာပြန်ထားသော မေးခွန်းများထည့်သွင်းခြင်း + +ဘာသာပြန်ထားသော မေးခွန်းများကို `assets/translations` ဖိုလ်ဒါတွင် သက်ဆိုင်ရာ မေးခွန်းဖွဲ့စည်းမှုများကို ဖန်တီးခြင်းဖြင့် ထည့်သွင်းပါ။ အခြေခံမေးခွန်းများကို `assets/translations/en` တွင်ရှိပါတယ်။ မေးခွန်းများကို သင်ခန်းစာအလိုက် အုပ်စုများအဖြစ် ခွဲထားပြီး အမှတ်အသားများကို သက်ဆိုင်ရာ မေးခွန်းပိုင်းနှင့် ကိုက်ညီအောင် လိုက်လျောညီထွေစွာထားပါ။ ဒီသင်ခန်းစာမှာ စုစုပေါင်း 40 ခုရှိပြီး အရေအတွက်ကို 0 မှ စတင်ပါတယ်။ + +ဘာသာပြန်ထားသော မေးခွန်းများကို ပြင်ဆင်ပြီးနောက် `assets/translations` ဖိုလ်ဒါထဲမှာရှိတဲ့ `index.js` ဖိုင်ကို ပြင်ဆင်ပြီး `en` မှာရှိတဲ့ စံနည်းများအတိုင်း ဖိုင်များကို import လုပ်ပါ။ + +ထို့နောက် ဒီ app ရဲ့ `App.vue` ထဲမှာ dropdown ကို ပြင်ဆင်ပြီး သင့်ဘာသာစကားကို ထည့်သွင်းပါ။ ဘာသာပြန်ထားသော အတိုကောက်ကို သင့်ဘာသာစကားဖိုလ်ဒါနာမည်နှင့် ကိုက်ညီအောင်လုပ်ပါ။ + +နောက်ဆုံးမှာ ဘာသာပြန်ထားသော သင်ခန်းစာများရှိလျှင် မေးခွန်းလင့်ခ်များကို ပြင်ဆင်ပြီး localization ကို query parameter အနေနဲ့ ထည့်သွင်းပါ။ ဥပမာ `?loc=fr`။ + +## Project setup + +``` +npm install +``` + +### Development အတွက် Compiles နှင့် hot-reloads + +``` +npm run serve +``` + +### Production အတွက် Compiles နှင့် minifies + +``` +npm run build +``` + +### ဖိုင်များကို Lints နှင့် ပြင်ဆင်ခြင်း + +``` +npm run lint +``` + +### Configuration ကို Customize လုပ်ခြင်း + +[Configuration Reference](https://cli.vuejs.org/config/) ကိုကြည့်ပါ။ + +Credit: ဒီ quiz app ရဲ့ မူရင်းဗားရှင်းကို ဖန်တီးသူ https://github.com/arpan45/simple-quiz-vue + +## Azure တွင် Deploy လုပ်ခြင်း + +ဒီအဆင့်ဆင့်လမ်းညွှန်ကို အသုံးပြုပြီး စတင်နိုင်ပါသည်- + +1. GitHub Repository ကို Fork လုပ်ပါ +သင့် static web app code ကို သင့် GitHub repository ထဲမှာရှိအောင်လုပ်ပါ။ ဒီ repository ကို Fork လုပ်ပါ။ + +2. Azure Static Web App တစ်ခုဖန်တီးပါ +- [Azure account](http://azure.microsoft.com) တစ်ခုဖန်တီးပါ +- [Azure portal](https://portal.azure.com) ကိုသွားပါ +- “Create a resource” ကိုနှိပ်ပြီး “Static Web App” ကို ရှာပါ။ +- “Create” ကိုနှိပ်ပါ။ + +3. Static Web App ကို Configure လုပ်ပါ +- Basics: Subscription: သင့် Azure subscription ကို ရွေးပါ။ +- Resource Group: အသစ် resource group တစ်ခုဖန်တီးပါ သို့မဟုတ် ရှိပြီးသားကို အသုံးပြုပါ။ +- Name: သင့် static web app အတွက် နာမည်ပေးပါ။ +- Region: သင့်အသုံးပြုသူများနီးစပ်ရာဒေသကို ရွေးပါ။ + +- #### Deployment Details: +- Source: “GitHub” ကို ရွေးပါ။ +- GitHub Account: Azure ကို သင့် GitHub account ကို access လုပ်ခွင့်ပေးပါ။ +- Organization: သင့် GitHub organization ကို ရွေးပါ။ +- Repository: သင့် static web app ပါဝင်တဲ့ repository ကို ရွေးပါ။ +- Branch: Deploy လုပ်ချင်တဲ့ branch ကို ရွေးပါ။ + +- #### Build Details: +- Build Presets: သင့် app ဖန်တီးထားတဲ့ framework ကို ရွေးပါ (ဥပမာ React, Angular, Vue, စသည်တို့)။ +- App Location: သင့် app code ပါဝင်တဲ့ folder ကို ဖော်ပြပါ (ဥပမာ / သင့် root မှာရှိလျှင်)။ +- API Location: API ရှိလျှင် location ကို ဖော်ပြပါ (optional)။ +- Output Location: build output ဖိုင်များ ဖန်တီးထားတဲ့ folder ကို ဖော်ပြပါ (ဥပမာ build သို့မဟုတ် dist)။ + +4. Review နှင့် Create +သင့် settings ကို ပြန်လည်သုံးသပ်ပြီး “Create” ကိုနှိပ်ပါ။ Azure သက်ဆိုင်ရာ resources များကို ဖန်တီးပြီး သင့် repository ထဲမှာ GitHub Actions workflow တစ်ခု ဖန်တီးပါမည်။ + +5. GitHub Actions Workflow +Azure သင့် repository ထဲမှာ GitHub Actions workflow ဖိုင် (.github/workflows/azure-static-web-apps-.yml) ကို အလိုအလျောက် ဖန်တီးပါမည်။ ဒီ workflow က build နှင့် deployment လုပ်ငန်းစဉ်ကို စီမံပါမည်။ + +6. Deployment ကို Monitor လုပ်ပါ +သင့် GitHub repository ရဲ့ “Actions” tab ကိုသွားပါ။ +Workflow တစ်ခု run ဖြစ်နေသည်ကို တွေ့ရပါမည်။ ဒီ workflow က သင့် static web app ကို Azure တွင် build နှင့် deploy လုပ်ပါမည်။ +Workflow ပြီးဆုံးပြီးနောက် သင့် app ကို Azure URL မှာ live ဖြစ်နေပါမည်။ + +### Workflow ဖိုင် ဥပမာ + +GitHub Actions workflow ဖိုင်ရဲ့ ဥပမာကို အောက်မှာကြည့်ပါ: +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 +``` + +### အပိုဆောင်း Resources +- [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/my/lessons/0-course-setup/for-teachers.md b/translations/my/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..8dd833ba --- /dev/null +++ b/translations/my/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# ဆရာများအတွက် + +ဒီသင်ရိုးကို သင့်အတန်းထဲမှာ အသုံးပြုချင်ပါသလား? ကျေးဇူးပြု၍ အသုံးပြုလိုက်ပါ။ + +사실상, GitHub Classroom ကို အသုံးပြုပြီး GitHub ထဲမှာတင် အသုံးပြုနိုင်ပါတယ်။ + +ဒါလုပ်ဖို့အတွက်, ဒီ repo ကို fork လုပ်ပါ။ သင့်အနေနဲ့ သင်ခန်းစာတစ်ခုစီအတွက် repo တစ်ခုဖန်တီးရန် လိုအပ်မည်ဖြစ်ပြီး, folder တစ်ခုစီကို သီးခြား repo အဖြစ် ထုတ်ယူရမည်ဖြစ်သည်။ ဒီလိုလုပ်ရင် [GitHub Classroom](https://classroom.github.com/classrooms) က သင်ခန်းစာတစ်ခုစီကို သီးခြားစီ ရယူနိုင်မည်ဖြစ်သည်။ + +ဒီ [လမ်းညွှန်ချက်အပြည့်အစုံ](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) က သင့်အတန်းကို ဘယ်လိုစီစဉ်ရမယ်ဆိုတာ အကြံဉာဏ်ပေးပါလိမ့်မယ်။ + +## Repo ကို လက်ရှိအတိုင်း အသုံးပြုခြင်း + +GitHub Classroom ကို အသုံးမပြုဘဲ, ဒီ repo ကို လက်ရှိအတိုင်း အသုံးပြုချင်တယ်ဆိုရင်လည်း, အဲဒါလည်း လုပ်နိုင်ပါတယ်။ သင့်အနေနဲ့ သင့်ကျောင်းသားများကို ဘယ်သင်ခန်းစာကို အတူတူ လေ့လာရမယ်ဆိုတာ ဆက်သွယ်ပေးရမည်ဖြစ်သည်။ + +အွန်လိုင်းပုံစံ (Zoom, Teams, သို့မဟုတ် အခြား) မှာ, quizzes အတွက် breakout rooms ဖွဲ့ပြီး, ကျောင်းသားများကို သင်ကြားရန် ပြင်ဆင်စေဖို့ mentor လုပ်နိုင်ပါတယ်။ ပြီးရင်, ကျောင်းသားများကို quizzes အတွက် ဖိတ်ခေါ်ပြီး, 'issues' အနေနဲ့ အချိန်တစ်ခုမှာ ဖြေဆိုမှုတင်ပြစေပါ။ သင့်အနေနဲ့, assignments တွေကိုလည်း အတူတူ လုပ်ဆောင်စေချင်တယ်ဆိုရင်, ကျောင်းသားများကို ဖွင့်လှစ်ထားတဲ့ပုံစံနဲ့ အလုပ်လုပ်စေပါ။ + +ပိုပြီး ပုဂ္ဂလိကပုံစံကို သင်ကြိုက်တယ်ဆိုရင်, သင့်ကျောင်းသားများကို သင်ရိုးကို lesson တစ်ခုစီအလိုက် သူတို့ရဲ့ GitHub repos တွေကို private repos အဖြစ် fork လုပ်စေပြီး, သင့်ကို access ပေးစေပါ။ ပြီးရင်, သူတို့ quizzes နဲ့ assignments တွေကို ပုဂ္ဂလိကပုံစံနဲ့ ပြီးစီးပြီး, သင့် classroom repo မှာ issues အနေနဲ့ တင်ပြနိုင်ပါမည်။ + +အွန်လိုင်းအတန်းပုံစံမှာ ဒီကို အလုပ်လုပ်စေဖို့ နည်းလမ်းများစွာ ရှိပါတယ်။ သင့်အတွက် အကောင်းဆုံး အလုပ်လုပ်တဲ့နည်းလမ်းကို ကျွန်တော်တို့ကို ပြန်ပြောပေးပါ။ + +## ကျွန်တော်တို့ကို သင့်အကြံပြုချက်ပေးပါ + +ဒီသင်ရိုးကို သင်နဲ့ သင့်ကျောင်းသားများအတွက် အကောင်းဆုံးဖြစ်စေချင်ပါတယ်။ Discussion boards မှာ သင့်အကြံပြုချက်တွေ ပေးပို့ပါ! + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွဲအချော်အချော်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/0-course-setup/how-to-run.md b/translations/my/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..5da6ff36 --- /dev/null +++ b/translations/my/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# ကုဒ်ကို အလုပ်လုပ်စေခြင်း + +ဒီသင်ခန်းစာမှာ သင်လုပ်ဆောင်လိုတဲ့ အလုပ်လုပ်နိုင်တဲ့ နမူနာများနဲ့ လက်တွေ့လေ့ကျင့်ခန်းများ ပါဝင်ပါတယ်။ ဒါကို အလုပ်လုပ်စေဖို့အတွက် Python ကုဒ်ကို Jupyter Notebooks မှာ အလုပ်လုပ်နိုင်ဖို့ လိုအပ်ပါတယ်။ သင့်မှာ ကုဒ်ကို အလုပ်လုပ်စေဖို့ အနည်းဆုံး အောက်ပါနည်းလမ်းများ ရှိပါတယ်: + +## သင့်ကွန်ပျူတာမှာ တိုက်ရိုက် အလုပ်လုပ်စေခြင်း + +သင့်ကွန်ပျူတာမှာ တိုက်ရိုက် အလုပ်လုပ်စေဖို့ Python ရဲ့ အချို့သော version တစ်ခုခုကို ထည့်သွင်းထားဖို့ လိုအပ်ပါတယ်။ **[miniconda](https://conda.io/en/latest/miniconda.html)** ကို ထည့်သွင်းဖို့ အကြံပြုပါတယ် - ဒါဟာ `conda` package manager ကို အသုံးပြုနိုင်တဲ့ Python **virtual environments** အတွက် အလွန်ပေါ့ပါးတဲ့ installation ဖြစ်ပါတယ်။ + +miniconda ကို ထည့်သွင်းပြီးနောက် သင့်မှာ repository ကို clone လုပ်ပြီး ဒီသင်ခန်းစာအတွက် အသုံးပြုမယ့် 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**: သင် repository ကို clone လုပ်ပြီး VS Code မှာ directory ကို ဖွင့်တဲ့အခါ Python extensions ကို ထည့်သွင်းဖို့ အလိုအလျောက် အကြံပြုပါလိမ့်မယ်။ Miniconda ကို အထက်မှာ ဖော်ပြထားတဲ့အတိုင်း ထည့်သွင်းဖို့လည်း လိုအပ်ပါတယ်။ + +> **Note**: VS Code က repository ကို container မှာ ပြန်ဖွင့်ဖို့ အကြံပြုလျှင်၊ local Python installation ကို အသုံးပြုဖို့ container ကို ဖွင့်ခြင်းကို ငြင်းပယ်ဖို့ လိုအပ်ပါတယ်။ + +### Browser မှာ Jupyter ကို အသုံးပြုခြင်း + +သင့်ကွန်ပျူတာမှာ Browser မှာ Jupyter environment ကို အသုံးပြုနိုင်ပါတယ်။ အမှန်အားဖြင့် classical Jupyter နဲ့ Jupyter Hub နှစ်ခုလုံးမှာ auto-completion, code highlighting စတဲ့ အဆင်ပြေတဲ့ development environment တွေ ရှိပါတယ်။ + +Jupyter ကို locally စတင်ဖို့ သင့်သင်ခန်းစာ directory ကို သွားပြီး အောက်ပါ command ကို အလုပ်လုပ်စေပါ: + +```bash +jupyter notebook +``` +or +```bash +jupyterhub +``` +ပြီးရင် `.ipynb` ဖိုင်တွေကို သွားပြီး ဖွင့်ပြီး အလုပ်လုပ်နိုင်ပါပြီ။ + +### Container မှာ အလုပ်လုပ်စေခြင်း + +Python installation ကို အစားထိုးတဲ့ နည်းလမ်းတစ်ခုက container မှာ အလုပ်လုပ်စေခြင်းဖြစ်ပါတယ်။ ကျွန်တော်တို့ရဲ့ repository မှာ `.devcontainer` folder ပါဝင်ပြီး ဒီ repo အတွက် container ကို ဘယ်လို build လုပ်မလဲဆိုတာကို သတ်မှတ်ထားပါတယ်။ ဒါကြောင့် VS Code က code ကို container မှာ ပြန်ဖွင့်ဖို့ အကြံပြုပါလိမ့်မယ်။ ဒါကို အသုံးပြုဖို့ Docker installation လိုအပ်ပြီး အနည်းငယ် ပိုရှုပ်ထွေးပါတယ်၊ ဒါကြောင့် အတွေ့အကြုံရှိတဲ့ အသုံးပြုသူများအတွက် အကြံပြုပါတယ်။ + +## Cloud မှာ အလုပ်လုပ်စေခြင်း + +Python ကို locally ထည့်သွင်းချင်မရင်၊ Cloud resources ရှိရင် Cloud မှာ အလုပ်လုပ်စေဖို့ ကောင်းတဲ့ နည်းလမ်းတစ်ခုလည်း ရှိပါတယ်။ အောက်ပါနည်းလမ်းများကို အသုံးပြုနိုင်ပါတယ်: + +* **[GitHub Codespaces](https://github.com/features/codespaces)** ကို အသုံးပြုခြင်း။ ဒါဟာ GitHub မှာ သင့်အတွက် ဖန်တီးထားတဲ့ virtual environment ဖြစ်ပြီး VS Code browser interface မှတစ်ဆင့် အသုံးပြုနိုင်ပါတယ်။ Codespaces ရှိရင် repo မှာ **Code** button ကို click လုပ်ပြီး codespace ကို စတင်နိုင်ပါတယ်၊ အချိန်မရွေး အလုပ်လုပ်နိုင်ပါပြီ။ +* **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)** ကို အသုံးပြုခြင်း။ [Binder](https://mybinder.org) ဟာ GitHub မှာ code တွေကို စမ်းသပ်ဖို့ Cloud မှာ အခမဲ့ computing resources ပေးတဲ့ နည်းလမ်းဖြစ်ပါတယ်။ Repository ရဲ့ front page မှာ Binder ကို ဖွင့်ဖို့ button ရှိပါတယ် - ဒါဟာ binder site ကို အလွယ်တကူ ပို့ပြီး underlying container ကို build လုပ်ပြီး Jupyter web interface ကို seamless အဖြစ် စတင်ပေးပါလိမ့်မယ်။ + +> **Note**: Binder ဟာ အချို့ web resources ကို အသုံးချမှုကို ကန့်သတ်ထားပါတယ်။ ဒါဟာ public Internet မှာ models နဲ့ datasets တွေကို fetch လုပ်တဲ့ code တွေ အလုပ်မလုပ်နိုင်စေပါလိမ့်မယ်။ Workarounds တွေ ရှာဖွေရန် လိုအပ်နိုင်ပါတယ်။ Binder မှာ ပေးထားတဲ့ compute resources တွေက အခြေခံဖြစ်ပြီး training အလွန်နှေးပါလိမ့်မယ်၊ အထူးသဖြင့် နောက်ပိုင်းမှာ ရှုပ်ထွေးတဲ့ သင်ခန်းစာတွေမှာ။ + +## GPU ပါဝင်တဲ့ Cloud မှာ အလုပ်လုပ်စေခြင်း + +ဒီသင်ခန်းစာရဲ့ နောက်ပိုင်းမှာ GPU support ရှိရင် training အလွန်မြန်နိုင်ပါတယ်၊ မဟုတ်ရင် training အလွန်နှေးပါလိမ့်မယ်။ သင့်မှာ Cloud ကို [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 မှတစ်ဆင့် ချိတ်ဆက်ပါ။ Repo ကို machine မှာ တိုက်ရိုက် clone လုပ်ပြီး သင့်သင်ခန်းစာကို စတင်နိုင်ပါတယ်။ NC-series VMs တွေမှာ GPU support ရှိပါတယ်။ + +> **Note**: Azure for Students အပါအဝင် subscription အချို့မှာ GPU support ကို အလိုအလျောက် မပေးထားပါဘူး။ GPU cores အပိုတောင်းဖို့ technical support request တင်ဖို့ လိုအပ်နိုင်ပါတယ်။ + +* [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) ကို ဖန်တီးပြီး Notebook feature ကို အသုံးပြုပါ။ [ဒီဗီဒီယို](https://azure-for-academics.github.io/quickstart/azureml-papers/) မှာ Azure ML notebook မှာ repository ကို clone လုပ်ပြီး အသုံးပြုပုံကို ပြထားပါတယ်။ + +Google Colab ကိုလည်း အသုံးပြုနိုင်ပြီး အခမဲ့ GPU support ပါဝင်ပါတယ်၊ Jupyter Notebooks တွေကို upload လုပ်ပြီး တစ်ခုချင်းစီကို အလုပ်လုပ်စေပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် ရှုလေ့လာသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားယူမှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/0-course-setup/setup.md b/translations/my/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..67b8931d --- /dev/null +++ b/translations/my/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# ဒီသင်ခန်းစာများကို စတင်အသုံးပြုခြင်း + +## သင်သည် ကျောင်းသားတစ်ဦးဖြစ်ပါသလား? + +အောက်ပါအရင်းအမြစ်များနှင့် စတင်ပါ: + +* [Student Hub page](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) ဒီစာမျက်နှာတွင် စတင်လေ့လာသူများအတွက် အရင်းအမြစ်များ၊ ကျောင်းသားအထုပ်များနှင့် အခမဲ့လက်မှတ်ရယူနိုင်သောနည်းလမ်းများကို တွေ့နိုင်ပါသည်။ ကျွန်ုပ်တို့သည် အနည်းဆုံးလစဉ်အကြိမ်ကြိမ်အကြောင်းအရာများကို ပြောင်းလဲသည့်အတွက် ဒီစာမျက်နှာကို Bookmark လုပ်ပြီး အချိန်အခါကြိုက်သလို ပြန်လည်ကြည့်ရှုပါ။ +* [Microsoft Student Learn ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) ကျောင်းသားသံတမန်များ၏ ကမ္ဘာလုံးဆိုင်ရာအသိုင်းအဝိုင်းကို ဝင်ရောက်ပါ၊ Microsoft သို့ ဝင်ရောက်ရန် သင့်အတွက် နည်းလမ်းတစ်ခုဖြစ်နိုင်ပါသည်။ + +**ကျောင်းသားများ**၊ ဒီသင်ခန်းစာများကို အသုံးပြုရန် နည်းလမ်းအချို့ရှိပါသည်။ ပထမဦးဆုံး GitHub တွင် တိုက်ရိုက်စာသားများကို ဖတ်ရှုပြီး ကုဒ်များကို ကြည့်ရှုနိုင်ပါသည်။ သင် notebook များတွင် ကုဒ်များကို run လုပ်လိုပါက - [ကျွန်ုပ်တို့၏ညွှန်ကြားချက်များကို ဖတ်ရှုပါ](./etc/how-to-run.md)၊ ထို့အပြင် [ဒီ blog post](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) တွင် နည်းလမ်းများကို ရှာဖွေပါ။ + +> **Note**: [ဒီသင်ခန်းစာများတွင် ကုဒ်များကို run လုပ်ရန် ညွှန်ကြားချက်များ](./how-to-run.md) + +## ကိုယ်တိုင်လေ့လာခြင်း + +သို့သော် သင်သည် ဒီသင်ခန်းစာကို ကိုယ်တိုင်လေ့လာမှုစီမံကိန်းအဖြစ် လေ့လာလိုပါက၊ repo အားလုံးကို သင့် GitHub အကောင့်သို့ fork လုပ်ပြီး ကိုယ်တိုင် (သို့) အဖွဲ့ဖြင့် လေ့ကျင့်ခန်းများကို ပြီးမြောက်ပါ: + +* သင်ခန်းစာမတိုင်မီ quiz ကို စတင်ပါ။ +* သင်ခန်းစာအတွက် အကျဉ်းချုပ်စာသားကို ဖတ်ရှုပါ။ +* သင်ခန်းစာတွင် ထပ်ဆောင်း notebook များပါရှိပါက၊ ကုဒ်များကို ဖတ်ရှုပြီး run လုပ်ပါ။ TensorFlow နှင့် PyTorch notebook နှစ်ခုလုံးပါရှိပါက၊ သင့်အကြိုက်ဆုံး framework ကို ရွေးချယ်ပြီး အာရုံစိုက်နိုင်ပါသည်။ +* Notebook များတွင် ကုဒ်ကို အနည်းငယ်ပြောင်းလဲရန် လိုအပ်သော စိန်ခေါ်မှုများပါရှိတတ်သည်။ +* သင်ခန်းစာပြီးဆုံးပြီးနောက် quiz ကို ပြုလုပ်ပါ။ +* module နှင့် ဆက်စပ်သော lab ရှိပါက - လုပ်ငန်းကို ပြီးမြောက်ပါ။ +* [Discussion board](https://github.com/microsoft/AI-For-Beginners/discussions) သို့ သွားရောက်ပြီး "learn out loud" လုပ်ပါ။ + +> ထပ်မံလေ့လာရန်အတွက် [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) module များနှင့် learning path များကို လိုက်နာရန် အကြံပြုပါသည်။ + +**ဆရာများ**၊ ဒီသင်ခန်းစာများကို အသုံးပြုရန် [အကြံပြုချက်များ](./for-teachers.md) ပါရှိပါသည်။ + +--- + +## သင်ကြားမှုနည်းလမ်း + +ဒီသင်ခန်းစာကို တည်ဆောက်ရာတွင် ကျွန်ုပ်တို့သည် သင်ကြားမှုနည်းလမ်းနှစ်ခုကို ရွေးချယ်ခဲ့ပါသည် - **project-based** ဖြစ်စေရန်နှင့် **မကြာခဏ quiz များ** ပါဝင်စေရန်။ + +အကြောင်းအရာများကို စီမံကိန်းများနှင့် ကိုက်ညီစေရန် သေချာစေခြင်းအားဖြင့် ကျောင်းသားများအတွက် စိတ်ဝင်စားမှုကို တိုးမြှင့်ပြီး အယူအဆများကို သိမ်းဆည်းထားနိုင်မှုကို တိုးတက်စေပါသည်။ ထို့အပြင်၊ အတန်းမတိုင်မီ quiz တစ်ခုသည် ကျောင်းသား၏ အာရုံစိုက်မှုကို သင်ခန်းစာအကြောင်းအရာသို့ ဦးတည်စေပြီး၊ အတန်းပြီးဆုံးပြီးနောက် quiz တစ်ခုသည် အယူအဆများကို ထပ်မံသိမ်းဆည်းထားနိုင်စေပါသည်။ ဒီသင်ခန်းစာကို အပြည့်အစုံ (သို့) အစိတ်အပိုင်းအဖြစ် flexible ဖြစ်စေရန်နှင့် ပျော်ရွှင်စေရန် ရည်ရွယ်တည်ဆောက်ထားပါသည်။ စီမံကိန်းများသည် သေးငယ်ပြီး 12-ပတ်အချိန်ကာလအဆုံးတွင် အဆင့်မြင့်လာပါသည်။ + +> **Quiz များအကြောင်းမှတ်ချက်**: Quiz အားလုံးကို [ဒီ app](https://red-field-0a6ddfd03.1.azurestaticapps.net/) တွင် ပါဝင်ထားပြီး၊ 50 ခုလုံးသည် သုံးမေးခွန်းစီပါရှိသည်။ Quiz app ကို locally run လုပ်နိုင်ပြီး၊ `etc/quiz-app` folder တွင် ညွှန်ကြားချက်များကို လိုက်နာပါ။ + +## အွန်လိုင်းမရှိလျှင် အသုံးပြုနိုင်မှု + +ဒီ documentation ကို [Docsify](https://docsify.js.org/#/) အသုံးပြု၍ အွန်လိုင်းမရှိလျှင် run လုပ်နိုင်ပါသည်။ Repo ကို fork လုပ်ပြီး၊ [Docsify](https://docsify.js.org/#/quickstart) ကို သင့် local machine တွင် install လုပ်ပါ၊ ထို့နောက် repo ၏ root folder တွင် `docsify serve` ဟု ရိုက်ထည့်ပါ။ Website ကို localhost: `localhost:3000` တွင် port 3000 တွင် run လုပ်ပါမည်။ သင်ခန်းစာ၏ pdf ကို [ဒီ link](../../../../../../../../../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/my/lessons/1-Intro/README.md b/translations/my/lessons/1-Intro/README.md new file mode 100644 index 00000000..8bf2f843 --- /dev/null +++ b/translations/my/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> [Dmitry Soshnikov](http://soshnikov.com) မှရိုက်ထားသောပုံ + +အချိန်ကြာလာသည်နှင့်အမျှ ကွန်ပျူတာအရင်းအမြစ်များ ပိုမိုစျေးပေါလာပြီး ဒေတာများလည်း ပိုမိုရရှိနိုင်လာသောကြောင့် နယူးရယ်နက်ဝက် (Neural Networks) နည်းလမ်းများသည် လူသားများနှင့်ယှဉ်ပြိုင်၍ အများအပြားသောနယ်ပယ်များတွင် (ဥပမာ- ကွန်ပျူတာဗီရှင်း၊ စကားသိမြင်မှု) ထူးချွန်သောစွမ်းဆောင်ရည်များကို ပြသနိုင်ခဲ့သည်။ နောက်ဆုံးတစ်ဆယ်စုနှစ်အတွင်း "Artificial Intelligence" ဆိုသောအသုံးအနှုန်းကို နယူးရယ်နက်ဝက်များနှင့်အတူတူအဓိပ္ပါယ်ရသောအရာအဖြစ် အသုံးပြုလာခဲ့သည်။ အကြောင်းမှာ AI ၏အောင်မြင်မှုများအများစုသည် နယူးရယ်နက်ဝက်များအပေါ်အခြေခံထားသောကြောင့်ဖြစ်သည်။ + +နည်းလမ်းများအပြောင်းအလဲကို ဥပမာ- ချက်စ်ကစားနိုင်သော ကွန်ပျူတာပရိုဂရမ်တစ်ခုကို ဖန်တီးခြင်းနည်းလမ်းများမှတဆင့် တွေ့မြင်နိုင်သည်- + +* စောစောချိန်က ချက်စ်ပရိုဂရမ်များသည် ရှာဖွေမှု (Search) အပေါ်အခြေခံထားပြီး- ပရိုဂရမ်သည် အပြိုင်ကစားသူ၏ အနာဂတ်လှုပ်ရှားမှုများကို ခန့်မှန်းရန်ကြိုးစားပြီး အနည်းငယ်သောလှုပ်ရှားမှုများအတွင်း ရရှိနိုင်သော အကောင်းဆုံးအနေအထားအပေါ်အခြေခံ၍ အကောင်းဆုံးလှုပ်ရှားမှုကို ရွေးချယ်ခဲ့သည်။ ၎င်းသည် [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) ရှာဖွေမှုအယ်လဂိုရစ်သို့ ရောက်ရှိစေခဲ့သည်။ +* ရှာဖွေမှုနည်းလမ်းများသည် ကစားပွဲအဆုံးပိုင်းတွင် အလွန်ကောင်းမွန်စွာအလုပ်လုပ်နိုင်သည်၊ အကြောင်းမှာ ရှာဖွေမှုအကျယ်အဝန်းသည် လှုပ်ရှားမှုအနည်းငယ်သာကျန်ရှိသောကြောင့်ဖြစ်သည်။ သို့သော် ကစားပွဲအစပိုင်းတွင် ရှာဖွေမှုအကျယ်အဝန်းသည် အလွန်ကျယ်ပြန့်ပြီး အယ်လဂိုရစ်သည် လူသားကစားပွဲများမှ သင်ယူမှုဖြင့် တိုးတက်စေရန်လိုအပ်သည်။ နောက်ထပ်စမ်းသပ်မှုများတွင် [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning) ကို အသုံးပြုခဲ့ပြီး- ပရိုဂရမ်သည် ကစားပွဲအနေအထားနှင့်ဆင်တူသော အခြေအနေများကို knowledge base မှ ရှာဖွေခဲ့သည်။ +* လူသားကစားသမားများကို အနိုင်ယူနိုင်သော ခေတ်သစ်ပရိုဂရမ်များသည် နယူးရယ်နက်ဝက်များနှင့် [reinforcement learning](https://en.wikipedia.org/wiki/Reinforcement_learning) အပေါ်အခြေခံထားပြီး- ပရိုဂရမ်များသည် ၎င်းတို့ကိုယ်တိုင်နှင့် အချိန်ကြာကြာကစားခြင်းမှ သင်ယူမှုများကို အခြေခံ၍ သင်ယူခဲ့သည်။ ၎င်းသည် လူသားများက ချက်စ်ကို သင်ယူသည့်နည်းလမ်းနှင့်တူသည်။ သို့သော် ကွန်ပျူတာပရိုဂရမ်သည် အချိန်အနည်းငယ်အတွင်း အများကြီးကစားနိုင်ပြီး အလွန်မြန်ဆန်စွာ သင်ယူနိုင်သည်။ + +✅ AI က ကစားခဲ့သော အခြားဂိမ်းများကို သုတေသနပြုပါ။ + +ထို့နောက် "စကားပြောနိုင်သောပရိုဂရမ်များ" (Turing Test ကို ဖြတ်နိုင်သော) ဖန်တီးခြင်းနည်းလမ်းများအပြောင်းအလဲကိုလည်း တွေ့မြင်နိုင်သည်- + +* [Eliza](https://en.wikipedia.org/wiki/ELIZA) ကဲ့သို့သော စောစောချိန်က ပရိုဂရမ်များသည် အလွန်ရိုးရှင်းသော သဒ္ဒါစည်းကမ်းများနှင့် input စာကြောင်းကို မေးခွန်းအဖြစ် ပြန်လည်ဖွဲ့စည်းခြင်းအပေါ်အခြေခံထားသည်။ +* ခေတ်သစ်အကူအညီပေးသူများ (ဥပမာ- Cortana, Siri, Google Assistant) သည် Neural Networks ကို အသုံးပြု၍ စကားကို စာသားအဖြစ် ပြောင်းလဲခြင်းနှင့် ရည်ရွယ်ချက်ကို သိမြင်ခြင်း၊ ထို့နောက် reasoning သို့မဟုတ် explicit algorithms ကို အသုံးပြု၍ လိုအပ်သော လုပ်ဆောင်မှုများကို ပြုလုပ်ခြင်းတို့ဖြင့် Hybrid Systems ဖြစ်သည်။ +* အနာဂတ်တွင် Neural-based model တစ်ခုလုံးကို dialogue ကို ကိုယ်တိုင်ကိုင်တွယ်နိုင်ရန် မျှော်လင့်နိုင်သည်။ နောက်ဆုံးထွက်ရှိသော GPT နှင့် [Turing-NLG](https://turing.microsoft.com/) နယူးရယ်နက်ဝက် မိသားစုများသည် ၎င်းတွင် အလွန်အောင်မြင်မှုများကို ပြသထားသည်။ + +> ဓာတ်ပုံ - Dmitry Soshnikov, [ဓာတ်ပုံ](https://unsplash.com/photos/r8LmVbUKgns) - [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## AI သုတေသန၏ လတ်တလောတိုးတက်မှုများ + +နယူးရယ်နက်ဝက်များ (Neural Networks) အပေါ် သုတေသနများသည် ၂၀၁၀ ခုနှစ်လောက်မှ စတင်၍ အလွန်အမင်းတိုးတက်လာခဲ့သည်။ အများပြည်သူအသုံးပြုနိုင်သော ဒေတာများ စတင်ရရှိလာခြင်းကြောင့် ဖြစ်သည်။ [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) + +> ဓာတ်ပုံ - [Dmitry Soshnikov](http://soshnikov.com) + +၂၀၁၂ ခုနှစ်တွင် [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) ကို ပုံသတ်မှတ်ခြင်း (Image Classification) အတွက် ပထမဆုံးအသုံးပြုခဲ့ပြီး၊ အမှားနှုန်းကို အလွန်အမင်းလျှော့ချနိုင်ခဲ့သည် (၃၀% မှ ၁၆.၄% အထိ)။ ၂၀၁၅ ခုနှစ်တွင် 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 ကဲ့သို့သော အကြီးမားသော ဘာသာစကားမော်ဒယ်များတွင် အလွန်အောင်မြင်မှုများကို တွေ့မြင်ခဲ့ရသည်။ ၎င်းသည် အထွေထွေစာသားဒေတာများ များစွာရရှိနိုင်မှုကြောင့် ဖြစ်သည်။ ၎င်းတို့ကို အသုံးပြု၍ မော်ဒယ်များကို စာသားများ၏ ဖွဲ့စည်းပုံနှင့် အဓိပ္ပါယ်များကို ဖမ်းယူနိုင်စေရန် သင်ကြားနိုင်ပြီး၊ အထွေထွေစာသားစုစည်းမှုများတွင် ကြိုတင်သင်ကြားပြီး၊ ထိုမော်ဒယ်များကို အထူးပြုလုပ်ရန် အသုံးပြုနိုင်သည်။ [ဘာသာစကားသဘာဝဆိုင်ရာလုပ်ငန်းစဉ်များ](../5-NLP/README.md) အကြောင်းကို ဒီသင်ခန်းစာတွင် နောက်ပိုင်းတွင် ပိုမိုလေ့လာမည်ဖြစ်သည်။ + +## 🚀 စိန်ခေါ်မှု + +အင်တာနက်ပေါ်တွင် လေ့လာပြီး AI ကို အကျိုးရှိဆုံးအသုံးပြုနေသော နေရာကို သင်၏အမြင်အရ သတ်မှတ်ပါ။ ၎င်းသည် မြေပုံဆွဲအက်ပ်တစ်ခုတွင်ဖြစ်နိုင်သလို၊ စကားမှစာသားသို့ ပြောင်းလဲခြင်းဝန်ဆောင်မှုတစ်ခု၊ သို့မဟုတ် ဗီဒီယိုဂိမ်းတစ်ခုတွင်လည်း ဖြစ်နိုင်ပါသည်။ ၎င်းစနစ်ကို ဘယ်လိုတည်ဆောက်ခဲ့သည်ကို သုတေသနပြုပါ။ + +## [Post-lecture quiz](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) ကို ဖတ်ရှုခြင်းဖြင့် ပြန်လည်သုံးသပ်ပါ။ ၎င်းသင်ခန်းစာ၏ ထိပ်တွင်ရှိသော sketchnote မှ သို့မဟုတ် ဒီသင်ခန်းစာမှ အစိတ်အပိုင်းတစ်ခုကို ရွေးချယ်ပြီး၊ ၎င်း၏ တိုးတက်မှုကို သက်ရောက်စေသော ယဉ်ကျေးမှုအခြေခံအနေအထားကို နက်နက်ရှိုင်းရှိုင်း နားလည်ရန် သုတေသနပြုပါ။ + +**အလုပ်ပေးစာ**: [ဂိမ်းဂျမ်](assignment.md) + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/1-Intro/assignment.md b/translations/my/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..b6f1dc59 --- /dev/null +++ b/translations/my/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +ဂိမ်းများသည် AI နှင့် ML ၏ ဖွံ့ဖြိုးတိုးတက်မှုများက အလွန်အကျွံ သက်ရောက်မှုရှိခဲ့သည့် နယ်ပယ်တစ်ခုဖြစ်သည်။ ဤအလုပ်မှာ သင်နှစ်သက်သော ဂိမ်းတစ်ခုအကြောင်းကို ရေးသားပါ၊ ထိုဂိမ်းသည် AI ၏ ဖွံ့ဖြိုးတိုးတက်မှုများကြောင့် သက်ရောက်မှုရှိခဲ့ရမည်။ ၎င်းသည် ကွန်ပျူတာ ပရိုဆက်ဆင်း စနစ်အမျိုးမျိုး၏ သက်ရောက်မှုကို ခံခဲ့ရသော ရှေးဟောင်းဂိမ်းတစ်ခုဖြစ်ရမည်။ ကောင်းမွန်သော ဥပမာများမှာ Chess သို့မဟုတ် Go ဖြစ်နိုင်သလို 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/my/lessons/2-Symbolic/README.md b/translations/my/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..b190c190 --- /dev/null +++ b/translations/my/lessons/2-Symbolic/README.md @@ -0,0 +1,210 @@ + +# အသိပညာကိုယ်စားပြုခြင်းနှင့် ကျွမ်းကျင်သူစနစ်များ + +![Symbolic AI အကြောင်းအရာအကျဉ်းချုပ်](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.my.png) + +> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac) + +အတုယူစွမ်းရည် (AI) ကိုဖန်တီးရန် ကြိုးပမ်းမှုသည် လူသားများကဲ့သို့ ကမ္ဘာကြီးကို နားလည်နိုင်ရန် အသိပညာကို ရှာဖွေခြင်းအပေါ် အခြေခံထားသည်။ ဒါပေမယ့် ဒါကို ဘယ်လိုလုပ်ဆောင်ရမလဲ? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +AI ရဲ့အစောပိုင်းကာလတွေမှာ အထက်မှအောက်သို့ (top-down) လမ်းစဉ်ကို အသုံးပြုပြီး စက်ရုပ်စနစ်တွေကို ဖန်တီးခဲ့ပါတယ်။ ဒီနည်းလမ်းက လူတွေထံမှ အသိပညာကို စက်နားလည်နိုင်တဲ့ပုံစံတစ်ခုအဖြစ် ရယူပြီး ပြဿနာတွေကို အလိုအလျောက် ဖြေရှင်းနိုင်ဖို့ ရည်ရွယ်ထားတာပါ။ ဒီနည်းလမ်းမှာ အဓိကအယူအဆနှစ်ခုပါဝင်ပါတယ်။ + +* အသိပညာကိုယ်စားပြုခြင်း +* အကြောင်းပြချက်ရှာဖွေခြင်း + +## အသိပညာကိုယ်စားပြုခြင်း + +Symbolic AI ရဲ့ အရေးကြီးတဲ့အယူအဆတစ်ခုက **အသိပညာ** ဖြစ်ပါတယ်။ အသိပညာကို *သတင်းအချက်အလက်* သို့မဟုတ် *ဒေတာ* နဲ့ ခွဲခြားဖို့ အရေးကြီးပါတယ်။ ဥပမာအားဖြင့် စာအုပ်တွေမှာ အသိပညာပါဝင်တယ်လို့ ပြောနိုင်ပါတယ်၊ အကြောင်းက စာအုပ်တွေကို လေ့လာပြီး ကျွမ်းကျင်သူဖြစ်နိုင်လို့ပါ။ ဒါပေမယ့် စာအုပ်တွေမှာ ပါဝင်တာက *ဒေတာ* ဖြစ်ပြီး၊ စာအုပ်တွေကို ဖတ်ပြီး ဒေတာကို ကမ္ဘာကြီးအပေါ် မော်ဒယ်တစ်ခုအဖြစ် ပေါင်းစည်းတဲ့အခါမှာ ဒေတာကို အသိပညာအဖြစ် ပြောင်းလဲနိုင်ပါတယ်။ + +> ✅ **အသိပညာ** ဆိုတာ ကျွန်တော်တို့ရဲ့ ဦးနှောက်ထဲမှာ ပါဝင်ပြီး ကမ္ဘာကြီးကို နားလည်မှုကို ကိုယ်စားပြုပါတယ်။ ဒါကို **သင်ယူမှု** လုပ်ငန်းစဉ်တစ်ခုမှတစ်ဆင့် ရရှိပြီး၊ ကျွန်တော်တို့ရဲ့ ကမ္ဘာကြီးအပေါ် မော်ဒယ်တစ်ခုထဲမှာ သတင်းအချက်အလက်တွေကို ပေါင်းစည်းပါတယ်။ + +အများအားဖြင့် အသိပညာကို တိတိကျကျ သတ်မှတ်မထားပေမယ့် [DIKW Pyramid](https://en.wikipedia.org/wiki/DIKW_pyramid) နဲ့ ဆက်စပ်အယူအဆတွေနဲ့ ကိုက်ညီစေပါတယ်။ ဒီမှာ အောက်ပါအရာတွေ ပါဝင်ပါတယ်။ + +* **ဒေတာ** ဆိုတာ ရုပ်ပိုင်းဆိုင်ရာ မီဒီယာပေါ်မှာ ကိုယ်စားပြုထားတဲ့ အရာဖြစ်ပြီး၊ စာသားရေးသားခြင်း သို့မဟုတ် စကားပြောခြင်းတို့ဖြစ်နိုင်ပါတယ်။ ဒေတာက လူသားတွေမရှိဘဲ တည်ရှိနိုင်ပြီး လူတွေကြားမှာ ပေးပို့နိုင်ပါတယ်။ +* **သတင်းအချက်အလက်** ဆိုတာ ကျွန်တော်တို့ရဲ့ ဦးနှောက်ထဲမှာ ဒေတာကို ဘယ်လို အဓိပ္ပာယ်ဖွင့်ဆိုတယ်ဆိုတာပါ။ ဥပမာအားဖြင့် *ကွန်ပျူတာ* ဆိုတဲ့ စကားလုံးကို ကြားတဲ့အခါ၊ ကျွန်တော်တို့မှာ အဲဒီအရာအကြောင်း နားလည်မှုတစ်ခု ရှိပါတယ်။ +* **အသိပညာ** ဆိုတာ သတင်းအချက်အလက်ကို ကျွန်တော်တို့ရဲ့ ကမ္ဘာကြီးအပေါ် မော်ဒယ်ထဲမှာ ပေါင်းစည်းထားတာပါ။ ဥပမာအားဖြင့် ကွန်ပျူတာဆိုတာ ဘာလဲဆိုတာ သင်ယူပြီးတဲ့အခါ၊ အဲဒါ ဘယ်လိုအလုပ်လုပ်တယ်၊ ဘယ်လောက်ကုန်ကျတယ်၊ ဘာအတွက် အသုံးပြုနိုင်တယ်ဆိုတာ အကြောင်းအရာတွေကို နားလည်လာပါတယ်။ ဒီလို ဆက်စပ်နေတဲ့ အကြောင်းအရာတွေက ကျွန်တော်တို့ရဲ့ အသိပညာကို ဖွဲ့စည်းပါတယ်။ +* **ပညာရှိမှု** ဆိုတာ ကမ္ဘာကြီးအပေါ် နားလည်မှုရဲ့ နောက်ထပ်အဆင့်တစ်ခုဖြစ်ပြီး၊ *meta-knowledge* ကို ကိုယ်စားပြုပါတယ်။ ဥပမာအားဖြင့် အသိပညာကို ဘယ်လို သုံးရမယ်၊ ဘယ်အချိန်မှာ သုံးရမယ်ဆိုတာပါ။ + +*Image [from Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +ဒါကြောင့် **အသိပညာကိုယ်စားပြုခြင်း** ဆိုတာက အသိပညာကို ကွန်ပျူတာထဲမှာ ဒေတာအဖြစ် ကိုယ်စားပြုဖို့ အကျိုးရှိတဲ့ နည်းလမ်းတစ်ခုကို ရှာဖွေဖို့ ပြဿနာတစ်ခုဖြစ်ပါတယ်။ ဒါကို အောက်ပါအတိုင်း အကွာအဝေးတစ်ခုအဖြစ် မြင်နိုင်ပါတယ်။ + +![Knowledge representation spectrum](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.my.png) + +> Image by [Dmitry Soshnikov](http://soshnikov.com) + +* ဘယ်ဘက်မှာတော့ ကွန်ပျူတာတွေက အလွယ်တကူ အသုံးပြုနိုင်တဲ့ အသိပညာကိုယ်စားပြုမှု အမျိုးအစားတွေ ရှိပါတယ်။ အလွယ်ဆုံးက algorithmic ဖြစ်ပြီး၊ အသိပညာကို ကွန်ပျူတာပရိုဂရမ်အဖြစ် ကိုယ်စားပြုထားတာပါ။ ဒါပေမယ့် ဒီနည်းလမ်းက အသိပညာကို ကိုယ်စားပြုဖို့ အကောင်းဆုံးမဟုတ်ပါဘူး၊ အကြောင်းက ကျွန်တော်တို့ရဲ့ ဦးနှောက်ထဲမှာ ရှိတဲ့ အသိပညာက algorithmic မဟုတ်လို့ပါ။ +* ညာဘက်မှာတော့ သဘာဝစာသားလိုမျိုး ကိုယ်စားပြုမှုတွေ ရှိပါတယ်။ ဒါက အင်မတန် အားကောင်းပေမယ့် အလိုအလျောက် အကြောင်းပြချက်ရှာဖွေဖို့ အသုံးမပြုနိုင်ပါဘူး။ + +> ✅ သင့်ရဲ့ ဦးနှောက်ထဲမှာ အသိပညာကို ဘယ်လို ကိုယ်စားပြုပြီး မှတ်စုတွေကို ဘယ်လို ပြောင်းလဲတယ်ဆိုတာ တစ်မိနစ်လောက် စဉ်းစားကြည့်ပါ။ သင့်အတွက် မှတ်မိမှုကို ကူညီပေးနိုင်တဲ့ ပုံစံတစ်ခု ရှိပါသလား? + +## ကွန်ပျူတာအသိပညာကိုယ်စားပြုမှုများကို ခွဲခြားခြင်း + +ကွန်ပျူတာအသိပညာကိုယ်စားပြုမှု နည်းလမ်းတွေကို အောက်ပါအမျိုးအစားတွေ အဖြစ် ခွဲခြားနိုင်ပါတယ်။ + +* **ကွန်ယက်ကိုယ်စားပြုမှုများ** ဆိုတာ ကျွန်တော်တို့ရဲ့ ဦးနှောက်ထဲမှာ ဆက်စပ်နေတဲ့ အကြောင်းအရာတွေကို ကွန်ယက်တစ်ခုအဖြစ် ဖန်တီးထားတာကို အခြေခံထားပါတယ်။ ဒီလို ကွန်ယက်တွေကို ကွန်ပျူတာထဲမှာ **semantic network** အဖြစ် ဖန်တီးနိုင်ပါတယ်။ + +1. **Object-Attribute-Value triplets** သို့မဟုတ် **attribute-value pairs**။ ကွန်ယက်တစ်ခုကို ကွန်ပျူတာထဲမှာ node နဲ့ edge တွေစာရင်းအဖြစ် ကိုယ်စားပြုနိုင်တဲ့အတွက် semantic network ကို object, attribute, value တို့ပါဝင်တဲ့ triplets စာရင်းအဖြစ် ကိုယ်စားပြုနိုင်ပါတယ်။ ဥပမာအားဖြင့် programming languages အကြောင်း triplets တွေကို ဖန်တီးနိုင်ပါတယ်။ + +Object | Attribute | Value +-------|-----------|------ +Python | is | Untyped-Language +Python | invented-by | Guido van Rossum +Python | block-syntax | indentation +Untyped-Language | doesn't have | type definitions + +> ✅ Triplets တွေကို အသိပညာအမျိုးအစားအခြားများကို ကိုယ်စားပြုဖို့ ဘယ်လို အသုံးပြုနိုင်မလဲ စဉ်းစားကြည့်ပါ။ + +2. **အဆင့်လိုက်ကိုယ်စားပြုမှုများ** ဆိုတာ ကျွန်တော်တို့ရဲ့ ဦးနှောက်ထဲမှာ အရာဝတ္ထုတွေကို အဆင့်လိုက်ဖွဲ့စည်းထားတဲ့ အချက်ကို အလေးပေးထားပါတယ်။ ဥပမာအားဖြင့် ကျွန်တော်တို့သိတာက canary က ငှက်တစ်မျိုးဖြစ်ပြီး၊ ငှက်အားလုံးမှာ တောင်ပံရှိတယ်ဆိုတာပါ။ Canary ရဲ့ အရောင်၊ ပျံသန်းနိုင်မှုအမြန်နှုန်းတို့ကိုလည်း ကျွန်တော်တို့မှာ အကြမ်းဖျင်းအယူအဆရှိပါတယ်။ + + - **Frame ကိုယ်စားပြုမှု** ဆိုတာ အရာဝတ္ထုတစ်ခု သို့မဟုတ် အရာဝတ္ထုအတန်းတစ်ခုကို **frame** အဖြစ် ကိုယ်စားပြုထားပြီး၊ **slots** တွေ ပါဝင်ပါတယ်။ Slots တွေမှာ ပုံမှန်တန်ဖိုးတွေ၊ တန်ဖိုးကန့်သတ်ချက်တွေ သို့မဟုတ် တန်ဖိုးကို ရယူဖို့ ဖုန်းခေါ်နိုင်တဲ့ လုပ်ငန်းစဉ်တွေ ပါဝင်နိုင်ပါတယ်။ Frame အားလုံးက object-oriented programming languages တွေမှာ object hierarchy လိုမျိုး အဆင့်လိုက်ဖွဲ့စည်းထားပါတယ်။ + - **Scenarios** ဆိုတာ အချိန်အလိုက် ဖွံ့ဖြိုးနိုင်တဲ့ အခြေအနေတွေကို ကိုယ်စားပြုတဲ့ frame အမျိုးအစားတစ်ခုဖြစ်ပါတယ်။ + +**Python** + +Slot | Value | Default value | Interval | +-----|-------|---------------|----------| +Name | Python | | | +Is-A | Untyped-Language | | | +Variable Case | | CamelCase | | +Program Length | | | 5-5000 lines | +Block Syntax | Indent | | | + +3. **Procedural ကိုယ်စားပြုမှုများ** ဆိုတာ အခြေအနေတစ်ခုဖြစ်ပေါ်တဲ့အခါ အကောင်အထည်ဖော်နိုင်တဲ့ လုပ်ဆောင်ချက်စာရင်းတစ်ခုအဖြစ် အသိပညာကို ကိုယ်စားပြုထားတာပါ။ + - Production rules ဆိုတာ if-then စကားပြောချက်တွေဖြစ်ပြီး၊ အကြောင်းပြချက်ရှာဖွေဖို့ ခွင့်ပြုပါတယ်။ ဥပမာအားဖြင့် ဆရာဝန်တစ်ဦးမှာ **IF** လူနာမှာ အဖျားကြီးတယ် **OR** သွေးစမ်းသပ်မှုမှာ C-reactive protein အဆင့်မြင့်တယ်ဆိုရင် **THEN** အရောင်ရောင်ခြင်းရှိတယ်ဆိုတဲ့ rule ရှိနိုင်ပါတယ်။ အခြေအနေတစ်ခုကို တွေ့တဲ့အခါမှာ အရောင်ရောင်ခြင်းအကြောင်းအရာကို သတ်မှတ်နိုင်ပြီး၊ နောက်ထပ် reasoning တွေမှာ အသုံးပြုနိုင်ပါတယ်။ + - Algorithms တွေကို procedural ကိုယ်စားပြုမှုတစ်မျိုးအဖြစ် သတ်မှတ်နိုင်ပေမယ့်၊ အသိပညာအခြေခံစနစ်တွေမှာ တိုက်ရိုက်အသုံးပြုတာ မရှိသလောက်ပါ။ + +4. **Logic** ကို Aristotle က လူသားအသိပညာကို ကိုယ်စားပြုဖို့ နည်းလမ်းတစ်ခုအဖြစ် မူလတည်ထောင်ခဲ့ပါတယ်။ + - Predicate Logic ကို သင်္ချာဆိုင်ရာ သီအိုရီအဖြစ် သတ်မှတ်ထားပေမယ့်၊ အလွန်ချမ်းသာလွန်းတဲ့အတွက် ကွန်ပျူတာနားလည်နိုင်ဖို့ မဖြစ်နိုင်ပါဘူး။ ဒါကြောင့် Prolog မှာ အသုံးပြုတဲ့ Horn clauses လိုမျိုး အပိုင်းအစတစ်ခုကိုသာ အသုံးပြုပါတယ်။ + - Descriptive Logic ဆိုတာ object hierarchy တွေကို ကိုယ်စားပြုပြီး reasoning လုပ်ဖို့ အသုံးပြုတဲ့ logic systems မျိုးစိတ်တစ်ခုဖြစ်ပြီး၊ *semantic web* လိုမျိုး distributed knowledge representations တွေမှာ အသုံးပြုပါတယ်။ + +## ကျွမ်းကျင်သူစနစ်များ + +Symbolic AI ရဲ့ အစောပိုင်းအောင်မြင်မှုတွေထဲမှာ **ကျွမ်းကျင်သူစနစ်များ** ဆိုတဲ့ စနစ်တွေ ပါဝင်ပါတယ်။ ဒီစနစ်တွေက အကန့်အသတ်ရှိတဲ့ ပြဿနာနယ်ပယ်တစ်ခုမှာ ကျွမ်းကျင်သူတစ်ဦးအဖြစ် လုပ်ဆောင်ဖို့ ရည်ရွယ်ထားပါတယ်။ အဲဒီစနစ်တွေမှာ **knowledge base** တစ်ခု ပါဝင်ပြီး၊ လူသားကျွမ်းကျင်သူတစ်ဦး သို့မဟုတ် အများအပြားထံမှ ရယူထားတာဖြစ်ပါတယ်။ ထို့အပြင် **inference engine** တစ်ခုလည်း ပါဝင်ပြီး၊ အဲဒါက reasoning လုပ်ငန်းစဉ်ကို အကောင်အထည်ဖော်ပေးပါတယ်။ + +![Human Architecture](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.my.png) | ![Knowledge-Based System](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.my.png) +---------------------------------------------|------------------------------------------------ +လူသားနာရောစနစ်ရဲ့ ရိုးရှင်းတဲ့ဖွဲ့စည်းမှု | အသိပညာအခြေခံစနစ်ရဲ့ ဖွဲ့စည်းမှု + +ကျွမ်းကျင်သူစနစ်တွေကို လူသား reasoning စနစ်လိုမျိုး ဖွဲ့စည်းထားပါတယ်၊ အဲဒါမှာ **အတိုင်းအတာမှတ်ဉာဏ်** နဲ့ **ရှည်လျားမှတ်ဉာဏ်** ပါဝင်ပါတယ်။ အလားတူပဲ၊ အသိပညာအခြေခံစနစ်တွေမှာ အောက်ပါအစိတ်အပိုင်းတွေကို ခွဲခြားထားပါတယ်။ + +* **ပြဿနာမှတ်ဉာဏ်**: လက်ရှိဖြေရှင်းနေတဲ့ ပြဿနာအကြောင်း အသိပညာကို ထိန်းသိမ်းထားပါတယ်၊ ဥပမာအားဖြင့် လူနာရဲ့ အပူချိန် သို့မဟုတ် သွေးဖိအား၊ သူ့မှာ အရောင်ရောင်ခြင်းရှိမရှိ စသဖြင့်။ ဒီအသိပညာကို **static knowledge** လို့လည်း ခေါ်ပြီး၊ လက်ရှိပြဿနာအခြေအနေကို ကိုယ်စားပြုတဲ့ snapshot တစ်ခုအဖြစ် ပါဝင်ပါတယ်။ +* **Knowledge base**: ပြဿနာနယ်ပယ်အကြောင်း ရေရှည်အသိပညာကို ကိုယ်စားပြုပါတယ်။ ဒါကို လူသားကျွမ်းကျင်သူတွေထံမှ လက်နက်ဖြင့် ရယူထားပြီး၊ တိုက်ဆိုင်မှုတိုင်းမှာ မပြောင်းလဲပါဘူး။ ဒါက ပြဿနာအခြေအနေတစ်ခုမှ နောက်တစ်ခုသို့ သွားနိုင်စေတဲ့အတွက် **dynamic knowledge** လို့လည်း ခေါ်ပါတယ်။ +* **Inference engine**: ပြဿနာအခြေအနေအာကာသထဲမှာ ရှာဖွေမှုလုပ်ငန်းစဉ်ကို စီမံခန့်ခွဲပြီး၊ လိုအပ်တဲ့အခါ အသုံးပြုသူကို မေးခွန်းထုတ်ပါတယ်။ ဒါကလည်း အခြေအနေတိုင်းမှာ သက်ဆိုင်တဲ့ rule တွေကို ရှာဖွေဖို့ တာဝန်ယူပါတယ်။ + +ဥပမာအားဖြင့်၊ တိရစ္ဆာန်တစ်မျိုးကို physical characteristics အပေါ်အခြေခံပြီး သတ်မှတ်ဖို့ ကျွမ်းကျင်သူစနစ်တစ်ခုကို စဉ်းစားကြည့်ပါ။ + +![AND-OR Tree](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.my.png) + +> Image by [Dmitry Soshnikov](http://soshnikov.com) + +ဒီဇယားကို **AND-OR tree** လို့ ခေါ်ပြီး၊ production rules တွေကို ကိုယ်စားပြုတဲ့ ဂရပ်ဖစ်ကိုယ်စားပြုမှုတစ်ခုဖြစ်ပါတယ်။ ကျွမ်းကျင်သူထံမှ အသိပညာကို ရယူတဲ့အစမှာ tree တစ်ခုဆွဲတာ အကျိုးရှိပါတယ်။ ဒါပေမယ့် ကွန်ပျူတာထဲမှာ အသိပညာကို ကိုယ်စားပြုဖို့ rule တွေကို အသုံးပြုရင် ပိုအဆင်ပြေပါတယ်။ + +``` +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 +``` + +သင်တွေ့ရမယ့်အတိုင်း၊ rule ရဲ့ ဘယ်ဘက်ဖက် (LHS) မှာရှိတဲ့ အခြေအနေတစ်ခုစီနဲ့ လက်နက်ဖက် (RHS) မှာရှိတဲ့ လုပ်ဆောင်ချက်တွေဟာ +> **မှတ်ချက်**: ဤဥပမာသည် အလွန်ရိုးရှင်းပြီး ကျွမ်းကျင်သူစနစ်တစ်ခု၏ ပုံစံကိုသာ ဖော်ပြထားသည်။ သင်ဤမျိုးစနစ်တစ်ခုကို စတင်ဖန်တီးလိုက်သောအခါတွင်၊ စည်းမျဉ်းများ ၂၀၀ ကျော်ရောက်မှသာ *ထူးခြားသော* အပြုအမူများကို သတိပြုမိနိုင်မည်ဖြစ်သည်။ တစ်ချိန်ချိန်တွင် စည်းမျဉ်းများသည် အလွန်ရှုပ်ထွေးလာပြီး အားလုံးကို မှတ်ထားရန် ခက်ခဲလာမည်ဖြစ်သည်။ ဤအချိန်တွင် စနစ်တစ်ခုက အချို့သော ဆုံးဖြတ်ချက်များကို ဘာကြောင့်လုပ်ဆောင်သွားသည်ကို သင်အံ့ဩမိနိုင်သည်။ သို့သော်၊ အသိပညာအခြေပြုစနစ်များ၏ အရေးကြီးသော အင်္ဂါရပ်မှာ သင်သည် ဆုံးဖြတ်ချက်တစ်ခုချင်းစီကို ဘယ်လိုလုပ်ဆောင်ခဲ့သည်ကို အတိအကျ *ရှင်းပြနိုင်ခြင်း* ဖြစ်သည်။ +## အွန်တောလော်ဂျီများနှင့် ဆီမန်တစ် ဝက် + +20 ရာစုအဆုံးပိုင်းတွင် အင်တာနက်ရှိ အရင်းအမြစ်များကို သိမြင်မှုကိုယ်စားပြုမှုအသုံးပြု၍ အမှတ်အသားပြုနိုင်ရန် ကြိုးပမ်းမှုတစ်ရပ်စတင်ခဲ့သည်။ ဤကြိုးပမ်းမှုကို **ဆီမန်တစ် ဝက်** ဟုခေါ်ပြီး၊ အောက်ပါအယူအဆများအပေါ် အခြေခံထားသည်- + +- **[description logics](https://en.wikipedia.org/wiki/Description_logic)** (DL) အပေါ် အခြေခံထားသည့် သိမြင်မှုကိုယ်စားပြုမှုအထူးတစ်ရပ်။ ၎င်းသည် frame knowledge representation နှင့် ဆင်တူသော်လည်း၊ တိကျသော သဘောတရားဆိုင်ရာ semantics နှင့် inference ပါရှိသည်။ DL မျိုးစိတ်တစ်ခုလုံးသည် အထောက်အထားဆိုင်ရာ algorithmic ရှုပ်ထွေးမှုနှင့် ဖော်ပြနိုင်မှုအကြား ကိုက်ညီမှုရှိစေရန် အလယ်အလတ်အဆင့်တွင် ရှိသည်။ +- သိမြင်မှုကိုယ်စားပြုမှုကို ဖြန့်ဖြူးထားခြင်း၊ အရာဝတ္ထုများအားလုံးကို ကမ္ဘာလုံးဆိုင်ရာ URI အမှတ်အသားဖြင့် ကိုယ်စားပြုထားခြင်းဖြင့် အင်တာနက်တစ်လျှောက်ရှိ သိမြင်မှုအဆင့်ဆင့်များကို ဖန်တီးနိုင်စေသည်။ +- သိမြင်မှုဖော်ပြရန် XML အခြေခံဘာသာစကားများ၏ မျိုးစိတ်တစ်ခု- RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language)။ + +ဆီမန်တစ် ဝက်၏ အဓိကအယူအဆမှာ **အွန်တောလော်ဂျီ** ဖြစ်သည်။ ၎င်းသည် တိကျသော သိမြင်မှုကိုယ်စားပြုမှုတစ်ရပ်ကို အသုံးပြု၍ ပြဿနာနယ်ပယ်တစ်ခုကို ဖော်ပြထားခြင်းကို ဆိုလိုသည်။ အလွယ်ဆုံးသော အွန်တောလော်ဂျီသည် ပြဿနာနယ်ပယ်ရှိ အရာဝတ္ထုများ၏ အဆင့်ဆင့်ဖြစ်နိုင်သော်လည်း၊ ပိုမိုရှုပ်ထွေးသော အွန်တောလော်ဂျီများတွင် inference အတွက် အသုံးပြုနိုင်သော စည်းမျဉ်းများပါဝင်နိုင်သည်။ + +ဆီမန်တစ် ဝက်တွင် အရာအားလုံးကို triplet များအပေါ် အခြေခံထားသည်။ အရာဝတ္ထုနှင့် ဆက်စပ်မှုတိုင်းကို URI ဖြင့် တစ်ခုတည်းသာ သတ်မှတ်ထားသည်။ ဥပမာအားဖြင့်၊ ဤ AI သင်ရိုးကို Dmitry Soshnikov မှ 2022 ခုနှစ် ဇန်နဝါရီလ ၁ ရက်နေ့တွင် ဖန်တီးခဲ့သည်ဆိုသော အချက်အလက်ကို ဖော်ပြလိုပါက၊ အောက်ပါ triplet များကို အသုံးပြုနိုင်သည်- + + + +``` +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* များမှ ထုတ်ယူထားသည်။ သင်သည် [SPARQL](https://query.wikidata.org/) ဖြင့် WikiData ကို query လုပ်နိုင်သည်။ ဤသည်မှာ လူသားများအကြား အများဆုံးတွေ့ရသော မျက်လုံးအရောင်များကို ဖော်ပြသည့် query တစ်ခုဖြစ်သည်- + +```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é editor သည် Romanov Family အွန်တောလော်ဂျီဖြင့် ဖွင့်ထားသည်။ Screenshot by Dmitry Soshnikov* + +## ✍️ လေ့ကျင့်မှု: မိသားစု အွန်တောလော်ဂျီ + +[FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) တွင် မိသားစုဆက်ဆံရေးများအပေါ် ဆီမန်တစ် ဝက်နည်းလမ်းများကို အသုံးပြုသည့် ဥပမာတစ်ခုကို ကြည့်ပါ။ GEDCOM ဖော်မတ်ဖြင့် ကိုယ်စားပြုထားသော မိသားစုသစ်တစ်ခုနှင့် မိသားစုဆက်ဆံရေးအွန်တောလော်ဂျီတစ်ခုကို အသုံးပြု၍ သတ်မှတ်ထားသော လူပုဂ္ဂိုလ်များအတွက် မိသားစုဆက်ဆံရေးများ၏ ဂရပ်ဖ်တစ်ခုကို ဖန်တီးပါ။ + +## Microsoft Concept Graph + +အွန်တောလော်ဂျီများကို အများအားဖြင့် လက်ဖြင့် သေချာစွာ ဖန်တီးရသည်။ သို့သော်၊ သဘာဝဘာသာစကားစာသားများကဲ့သို့သော မဖွဲ့စည်းထားသော ဒေတာများမှ အွန်တောလော်ဂျီများကို **ထုတ်ယူ** လုပ်ဆောင်နိုင်သည်။ + +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` အဆင့်ဆင့်ဆက်နွယ်မှုကို အသုံးပြု၍ အဖွဲ့ဖွဲ့ထားသော entity များ၏ စုစည်းမှုကြီးတစ်ခုဖြစ်သည်။ ဤသည်က "Microsoft ဆိုတာဘာလဲ?" ကဲ့သို့သော မေးခွန်းများကို ဖြေဆိုနိုင်စေသည်- "ကုမ္ပဏီတစ်ခုဖြစ်ပြီး 0.87 ဖြစ်နိုင်ခြေရှိသည်၊ အမှတ်တံဆိပ်တစ်ခုဖြစ်ပြီး 0.75 ဖြစ်နိုင်ခြေရှိသည်" ဟုဖြေဆိုနိုင်သည်။ + +ဤ Graph ကို REST API အဖြစ် သို့မဟုတ် entity အစုံကို ဖော်ပြထားသော စာသားဖိုင်ကြီးအဖြစ် ရရှိနိုင်သည်။ + +## ✍️ လေ့ကျင့်မှု: Concept Graph + +[MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) notebook ကို စမ်းကြည့်ပြီး Microsoft Concept Graph ကို အသုံးပြု၍ သတင်းဆောင်းပါးများကို အမျိုးအစားအလိုက် အုပ်စုဖွဲ့နိုင်ပုံကို လေ့လာပါ။ + +## နိဂုံး + +ယနေ့ခေတ်တွင် AI ကို *Machine Learning* သို့မဟုတ် *Neural Networks* နှင့် အညီအမျှ သတ်မှတ်ကြသည်။ သို့သော်၊ လူသားတစ်ဦးသည် တိကျသော အကြောင်းပြချက်များကိုလည်း ဖော်ပြနိုင်သည်၊ ၎င်းသည် ယနေ့ခေတ် neural networks များက ဆောင်ရွက်နိုင်ခြင်းမရှိသေးသော အရာတစ်ခုဖြစ်သည်။ အမှန်တစ်ရားတွင်၊ တိကျသော reasoning ကို အကြောင်းပြချက်များလိုအပ်သည့် အလုပ်များကို ဆောင်ရွက်ရန် သို့မဟုတ် စနစ်၏ အပြုအမူကို ထိန်းချုပ်နိုင်ရန် အသုံးပြုနေဆဲဖြစ်သည်။ + +## 🚀 စိန်ခေါ်မှု + +ဤသင်ခန်းစာနှင့် ဆက်စပ်သော Family Ontology notebook တွင် မိသားစုဆက်ဆံရေးအခြေအနေများကို စမ်းသပ်နိုင်ရန် အခွင့်အလမ်းရှိသည်။ မိသားစုသစ်အတွင်း လူများအကြား ဆက်စပ်မှုအသစ်များကို ရှာဖွေကြည့်ပါ။ + +## [Post-lecture quiz](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/my/lessons/2-Symbolic/assignment.md b/translations/my/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..7165f59a --- /dev/null +++ b/translations/my/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/my/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/my/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..479e8b30 --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# နယူးရယ်နက်ဝက်များအကြောင်း အကျဉ်းချုပ်: ပာစက်ထရွန် + +## [မဆွေးနွေးမီ စမ်းမေးခွန်း](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +နယူးရယ်နက်ဝက်တစ်ခုကို အချိန်မီနည်းလမ်းဖြင့် ဖန်တီးရန် ပထမဆုံးကြိုးစားမှုတစ်ခုကို 1957 ခုနှစ်တွင် Cornell Aeronautical Laboratory မှ Frank Rosenblatt က ပြုလုပ်ခဲ့သည်။ ၎င်းသည် "Mark-1" ဟုခေါ်သော ဟာ့ဒ်ဝဲတစ်ခုဖြစ်ပြီး၊ တိရိစ္ဆာန်ပုံစံများ (ဥပမာ- တြိဂံ၊ စတုရန်း၊ စက်ဝိုင်း) ကို အသိအမှတ်ပြုနိုင်ရန် ဒီဇိုင်းပြုလုပ်ထားသည်။ + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> ပုံများ [Wikipedia မှ](https://en.wikipedia.org/wiki/Perceptron) + +အထဲသို့ ထည့်သွင်းသော ပုံကို 20x20 ဖိုတိုဆဲလ်အကွက်ဖြင့် ကိုယ်စားပြုထားပြီး၊ နယူးရယ်နက်ဝက်တွင် 400 ခုသော အထွက်အချက်အလက်များနှင့် binary output တစ်ခုသာ ရှိသည်။ ရိုးရှင်းသော နက်ဝက်တစ်ခုတွင် **threshold logic unit** ဟုခေါ်သော နယူးရွန်တစ်ခုသာ ပါဝင်သည်။ နယူးရယ်နက်ဝက်၏ အလေးချိန်များသည် ပိုတင်ရှိုမီတာများကဲ့သို့ လုပ်ဆောင်ပြီး၊ သင်ကြားမှုအဆင့်တွင် လက်ဖြင့် ပြင်ဆင်ရန် လိုအပ်သည်။ + +> ✅ ပိုတင်ရှိုမီတာသည် စက်ဝိုင်း၏ ခုခံမှုကို အသုံးပြုသူက ပြင်ဆင်နိုင်စေသော စက်ကိရိယာတစ်ခုဖြစ်သည်။ + +> အဲဒီအချိန်တွင် The New York Times သည် ပာစက်ထရွန်အကြောင်းကို *[Navy] သည် လမ်းလျှောက်နိုင်၊ စကားပြောနိုင်၊ မြင်နိုင်၊ ရေးနိုင်၊ ကိုယ့်ကိုယ်ကို ထပ်မံဖန်တီးနိုင်ပြီး၊ ကိုယ့်ရဲ့ တည်ရှိမှုကို သိနိုင်မည့် အီလက်ထရွန်နစ် ကွန်ပျူတာ၏ စတင်အဆင့်* ဟု ဖော်ပြခဲ့သည်။ + +## ပာစက်ထရွန် မော်ဒယ် + +မော်ဒယ်တွင် N အချက်အလက်များ ရှိသည်ဟု ယူဆပါစို့။ ထိုအခါ input vector သည် N အရွယ်အစားရှိသော ဗက်တာတစ်ခုဖြစ်သည်။ ပာစက်ထရွန်သည် **binary classification** မော်ဒယ်တစ်ခုဖြစ်ပြီး၊ အချက်အလက်နှစ်မျိုးကို ခွဲခြားနိုင်သည်။ အချက်အလက်များအတွက် input vector x တစ်ခုစီအတွက် ပာစက်ထရွန်၏ output သည် +1 သို့မဟုတ် -1 ဖြစ်မည်ဟု ယူဆပါမည်။ ထို output ကို အောက်ပါဖော်မြူလာဖြင့် တွက်ချက်မည်- + +y(x) = f(wTx) + +f သည် step activation function ဖြစ်သည်။ + + + + +## ပာစက်ထရွန်ကို သင်ကြားခြင်း + +ပာစက်ထရွန်ကို သင်ကြားရန်အတွက် အမှားအနည်းဆုံးဖြစ်စေရန် အများစုသော input data များကို မှန်ကန်စွာ ခွဲခြားနိုင်သော အလေးချိန်ဗက်တာ w ကို ရှာဖွေရမည်။ ထိုအမှား E ကို **perceptron criterion** ဖြင့် အောက်ပါအတိုင်း သတ်မှတ်သည်- + +E(w) = -∑wTxiti + +ဒီမှာ: + +* စုစုပေါင်းသည် မှားယွင်းသော ခွဲခြားမှုဖြစ်သော training data points i များအပေါ်တွင် ပြုလုပ်သည်။ +* xi သည် input data ဖြစ်ပြီး၊ ti သည် -1 သို့မဟုတ် +1 ဖြစ်သည် (negative နှင့် positive ตัวอย่างများအတွက်)။ + +ဤ criteria ကို အလေးချိန် w ၏ function အဖြစ် သတ်မှတ်ပြီး၊ ၎င်းကို အနည်းဆုံးအဆင့်သို့ လျှော့ချရန် လိုအပ်သည်။ မကြာခဏ **gradient descent** ဟုခေါ်သော နည်းလမ်းကို အသုံးပြုသည်။ ဤနည်းလမ်းတွင် စတင်အလေးချိန် w(0) ဖြင့် စတင်ပြီး၊ အဆင့်တစ်ခုစီတွင် အောက်ပါဖော်မြူလာအတိုင်း အလေးချိန်များကို ပြင်ဆင်သည်- + +w(t+1) = w(t) - η∇E(w) + +ဒီမှာ η သည် **learning rate** ဟုခေါ်ပြီး၊ ∇E(w) သည် E ၏ **gradient** ဖြစ်သည်။ Gradient ကို တွက်ချက်ပြီးနောက်- + +w(t+1) = w(t) + ∑ηxiti + +Python ဖြင့် ရေးသားထားသော အဲဒီ algorithm သည် အောက်ပါအတိုင်းဖြစ်သည်- + +```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 +``` + +## အကျဉ်းချုပ် + +ဒီသင်ခန်းစာတွင် binary classification မော်ဒယ်ဖြစ်သော ပာစက်ထရွန်နှင့် ၎င်းကို အလေးချိန်ဗက်တာကို အသုံးပြု၍ သင်ကြားနည်းကို သင်ယူခဲ့ပါသည်။ + +## 🚀 စိန်ခေါ်မှု + +သင့်ကိုယ်ပိုင် ပာစက်ထရွန်တစ်ခု ဖန်တီးကြည့်လိုပါက၊ [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) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +ပာစက်ထရွန်ကို အသုံးပြု၍ သေးငယ်သော ပြဿနာများနှင့် အမှန်တကယ် ပြဿနာများကို ဖြေရှင်းနိုင်ပုံကို ကြည့်ရှုရန်နှင့် ဆက်လက်လေ့လာရန် - [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) notebook သို့ သွားပါ။ + +ပာစက်ထရွန်များအကြောင်း စိတ်ဝင်စားဖွယ် [ဆောင်းပါး](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590) တစ်ပုဒ်လည်း ရှိပါသည်။ + +## [အိမ်စာ](lab/README.md) + +ဒီသင်ခန်းစာတွင် binary classification အလုပ်ကို ဆောင်ရွက်ရန် ပာစက်ထရွန်တစ်ခုကို ဖန်တီးခဲ့ပြီး၊ လက်ရေးလက်သားနံပါတ်နှစ်ခုကို ခွဲခြားရန် အသုံးပြုခဲ့သည်။ ဒီ lab တွင် သင့်အား နံပါတ်ခွဲခြားမှု ပြဿနာကို အပြည့်အစုံ ဖြေရှင်းရန် တိုက်တွန်းပါမည်။ အဓိကအားဖြင့် ပုံတစ်ပုံနှင့် ကိုက်ညီနိုင်သော နံပါတ်ကို သတ်မှတ်ရန် လိုအပ်သည်။ + +* [ညွှန်ကြားချက်များ](lab/README.md) +* [Notebook](../../../../../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/my/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/my/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..a9c0206f --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Multi-Class Classification with Perceptron + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ လက်တွေ့လေ့ကျင့်ခန်း။ + +## လုပ်ငန်းတာဝန် + +ဒီသင်ခန်းစာမှာ MNIST လက်ရေးလက်သားဂဏန်းများကို binary classification အတွက် ဖန်တီးထားတဲ့ ကုဒ်ကို အသုံးပြုပြီး၊ မည်သည့်ဂဏန်းကိုမဆို အသိအမှတ်ပြုနိုင်မည့် multi-class classified တစ်ခု ဖန်တီးပါ။ သင်ကြားမှုနှင့် စမ်းသပ်မှု dataset များပေါ်တွင် classification accuracy ကိုတွက်ချက်ပြီး confusion matrix ကို print ထုတ်ပါ။ + +## အကြံပြုချက်များ + +1. ဂဏန်းတစ်ခုစီအတွက် "ဒီဂဏန်း vs. အခြားဂဏန်းအားလုံး" binary classifier အတွက် dataset တစ်ခုဖန်တီးပါ။ +1. Binary classification အတွက် perceptron ၁၀ ခု (ဂဏန်းတစ်ခုစီအတွက် တစ်ခုစီ) ကို လေ့ကျင့်ပါ။ +1. Input digit ကို အသိအမှတ်ပြုနိုင်မည့် function တစ်ခု သတ်မှတ်ပါ။ + +> **အကြံပြုချက်**: Perceptron ၁၀ ခု၏ အလေးချိန်များကို matrix တစ်ခုအဖြစ် ပေါင်းစည်းထားနိုင်ပါက၊ input digits များကို perceptron ၁၀ ခုလုံးဖြင့် matrix multiplication တစ်ခုတည်းဖြင့် လျှောက်ထားနိုင်ပါမည်။ ထွက်လာသောရလဒ်တွင် `argmax` operation ကို အသုံးပြုခြင်းဖြင့် အများဆုံးဖြစ်နိုင်သောဂဏန်းကို ရှာဖွေနိုင်ပါသည်။ + +## စတင်ရန် Notebook + +[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/my/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/my/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..4e2554e1 --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,99 @@ + +# နယူးရယ်နက်ဝက်များကို မိတ်ဆက်ခြင်း။ Multi-Layered Perceptron + +ယခင်အခန်းတွင် သင်သည် အလွယ်တကူ နယူးရယ်နက်ဝက်မော်ဒယ် - တစ်လွှာတည်းရှိသော perceptron, linear two-class classification မော်ဒယ်ကို လေ့လာခဲ့ပါသည်။ + +ဤအခန်းတွင် ကျွန်ုပ်တို့သည် ဤမော်ဒယ်ကို ပိုမိုကျယ်ပြန့်သော framework သို့ တိုးချဲ့မည်ဖြစ်ပြီး၊ အောက်ပါအရာများကို ပြုလုပ်နိုင်စေမည်ဖြစ်သည်- + +* **multi-class classification** ကို two-class classification အပြင် ပြုလုပ်နိုင်စေမည် +* classification အပြင် **regression problems** ကို ဖြေရှင်းနိုင်စေမည် +* linear မဖြတ်နိုင်သော classes များကို ခွဲခြားနိုင်စေမည် + +ထို့အပြင် Python တွင် မိမိကိုယ်တိုင် modular framework တစ်ခုကို ဖွံ့ဖြိုးတိုးတက်စေပြီး၊ နယူးရယ်နက်ဝက် architecture များကို တည်ဆောက်နိုင်စေမည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Machine Learning ကို တိကျစွာ ဖော်ပြခြင်း + +Machine Learning ပြဿနာကို တိကျစွာ ဖော်ပြခြင်းဖြင့် စတင်ကြပါစို့။ သင့်တွင် training dataset **X** နှင့် labels **Y** ရှိသည်ဟု ယူဆပါ။ ထို့နောက် အတိအကျဆုံး ခန့်မှန်းချက်များကို ပြုလုပ်နိုင်မည့် *f* မော်ဒယ်တစ်ခုကို တည်ဆောက်ရန် လိုအပ်ပါသည်။ ခန့်မှန်းချက်များ၏ အရည်အသွေးကို **Loss function** ℒ ဖြင့် တိုင်းတာသည်။ အောက်ပါ loss functions များကို မကြာခဏ အသုံးပြုသည်- + +* regression problem အတွက်၊ နံပါတ်တစ်ခုကို ခန့်မှန်းရန် လိုအပ်သောအခါ **absolute error** ∑i|f(x(i))-y(i)| သို့မဟုတ် **squared error** ∑i(f(x(i))-y(i))2 ကို အသုံးပြုနိုင်သည်။ +* classification အတွက် **0-1 loss** (မော်ဒယ်၏ **accuracy** နှင့် အတူတူပင်) သို့မဟုတ် **logistic loss** ကို အသုံးပြုသည်။ + +တစ်လွှာတည်းရှိသော perceptron အတွက် *f* function ကို *f(x)=wx+b* ဟု သတ်မှတ်ထားသည် (ဤနေရာတွင် *w* သည် weight matrix ဖြစ်ပြီး၊ *x* သည် input features vector ဖြစ်ပြီး၊ *b* သည် bias vector ဖြစ်သည်။) နယူးရယ်နက်ဝက် architecture များအတွက် ဤ function သည် ပိုမိုရှုပ်ထွေးသော ပုံစံကို ရရှိနိုင်သည်။ + +> classification အတွက်၊ network output အနေဖြင့် classes များ၏ probability များကို ရရှိရန် လိုအပ်သောအခါများစွာရှိသည်။ output ကို normalize ပြုလုပ်ရန် **softmax** function σ ကို အသုံးပြုသည်။ ထို့ကြောင့် function *f* သည် *f(x)=σ(wx+b)* ဖြစ်လာသည်။ + +*f* ၏ အထက်ပါ သတ်မှတ်ချက်တွင် *w* နှင့် *b* ကို **parameters** θ=⟨*w,b*⟩ ဟု ခေါ်သည်။ dataset ⟨**X**,**Y**⟩ ကို ပေးထားသောအခါ၊ parameters θ အပေါ် dataset တစ်ခုလုံး၏ error ကို function အနေဖြင့် တွက်ချက်နိုင်သည်။ + +> ✅ **နယူးရယ်နက်ဝက် training ၏ ရည်ရွယ်ချက်မှာ parameters θ ကို ပြောင်းလဲခြင်းဖြင့် error ကို လျှော့ချရန် ဖြစ်သည်** + +## Gradient Descent Optimization + +Function optimization ၏ နာမည်ကျော်နည်းလမ်းတစ်ခုကို **gradient descent** ဟု ခေါ်သည်။ အဆိုပါ idea သည် loss function ၏ derivative (multi-dimensional အတွက် **gradient** ဟု ခေါ်သည်) ကို parameters အပေါ်တွင် တွက်ချက်ပြီး၊ error ကို လျှော့ချနိုင်စေရန် parameters များကို ပြောင်းလဲခြင်းဖြစ်သည်။ ဤနည်းလမ်းကို အောက်ပါအတိုင်း formalize ပြုလုပ်နိုင်သည်- + +* parameters များကို w(0), b(0) အဖြစ် random values ဖြင့် initialize ပြုလုပ်ပါ +* အောက်ပါအဆင့်ကို မကြာခဏ ထပ်မံလုပ်ဆောင်ပါ- + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Training အတွင်း optimization steps များကို dataset တစ်ခုလုံးကို အခြေခံ၍ တွက်ချက်ရန် ရည်ရွယ်ထားသည် (loss ကို training samples အားလုံးအတွက် စုစုပေါင်းအနေဖြင့် တွက်ချက်သည်ကို မှတ်ထားပါ။) သို့သော် အမှန်တကယ်တွင် dataset ၏ အပိုင်းငယ်များကို **minibatches** ဟု ခေါ်သည်။ ထို့နောက် data အစုတစ်ခုကို random အနေဖြင့် ရွေးချယ်ပြီး gradient များကို တွက်ချက်သည်။ အခါအားလျော်စွာ subset ကို random ရွေးချယ်သောကြောင့် ဤနည်းလမ်းကို **stochastic gradient descent** (SGD) ဟု ခေါ်သည်။ + +## Multi-Layered Perceptrons နှင့် Backpropagation + +တစ်လွှာတည်းရှိသော network သည် linear separable classes များကို ခွဲခြားနိုင်စွမ်းရှိသည်ဟု ကျွန်ုပ်တို့ မြင်ခဲ့ပါသည်။ ပိုမိုချောမွေ့သော မော်ဒယ်တစ်ခုကို တည်ဆောက်ရန်၊ network ၏ လွှာများစွာကို ပေါင်းစည်းနိုင်သည်။ သင်္ချာအရ၊ function *f* သည် ပိုမိုရှုပ်ထွေးသော ပုံစံကို ရရှိမည်ဖြစ်ပြီး၊ အဆင့်များစွာတွင် တွက်ချက်မည်ဖြစ်သည်- + +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +ဤနေရာတွင် α သည် **non-linear activation function** ဖြစ်ပြီး၊ σ သည် softmax function ဖြစ်သည်။ parameters θ=<*w1,b1,w2,b2*> ဖြစ်သည်။ + +Gradient descent algorithm သည် အတူတူပင်ရှိနေသော်လည်း gradient များကို တွက်ချက်ရန် ပိုမိုခက်ခဲလာမည်။ chain differentiation rule ကို အသုံးပြု၍ derivatives များကို အောက်ပါအတိုင်း တွက်ချက်နိုင်သည်- + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ chain differentiation rule ကို loss function ၏ parameters အပေါ် derivatives တွက်ချက်ရန် အသုံးပြုသည်။ + +ဤ expression များ၏ ဘယ်ဘက်ဆုံးအစိတ်အပိုင်းသည် အတူတူပင်ဖြစ်ပြီး၊ loss function မှ စတင်၍ computational graph ကို "backwards" သို့ သွားပြီး derivatives တွက်ချက်နိုင်သည်။ ထို့ကြောင့် multi-layered perceptron ကို training ပြုလုပ်ရန် **backpropagation** သို့မဟုတ် 'backprop' ဟု ခေါ်သော နည်းလမ်းကို အသုံးပြုသည်။ + +compute graph + +> TODO: image citation + +> ✅ ကျွန်ုပ်တို့၏ notebook ဥပမာတွင် backprop ကို ပိုမိုအသေးစိတ်လေ့လာမည်။ + +## နိဂုံး + +ဤသင်ခန်းစာတွင် ကျွန်ုပ်တို့သည် မိမိကိုယ်တိုင် neural network library တစ်ခုကို တည်ဆောက်ခဲ့ပြီး၊ two-dimensional classification task အတွက် အသုံးပြုခဲ့သည်။ + +## 🚀 စိန်ခေါ်မှု + +ပါဝင်သော notebook တွင် သင်သည် multi-layered perceptrons တည်ဆောက်ခြင်းနှင့် training ပြုလုပ်ခြင်းအတွက် မိမိကိုယ်တိုင် framework တစ်ခုကို အကောင်အထည်ဖော်မည်။ သင်သည် modern neural networks မည်သို့ လုပ်ဆောင်သည်ကို အသေးစိတ်ကြည့်ရှုနိုင်မည်။ + +[OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) notebook သို့ သွားပြီး အလုပ်လုပ်ပါ။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Review & Self Study + +Backpropagation သည် AI နှင့် ML တွင် အသုံးပြုသော နည်းလမ်းတစ်ခုဖြစ်ပြီး၊ [ပိုမိုအသေးစိတ်](https://wikipedia.org/wiki/Backpropagation) လေ့လာရန် တန်ဖိုးရှိသည်။ + +## [Assignment](lab/README.md) + +ဤ lab တွင် သင်သည် ဤသင်ခန်းစာတွင် တည်ဆောက်ခဲ့သော framework ကို အသုံးပြု၍ MNIST handwritten digit classification ကို ဖြေရှင်းရန် တိုက်တွန်းထားသည်။ + +* [Instructions](lab/README.md) +* [Notebook](../../../../../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/my/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/my/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..72e6d24f --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# MNIST ကိုယ်တိုင်ဖွဲ့စည်းထားသော Framework ဖြင့် ခွဲခြားခြင်း + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ Lab Assignment။ + +## တာဝန် + +1-, 2- နှင့် 3-layered perceptron ကို အသုံးပြု၍ MNIST လက်ရေးဂဏန်းများ ခွဲခြားခြင်း ပြဿနာကို ဖြေရှင်းပါ။ သင်ခန်းစာအတွင်း ဖွံ့ဖြိုးထားသော neural network framework ကို အသုံးပြုပါ။ + +## စတင်ရန် Notebook + +[MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) ကို ဖွင့်ပြီး lab ကို စတင်ပါ။ + +## မေးခွန်းများ + +ဤ lab ၏ ရလဒ်အနေနှင့် အောက်ပါမေးခွန်းများကို ဖြေရှင်းကြည့်ပါ- + +- Inter-layer activation function သည် network performance ကို သက်ရောက်မှုရှိပါသလား? +- ဤအလုပ်အတွက် 2-layered သို့မဟုတ် 3-layered network လိုအပ်ပါသလား? +- Layer အရေအတွက် တိုးလာသည်နှင့်အမျှ network ကို training လုပ်ရာတွင် ပြဿနာများ ရှိပါသလား? +- Training လုပ်စဉ်အတွင်း network ၏ weight များသည် ဘယ်လိုပြောင်းလဲသွားပါသလဲ? Epoch နှင့် ဆက်စပ်မှုကို နားလည်ရန် weight ၏ max abs value ကို plot လုပ်နိုင်ပါသည်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/my/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..922f4cac --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# နယူးရယ်နက်ဝက်ဖရိမ်းဝက်များ + +ကျွန်တော်တို့လေ့လာပြီးသားအတိုင်း နယူးရယ်နက်ဝက်များကို ထိရောက်စွာလေ့ကျင့်နိုင်ရန်အတွက် အရေးကြီးသောအချက်နှစ်ချက်ရှိပါတယ်- + +* Tensor များပေါ်တွင် လုပ်ဆောင်ရန်၊ ဥပမာ- တိုးမြှင့်ခြင်း၊ ပေါင်းခြင်း၊ sigmoid သို့မဟုတ် softmax ကဲ့သို့သော အချို့သော function များကိုတွက်ချက်ရန် +* Gradient descent optimization ကိုလုပ်ဆောင်ရန်အတွက် expression အားလုံး၏ gradient များကိုတွက်ချက်ရန် + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +`numpy` library သည် ပထမအချက်ကိုလုပ်ဆောင်နိုင်သော်လည်း gradient များကိုတွက်ချက်ရန်အတွက် mechanism တစ်ခုလိုအပ်ပါတယ်။ [ကျွန်တော်တို့ဖရိမ်းဝက်](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) တွင် ကျွန်တော်တို့သည် `backward` method အတွင်း derivative function အားလုံးကို လက်ဖြင့်ရေးသားရပြီး backpropagation ကိုလုပ်ဆောင်ခဲ့ရပါတယ်။ အကောင်းဆုံးအားဖြင့် ဖရိမ်းဝက်သည် ကျွန်တော်တို့သတ်မှတ်နိုင်သည့် *မည်သည့် expression* ၏ gradient များကိုမဆိုတွက်ချက်နိုင်စေရန် အခွင့်အလမ်းပေးသင့်ပါတယ်။ + +နောက်ထပ်အရေးကြီးသောအချက်တစ်ချက်မှာ GPU သို့မဟုတ် [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit) ကဲ့သို့သော အထူးပြု compute unit များပေါ်တွင်တွက်ချက်မှုများကိုလုပ်ဆောင်နိုင်ရမည်ဖြစ်သည်။ နက်ရှိုင်းသောနယူးရယ်နက်လေ့ကျင့်မှုသည် *အလွန်များသော* တိုင်းတာမှုများကိုလိုအပ်ပြီး GPU များပေါ်တွင် computation များကို parallelize လုပ်နိုင်ရန်အရေးကြီးပါတယ်။ + +> ✅ 'parallelize' ဆိုသည်မှာ တိုင်းတာမှုများကို စက်ပစ္စည်းများစွာပေါ်တွင် ဖြန့်ဝေခြင်းကိုဆိုလိုသည်။ + +လက်ရှိတွင် နယူးရယ်ဖရိမ်းဝက်များအနက် အများဆုံးလူကြိုက်များသောနှစ်ခုမှာ [TensorFlow](http://TensorFlow.org) နှင့် [PyTorch](https://pytorch.org/) တို့ဖြစ်သည်။ နှစ်ခုစလုံးသည် CPU နှင့် GPU နှစ်ခုစလုံးပေါ်တွင် tensor များနှင့်အလုပ်လုပ်ရန်အတွက် low-level API ကိုပေးသည်။ Low-level API အပေါ်တွင် [Keras](https://keras.io/) နှင့် [PyTorch Lightning](https://pytorchlightning.ai/) ဟုခေါ်သော high-level API ကိုလည်းပေးထားသည်။ + +Low-Level API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------|-------------------------------------|-------------------------------- +High-level API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Low-level APIs** တွင် **computational graphs** ဟုခေါ်သောအရာကိုတည်ဆောက်နိုင်သည်။ ဤ graph သည် input parameters များဖြင့် output (အများအားဖြင့် loss function) ကိုတွက်ချက်ရန်အတွက် သတ်မှတ်ထားပြီး GPU ပေါ်တွင်တွက်ချက်ရန်ပို့နိုင်သည်။ ဤ computational graph ကို differentiate လုပ်ပြီး gradient များကိုတွက်ချက်နိုင်သော function များလည်းရှိပြီး model parameters များကို optimize လုပ်ရန်အသုံးပြုနိုင်သည်။ + +**High-level APIs** တွင် နယူးရယ်နက်များကို **အလွှာများ၏အဆက်အစပ်** အဖြစ်သတ်မှတ်ပြီး နယူးရယ်နက်များကိုတည်ဆောက်ရန်ပိုမိုလွယ်ကူစေသည်။ Model ကိုလေ့ကျင့်ရန်အတွက် အချက်အလက်များကိုပြင်ဆင်ပြီး `fit` function ကိုခေါ်ရန်သာလိုအပ်သည်။ + +High-level API သည် နယူးရယ်နက်များကို အလွယ်တကူတည်ဆောက်နိုင်စေသော်လည်း Low-level API သည် လေ့ကျင့်မှုလုပ်ငန်းစဉ်ကိုပိုမိုထိန်းချုပ်နိုင်စေပြီး နယူးရယ်နက် architecture အသစ်များနှင့်အလုပ်လုပ်သောအခါတွင် အထူးအသုံးဝင်သည်။ + +Low-level API နှင့် High-level API ကိုအတူတူအသုံးပြုနိုင်သည်ကိုလည်းနားလည်ရမည်။ ဥပမာ- Low-level API ကိုအသုံးပြု၍ သင့်ကိုယ်ပိုင် network layer architecture တစ်ခုတည်ဆောက်ပြီး High-level API ဖြင့်တည်ဆောက်ထားသော network အတွင်း၌အသုံးပြုနိုင်သည်။ ဒါမှမဟုတ် High-level API ကိုအသုံးပြု၍ အလွှာများ၏အဆက်အစပ်အဖြစ် network တစ်ခုကိုသတ်မှတ်ပြီး သင့်ကိုယ်ပိုင် Low-level training loop ကိုအသုံးပြု၍ optimization လုပ်နိုင်သည်။ API နှစ်ခုစလုံးသည် အခြေခံအယူအဆတူညီပြီး အတူတူအလုပ်လုပ်ရန်အတွက်ဒီဇိုင်းထုတ်ထားသည်။ + +## လေ့လာမှု + +ဤသင်တန်းတွင် PyTorch နှင့် TensorFlow နှစ်ခုစလုံးအတွက် အကြောင်းအရာများကိုပေးထားသည်။ သင့်နှစ်သက်သောဖရိမ်းဝက်ကိုရွေးချယ်ပြီး သက်ဆိုင်ရာ notebook များကိုသာလေ့လာနိုင်သည်။ မည်သည့်ဖရိမ်းဝက်ကိုရွေးချယ်ရမည်ဆိုသည်ကိုမသေချာပါက **PyTorch vs. TensorFlow** အကြောင်းအင်တာနက်တွင်ဆွေးနွေးချက်များကိုဖတ်ရှုပါ။ ဖရိမ်းဝက်နှစ်ခုစလုံးကိုကြည့်ရှု၍ ပိုမိုနားလည်နိုင်ပါသည်။ + +အခွင့်အလမ်းရှိသလောက် High-Level APIs ကိုရိုးရှင်းစွာအသုံးပြုမည်ဖြစ်သည်။ သို့သော် နယူးရယ်နက်များသည် အခြေခံမှစ၍ မည်သို့အလုပ်လုပ်သည်ကိုနားလည်ရန်အရေးကြီးသည်ဟုကျွန်တော်တို့ယုံကြည်ပါသည်။ ထို့ကြောင့် စတင်ရာတွင် Low-level API နှင့် tensor များဖြင့်အလုပ်လုပ်ခြင်းမှစတင်ပါမည်။ သို့သော် သင်အမြန်စတင်လိုပြီး ဤအသေးစိတ်အချက်များကိုလေ့လာရန်အချိန်မကုန်ချင်ပါက High-level API notebook များသို့တိုက်ရိုက်သွားနိုင်ပါသည်။ + +## ✍️ လေ့ကျင့်မှု: ဖရိမ်းဝက်များ + +အောက်ပါ notebook များတွင် သင်ကြားမှုကိုဆက်လက်လုပ်ဆောင်ပါ- + +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* + +ဖရိမ်းဝက်များကိုကျွမ်းကျင်ပြီးပါက overfitting ၏အယူအဆကိုပြန်လည်သုံးသပ်ပါ။ + +# Overfitting + +Overfitting သည် စက်လေ့ကျင့်မှုတွင် အလွန်အရေးကြီးသောအယူအဆတစ်ခုဖြစ်ပြီး မှန်ကန်စွာနားလည်ရမည်ဖြစ်သည်။ + +အောက်ပါ ၅ ခုသောအမှတ်များကို (graph များပေါ်တွင် `x` ဖြင့်ဖော်ပြထားသည်) approximation ပြုလုပ်ရန်ပြဿနာကိုစဉ်းစားကြည့်ပါ- + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.my.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.my.jpg) +-------------------------|-------------------------- +**Linear model, 2 parameters** | **Non-linear model, 7 parameters** +Training error = 5.3 | Training error = 0 +Validation error = 5.1 | Validation error = 20 + +* ဘယ်ဘက်တွင် parameters အရေအတွက်သင့်တော်သောကြောင့် model သည် point distribution ၏အဓိပ္ပာယ်ကိုမှန်ကန်စွာနားလည်သည်။ +* ညာဘက်တွင် model သည် အလွန်အစွမ်းထက်သည်။ ၅ ခုသောအမှတ်များသာရှိပြီး model တွင် parameters ၇ ခုရှိသောကြောင့် အမှတ်အားလုံးကိုဖြတ်သွားရန်အလွယ်တကူညှိနိုင်သည်။ ထို့ကြောင့် training error သည် 0 ဖြစ်သော်လည်း data ၏မှန်ကန်သော pattern ကိုနားလည်ရန်မအောင်မြင်သဖြင့် validation error သည်အလွန်မြင့်မားသည်။ + +Model ၏အစွမ်းအင် (parameters အရေအတွက်) နှင့် training samples အရေအတွက်အကြားမှန်ကန်သောချိန်ခွင့်ကိုရရှိရန်အရေးကြီးသည်။ + +## Overfitting ဖြစ်ပေါ်ရခြင်း၏အကြောင်းရင်းများ + + * Training data မလုံလောက်ခြင်း + * Model အလွန်အစွမ်းထက်ခြင်း + * Input data တွင်ဆူညံသံများအလွန်များခြင်း + +## Overfitting ကိုမည်သို့သိရှိရမည် + +အထက်ပါ graph မှကြည့်နိုင်သည့်အတိုင်း Overfitting ကို training error အလွန်နိမ့်ပြီး validation error အလွန်မြင့်ခြင်းဖြင့်သိနိုင်သည်။ Training အတွင်း training နှင့် validation error နှစ်ခုစလုံးလျော့နည်းလာပြီး တစ်ချိန်တွင် validation error သည်လျော့နည်းမှုရပ်ပြီး တက်လာနိုင်သည်။ ဤသည်မှာ Overfitting ဖြစ်ပေါ်နေကြောင်းပြသပြီး training ကိုရပ်ရန်သင့်တော်သောအချိန်ဖြစ်သည် (သို့မဟုတ် model ၏ snapshot တစ်ခုကိုယူထားရန်လိုအပ်သည်)။ + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.my.png) + +## Overfitting ကိုမည်သို့ကာကွယ်ရမည် + +Overfitting ဖြစ်ပေါ်နေကြောင်းမြင်နိုင်ပါက အောက်ပါအရာများကိုလုပ်ဆောင်နိုင်သည်- + + * Training data အရေအတွက်ကိုတိုးမြှင့်ပါ + * Model ၏စိုက်ထုတ်မှုကိုလျော့ချပါ + * [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout) ကဲ့သို့သော [regularization technique](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md) တစ်ခုကိုအသုံးပြုပါ၊ ဤအကြောင်းကိုနောက်ပိုင်းတွင်ဆွေးနွေးမည်။ + +## Overfitting နှင့် Bias-Variance Tradeoff + +Overfitting သည် စာရင်းအင်းသိပ္ပံတွင် [Bias-Variance Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff) ဟုခေါ်သော ပိုမိုအထွေထွေပြဿနာတစ်ခု၏အခြေအနေတစ်ခုဖြစ်သည်။ Model ၏ error ရင်းမြစ်များကိုစဉ်းစားပါက error နှစ်မျိုးကိုတွေ့နိုင်သည်- + +* **Bias errors** သည် training data နှင့် model ၏ဆက်ဆံရေးကိုမှန်ကန်စွာဖမ်းမိနိုင်ခြင်းမရှိခြင်းကြောင့်ဖြစ်ပေါ်သည်။ Model ၏အစွမ်းအင်မလုံလောက်ခြင်း (**underfitting**) ကြောင့်ဖြစ်နိုင်သည်။ +* **Variance errors** သည် input data တွင်ဆူညံသံကိုမှန်ကန်သောဆက်ဆံရေးအစား approximation ပြုလုပ်ခြင်းကြောင့်ဖြစ်ပေါ်သည် (**overfitting**)။ + +Training အတွင်း bias error သည်လျော့နည်းလာပြီး (model သည် data ကို approximation ပြုလုပ်သည့်အခါ) variance error သည်တိုးလာသည်။ Overfitting ကိုကာကွယ်ရန် training ကိုလက်ဖြင့် (သို့မဟုတ် regularization ကိုအသုံးပြု၍ အလိုအလျောက်) ရပ်တန့်ရန်အရေးကြီးသည်။ + +## နိဂုံးချုပ် + +ဤသင်ခန်းစာတွင် AI ဖရိမ်းဝက်နှစ်ခုဖြစ်သည့် TensorFlow နှင့် PyTorch ၏ API များအကြားကွာခြားချက်များကိုလေ့လာခဲ့ပါသည်။ ထို့အပြင် Overfitting ဟုခေါ်သောအရေးကြီးသောအကြောင်းအရာတစ်ခုကိုလည်းလေ့လာခဲ့ပါသည်။ + +## 🚀 စိန်ခေါ်မှု + +အတူတူပါဝင်သော notebook များတွင် 'tasks' များကိုအောက်ဆုံးတွင်တွေ့နိုင်ပါသည်။ Notebook များကိုလုပ်ဆောင်ပြီး tasks များကိုပြီးမြောက်ပါ။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +အောက်ပါအကြောင်းအရာများကိုလေ့လာပါ- + +- TensorFlow +- PyTorch +- Overfitting + +ကိုယ်တိုင်ကိုယ်တိုင်အောက်ပါမေးခွန်းများကိုမေးပါ- + +- TensorFlow နှင့် PyTorch အကြားကွာခြားချက်ကဘာလဲ? +- Overfitting နှင့် Underfitting အကြားကွာခြားချက်ကဘာလဲ? + +## [Assignment](lab/README.md) + +ဤ lab တွင် PyTorch သို့မဟုတ် TensorFlow ကိုအသုံးပြု၍ single-layer နှင့် multi-layered fully-connected networks နှစ်မျိုးစလုံးဖြင့် classification ပြဿနာနှစ်ခုကိုဖြေရှင်းရန်လိုအပ်သည်။ + +* [ညွှန်ကြားချက်များ](lab/README.md) +* [Notebook](../../../../../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/my/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/my/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..65a01f03 --- /dev/null +++ b/translations/my/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) မှ Lab Assignment။ + +## တာဝန် + +PyTorch သို့မဟုတ် TensorFlow ကို အသုံးပြု၍ single-layer နှင့် multi-layered fully-connected networks များဖြင့် အမျိုးအစားခွဲခြားခြင်းဆိုင်ရာ ပြဿနာ ၂ ခုကို ဖြေရှင်းပါ။ + +1. **[Iris classification](https://en.wikipedia.org/wiki/Iris_flower_data_set)** ပြဿနာ - tabular input data ဖြင့် classical machine learning ဖြင့် ကိုင်တွယ်နိုင်သော ပြဿနာတစ်ခု။ သင့်ရဲ့ ရည်မှန်းချက်မှာ 4 ခုသော ကိန်းဂဏန်း parameters အပေါ်မူတည်ပြီး iris များကို အမျိုးအစား 3 ခုသို့ ခွဲခြားရန်ဖြစ်ပါသည်။ +1. **MNIST** လက်ရေးအင်္ဂါရပ်ဂဏန်းများ အမျိုးအစားခွဲခြားခြင်းပြဿနာကို ယခင်က တွေ့ရှိခဲ့ပါသည်။ + +အကောင်းဆုံး တိကျမှုရလဒ်ကို ရရှိစေရန် အမျိုးမျိုးသော network architectures များကို စမ်းသပ်ပါ။ + +## စတင်ရန် Notebook + +[LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) ကို ဖွင့်ပြီး lab ကို စတင်ပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရားရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားယူမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/3-NeuralNetworks/README.md b/translations/my/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..e2e81400 --- /dev/null +++ b/translations/my/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,61 @@ + +# နယူးရယ်နက်ဝါ့ခ်များအကြောင်းမိတ်ဆက် + +![နယူးရယ်နက်ဝါ့ခ်များအကြောင်းအကျဉ်းချုပ်ကို ရေးဆွဲထားသောပုံ](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.my.png) + +မိတ်ဆက်အစပိုင်းတွင် ပြောခဲ့သလို၊ တစ်ခုသော **ကွန်ပျူတာမော်ဒယ်** သို့မဟုတ် **အတုဦးနှောက်** ကိုလေ့ကျင့်ခြင်းသည် ဉာဏ်ရည်ရရှိရန် နည်းလမ်းတစ်ခုဖြစ်သည်။ ၂၀ ရာစုလယ်ပိုင်းမှစ၍ သုတေသနပြုသူများက သုံးစွဲနိုင်သော သင်္ချာမော်ဒယ်များကို ကြိုးစားခဲ့ကြပြီး၊ မကြာသေးမီနှစ်များတွင် ဤလမ်းကြောင်းသည် အလွန်အောင်မြင်မှုရရှိခဲ့သည်။ ဦးနှောက်၏ သင်္ချာမော်ဒယ်များကို **နယူးရယ်နက်ဝါ့ခ်များ** ဟုခေါ်သည်။ + +> တခါတရံ နယူးရယ်နက်ဝါ့ခ်များကို *Artificial Neural Networks* (ANNs) ဟုလည်းခေါ်ကြပြီး၊ ဤသည်မှာ အမှန်တကယ်သော နယူးရွန်များ၏ကွန်ရက်မဟုတ်ပဲ မော်ဒယ်များကို ပြောဆိုနေသည်ကို ဖော်ပြရန်ဖြစ်သည်။ + +## မက်ရှင်လေနင်း + +နယူးရယ်နက်ဝါ့ခ်များသည် **မက်ရှင်လေနင်း** ဟုခေါ်သော အကြီးမားသောဘာသာရပ်တစ်ခု၏ အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီး၊ ၎င်း၏ရည်မှန်းချက်မှာ ဒေတာကိုအသုံးပြု၍ ပြဿနာများကို ဖြေရှင်းနိုင်သော ကွန်ပျူတာမော်ဒယ်များကို လေ့ကျင့်ခြင်းဖြစ်သည်။ မက်ရှင်လေနင်းသည် အတုဉာဏ်ရည်၏ အရေးပါသောအစိတ်အပိုင်းတစ်ခုဖြစ်သော်လည်း၊ ဤသင်ရိုး၌ ရိုးရာမက်ရှင်လေနင်းကို မဖော်ပြပါ။ + +> ရိုးရာမက်ရှင်လေနင်းအကြောင်းပိုမိုလေ့လာရန် **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** သင်ရိုးကို သွားရောက်ကြည့်ရှုပါ။ + +မက်ရှင်လေနင်းတွင်၊ ငါတို့တွင် **X** ဟုခေါ်သော ဥပမာဒေတာများနှင့် **Y** ဟုခေါ်သော ဆက်စပ်ထွက်လဒ်တန်ဖိုးများရှိသည်ဟု သတ်မှတ်သည်။ ဥပမာများသည် အများအားဖြင့် **features** ပါဝင်သော N-အတိုင်းအတာဗက်တာများဖြစ်ပြီး၊ ထွက်လဒ်များကို **labels** ဟုခေါ်သည်။ + +ကျွန်ုပ်တို့သည် အများဆုံးတွေ့ရသော မက်ရှင်လေနင်းပြဿနာနှစ်ခုကို စဉ်းစားမည်- + +* **Classification** - အဝင်အရာဝတ္ထုကို အတန်းနှစ်ခု သို့မဟုတ် အတန်းများစွာအတွင်းသို့ ခွဲခြားရမည်။ +* **Regression** - အဝင်နမူနာတစ်ခုစီအတွက် ကိန်းဂဏန်းတန်ဖိုးတစ်ခုကို ခန့်မှန်းရမည်။ + +> အဝင်နှင့်ထွက်လဒ်များကို တန်ဆာများအဖြစ် ကိုယ်စားပြုသောအခါ၊ အဝင်ဒေတာစုသည် M×N အရွယ်အစားရှိသော မက်ထရစ်ဖြစ်ပြီး၊ M သည် နမူနာအရေအတွက်ဖြစ်ကာ N သည် အင်္ဂါရပ်အရေအတွက်ဖြစ်သည်။ ထွက်လဒ် **Y** သည် M အရွယ်အစားရှိသော ဗက်တာဖြစ်သည်။ + +ဤသင်ရိုး၌၊ နယူးရယ်နက်ဝါ့ခ်မော်ဒယ်များကိုသာ အာရုံစိုက်မည်။ + +## နယူးရွန်၏မော်ဒယ် + +ဇီဝဗေဒမှ ကျွန်ုပ်တို့သိသည်မှာ၊ ကျွန်ုပ်တို့၏ဦးနှောက်သည် နယူးရွန်ဆဲလ်များဖြင့် ဖွဲ့စည်းထားပြီး၊ ၎င်းတို့တွင် "အဝင်" (axons) များစွာနှင့် "ထွက်" (dendrite) တစ်ခုရှိသည်။ Axons နှင့် dendrites သည် လျှပ်စစ်သံလိုက်သင်္ကေတများကို သယ်ဆောင်နိုင်ပြီး၊ axons နှင့် dendrites အကြားရှိ ချိတ်ဆက်မှုများသည် ကွဲပြားသော စွမ်းဆောင်ရည်များကို ပြသနိုင်သည် (neuromediators ဖြင့် ထိန်းချုပ်သည်)။ + +![နယူးရွန်၏မော်ဒယ်](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.my.jpg) | ![နယူးရွန်၏မော်ဒယ်](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.my.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 သည် **activation function** ဟုခေါ်သော မလိုက်လျောသောအလုပ်ဆောင်မှုဖြစ်သည်။ + +> နယူးရွန်၏အစောပိုင်းမော်ဒယ်များကို 1943 ခုနှစ်တွင် Warren McCullock နှင့် Walter Pitts ၏ [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 သည် ၎င်း၏ "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" စာအုပ်တွင် ဤကွန်ရက်များကို လေ့ကျင့်နိုင်သော နည်းလမ်းကို အဆိုပြုခဲ့သည်။ + +## ဤအပိုင်းတွင် + +ဤအပိုင်းတွင် ကျွန်ုပ်တို့သည် အောက်ပါအကြောင်းအရာများကို လေ့လာမည်- + +* [Perceptron](03-Perceptron/README.md) - နှစ်တန်းခွဲခြားမှုအတွက် အစောပိုင်းနယူးရယ်နက်ဝါ့ခ်မော်ဒယ်တစ်ခု +* [Multi-layered networks](04-OwnFramework/README.md) နှင့် [ကျွန်ုပ်တို့၏ကိုယ်ပိုင် framework တည်ဆောက်နည်း](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) ကိုပါသော notebook +* [Neural Network Frameworks](05-Frameworks/README.md) - အောက်ပါ notebook များဖြင့်: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) နှင့် [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../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/my/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/my/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..380a6ae7 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# ကွန်ပျူတာဗီရှင်းအကြောင်းမိတ်ဆက် + +[ကွန်ပျူတာဗီရှင်း](https://wikipedia.org/wiki/Computer_vision) ဆိုတာက ကွန်ပျူတာတွေကို ဒစ်ဂျစ်တယ်ပုံရိပ်တွေကို အဆင့်မြင့်နားလည်မှုရရှိစေဖို့ ရည်ရွယ်တဲ့ အပိုင်းတစ်ခုဖြစ်ပါတယ်။ ဒီအဓိပ္ပါယ်က အတော်လေးကျယ်ပြန့်ပြီး *နားလည်မှု* ဆိုတာ အမျိုးမျိုးသောအရာတွေကို ဆိုလိုနိုင်ပါတယ်။ ဥပမာအားဖြင့် ပုံထဲမှာ အရာဝတ္ထုတစ်ခုကို ရှာဖွေခြင်း (**object detection**), ဖြစ်ပျက်နေတဲ့အရာကို နားလည်ခြင်း (**event detection**), ပုံကို စာသားနဲ့ ဖော်ပြခြင်း, ဒါမှမဟုတ် 3D အနေအထားမှာ ရှုခင်းကို ပြန်လည်တည်ဆောက်ခြင်းစသည်ဖြင့်။ လူပုံရိပ်တွေနဲ့ဆိုင်တဲ့ အထူးလုပ်ငန်းတွေပါရှိပါတယ် - အသက်အရွယ်နဲ့ခံစားချက်ခန့်မှန်းခြင်း, မျက်နှာရှာဖွေခြင်းနဲ့ မှတ်မိခြင်း, 3D အနေအထားခန့်မှန်းခြင်းစသည်ဖြင့်။ + +## [မိန့်ခွန်းမတိုင်မီမေးခွန်း](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +ကွန်ပျူတာဗီရှင်းရဲ့ အလွယ်ဆုံးလုပ်ငန်းတစ်ခုက **ပုံရိပ်အမျိုးအစားခွဲခြင်း** ဖြစ်ပါတယ်။ + +ကွန်ပျူတာဗီရှင်းကို AI ရဲ့ အပိုင်းတစ်ခုအဖြစ် အများအားဖြင့် သတ်မှတ်ကြပါတယ်။ ယနေ့ခေတ်မှာ ကွန်ပျူတာဗီရှင်းလုပ်ငန်းအများစုကို နယူးရယ်နက်ဝက်များကို အသုံးပြုပြီး ဖြေရှင်းကြပါတယ်။ ကွန်ပျူတာဗီရှင်းအတွက် အသုံးပြုတဲ့ နယူးရယ်နက်ဝက်အမျိုးအစား [convolutional neural networks](../07-ConvNets/README.md) အကြောင်းကို ဒီအပိုင်းမှာ သင်ယူသွားပါမယ်။ + +သို့သော် ပုံရိပ်ကို နယူးရယ်နက်ဝက်ဆီ ပေးပို့မီမှာ အခါအားလျော်စွာ ပုံရိပ်ကို တိုးတက်စေဖို့ algorithmic နည်းလမ်းတွေကို အသုံးပြုဖို့ make sense ဖြစ်ပါတယ်။ + +Python မှာ ပုံရိပ်ကို ကိုင်တွယ်ဖို့ library အများအပြားရှိပါတယ် - + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** ကို ပုံရိပ် format အမျိုးမျိုးကို ဖတ်/ရေးဖို့ အသုံးပြုနိုင်ပါတယ်။ ဒါ့အပြင် ffmpeg ကိုလည်း ပံ့ပိုးပေးပြီး ဗီဒီယို frame တွေကို ပုံရိပ်အဖြစ် ပြောင်းဖို့ အသုံးပြုနိုင်ပါတယ်။ +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (PIL အဖြစ်လည်း သိထားကြပါတယ်) က ပိုမိုအစွမ်းထက်ပြီး ပုံရိပ်ကို ပြောင်းလဲခြင်း၊ palette ကို ချိန်ညှိခြင်းစသည်ဖြင့် လုပ်ဆောင်နိုင်ပါတယ်။ +* **[OpenCV](https://opencv.org/)** က C++ နဲ့ရေးသားထားတဲ့ အစွမ်းထက်တဲ့ ပုံရိပ်ကိုင်တွယ်မှု library ဖြစ်ပြီး image processing အတွက် *de facto* standard ဖြစ်လာပါတယ်။ Python interface လည်း ရှိပါတယ်။ +* **[dlib](http://dlib.net/)** က machine learning algorithm အများအပြားကို အကောင်အထည်ဖော်ထားတဲ့ C++ library ဖြစ်ပြီး Computer Vision algorithm အချို့ကိုလည်း ပါဝင်ပါတယ်။ Python interface ရှိပြီး မျက်နှာနဲ့ မျက်နှာ landmark detection စသည်ဖြင့် အခက်အခဲရှိတဲ့လုပ်ငန်းတွေကို လုပ်ဆောင်နိုင်ပါတယ်။ + +## OpenCV + +[OpenCV](https://opencv.org/) ကို ပုံရိပ်ကိုင်တွယ်မှုအတွက် *de facto* standard အဖြစ် သတ်မှတ်ကြပါတယ်။ C++ နဲ့ရေးသားထားတဲ့ အသုံးဝင်တဲ့ algorithm အများအပြား ပါဝင်ပါတယ်။ Python ကနေ OpenCV ကို ခေါ်သုံးနိုင်ပါတယ်။ + +OpenCV ကို သင်ယူဖို့ အကောင်းဆုံးနေရာက [ဒီ Learn OpenCV course](https://learnopencv.com/getting-started-with-opencv/) ဖြစ်ပါတယ်။ ကျွန်တော်တို့ရဲ့ သင်ခန်းစာမှာ OpenCV ကို သင်ယူဖို့မဟုတ်ဘဲ OpenCV ကို ဘယ်အချိန်မှာ အသုံးပြုနိုင်မလဲ၊ ဘယ်လိုအသုံးပြုမလဲဆိုတာကို ဥပမာအချို့နဲ့ ပြသဖို့ ရည်ရွယ်ပါတယ်။ + +### ပုံရိပ်များကို Load လုပ်ခြင်း + +Python မှာ ပုံရိပ်တွေကို NumPy array အဖြစ် အဆင်ပြေစွာ ကိုယ်စားပြုနိုင်ပါတယ်။ ဥပမာအားဖြင့် 320x200 pixel အရွယ်ရှိ grayscale ပုံရိပ်တွေကို 200x320 array အဖြစ် သိမ်းဆည်းနိုင်ပြီး အရောင်ပုံရိပ်တွေကတော့ 200x320x3 (အရောင် channel 3 ခုအတွက်) shape ရှိပါတယ်။ ပုံရိပ်ကို load လုပ်ဖို့ အောက်ပါ code ကို အသုံးပြုနိုင်ပါတယ် - + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +ရိုးရာအားဖြင့် OpenCV က အရောင်ပုံရိပ်တွေကို BGR (Blue-Green-Red) encoding ကို အသုံးပြုပြီး Python tools အများစုက RGB (Red-Green-Blue) encoding ကို အသုံးပြုပါတယ်။ ပုံရိပ်ကို မှန်ကန်စွာ ပြသဖို့ RGB color space ကို ပြောင်းဖို့လိုပါတယ်။ NumPy array မှာ dimension တွေကို ပြောင်းခြင်း၊ ဒါမှမဟုတ် OpenCV function ကို ခေါ်သုံးခြင်းဖြင့် ပြောင်းနိုင်ပါတယ် - + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +တူညီတဲ့ `cvtColor` function ကို အခြား color space transformation တွေကို လုပ်ဆောင်ဖို့လည်း အသုံးပြုနိုင်ပါတယ်။ ဥပမာအားဖြင့် ပုံရိပ်ကို grayscale သို့မဟုတ် HSV (Hue-Saturation-Value) color space ကို ပြောင်းခြင်း။ + +OpenCV ကို အသုံးပြုပြီး ဗီဒီယို frame-by-frame ကို load လုပ်နိုင်ပါတယ် - ဥပမာကို [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) မှာ ပေးထားပါတယ်။ + +### ပုံရိပ်ကို ကိုင်တွယ်ခြင်း + +ပုံရိပ်ကို နယူးရယ်နက်ဝက်ဆီ ပေးပို့မီမှာ pre-processing လုပ်ငန်းအချို့ကို လုပ်ဆောင်ချင်နိုင်ပါတယ်။ OpenCV က အများကြီးလုပ်နိုင်ပါတယ်၊ အထူးသဖြင့် - + +* **ပုံရိပ်ကို Resizing** `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` ကို အသုံးပြုခြင်း +* **ပုံရိပ်ကို Blurring** `im = cv2.medianBlur(im,3)` သို့မဟုတ် `im = cv2.GaussianBlur(im, (3,3), 0)` ကို အသုံးပြုခြင်း +* **အလင်းနဲ့ contrast** ကို NumPy array ကို manipulate လုပ်ခြင်းဖြင့် ပြောင်းလဲနိုင်ပါတယ်၊ [ဒီ Stackoverflow note](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv) မှာ ဖော်ပြထားပါတယ်။ +* [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) ကို `cv2.threshold`/`cv2.adaptiveThreshold` function တွေကို ခေါ်သုံးခြင်းဖြင့် ပြုလုပ်နိုင်ပါတယ်၊ brightness သို့မဟုတ် contrast ကို ချိန်ညှိခြင်းထက် ပိုမိုကောင်းမွန်ပါတယ်။ +* ပုံရိပ်ကို [transformations](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) အမျိုးမျိုးကို အသုံးပြုခြင်း: + - **[Affine transformations](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** က ပုံရိပ်ထဲမှာ rotation, resizing နဲ့ skewing ကို ပေါင်းစပ်ဖို့ အသုံးဝင်ပြီး ပုံရိပ်ထဲမှာ point 3 ခုရဲ့ source နဲ့ destination location ကို သိထားရပါမယ်။ Affine transformations က parallel line တွေကို parallel အတိုင်း ထားရှိပါတယ်။ + - **[Perspective transformations](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** က ပုံရိပ်ထဲမှာ point 4 ခုရဲ့ source နဲ့ destination position ကို သိထားရပါမယ်။ ဥပမာအားဖြင့် smartphone ကင်မရာနဲ့ angle တစ်ခုကနေ rectangular document ကို ရိုက်ပြီး document ကို rectangular ပုံရိပ်အဖြစ် ပြောင်းလဲချင်တဲ့အခါ။ +* **[optical flow](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)** ကို အသုံးပြုပြီး ပုံရိပ်ထဲမှာ လှုပ်ရှားမှုကို နားလည်ခြင်း။ + +## ကွန်ပျူတာဗီရှင်းကို အသုံးပြုတဲ့ ဥပမာများ + +ကျွန်တော်တို့ရဲ့ [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) မှာ ကွန်ပျူတာဗီရှင်းကို အသုံးပြုပြီး အထူးလုပ်ငန်းတွေကို လုပ်ဆောင်တဲ့ ဥပမာအချို့ကို ပေးထားပါတယ် - + +* **Braille စာအုပ်ရဲ့ ဓာတ်ပုံကို Pre-processing လုပ်ခြင်း**။ thresholding, feature detection, perspective transformation နဲ့ NumPy manipulations ကို အသုံးပြုပြီး Braille symbol တစ်ခုချင်းစီကို neural network နဲ့ classification လုပ်ဖို့ ခွဲထုတ်ပေးနိုင်ပါတယ်။ + +![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.my.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.my.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.my.png) +----|-----|----- + +> [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) မှ ပုံရိပ် + +* **Frame difference ကို အသုံးပြုပြီး ဗီဒီယိုထဲမှာ motion ကို ရှာဖွေခြင်း**။ ကင်မရာက fix ဖြစ်နေတဲ့အခါမှာ frame တွေဟာ တစ်ခုနဲ့တစ်ခု အတော်လေးတူညီပါတယ်။ frame တွေကို array အဖြစ် ကိုယ်စားပြုထားတဲ့အတွက် frame 2 ခုကို subtract လုပ်ခြင်းဖြင့် pixel difference ကို ရရှိနိုင်ပြီး static frame တွေမှာ pixel difference ဟာ နည်းပါးပြီး motion ရှိတဲ့အခါမှာ pixel difference ဟာ မြင့်မားလာပါတယ်။ + +![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.my.png) + +> [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) မှ ပုံရိပ် + +* **Optical Flow ကို အသုံးပြုပြီး motion ရှာဖွေခြင်း**။ [Optical flow](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) က ဗီဒီယို frame တွေထဲမှာ pixel တစ်ခုချင်းစီ ဘယ်လိုရွေ့လျားနေတယ်ဆိုတာကို နားလည်စေပါတယ်။ Optical flow 2 မျိုးရှိပါတယ် - + + - **Dense Optical Flow** က pixel တစ်ခုချင်းစီ ဘယ်နေရာကိုရွေ့လျားနေတယ်ဆိုတာကို ပြသတဲ့ vector field ကို တွက်ချက်ပေးပါတယ်။ + - **Sparse Optical Flow** က ပုံရိပ်ထဲမှာ အထူးသတ်မှတ်ချက်ရှိတဲ့ feature (ဥပမာ edge) တွေကို ရွေးပြီး frame တစ်ခုနဲ့တစ်ခုကြားမှာ trajectory ကို တည်ဆောက်ပေးပါတယ်။ + +![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.my.png) + +> [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) မှ ပုံရိပ် + +## ✍️ ဥပမာ Notebook: OpenCV [OpenCV in Action ကို စမ်းကြည့်ပါ](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +[OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ကို စူးစမ်းပြီး OpenCV နဲ့ စမ်းသပ်မှုတွေ လုပ်ကြည့်ပါ။ + +## နိဂုံး + +တစ်ခါတစ်ရံ motion detection သို့မဟုတ် fingertip detection ကဲ့သို့ အတော်လေးရှုပ်ထွေးတဲ့လုပ်ငန်းတွေကို pure computer vision နဲ့ ဖြေရှင်းနိုင်ပါတယ်။ ဒါကြောင့် ကွန်ပျူတာဗီရှင်းရဲ့ အခြေခံနည်းလမ်းတွေကို သိထားဖို့၊ OpenCV က ဘာတွေ လုပ်နိုင်တယ်ဆိုတာကို သိထားဖို့ အရေးကြီးပါတယ်။ + +## 🚀 စိန်ခေါ်မှု + +AI show မှာ [ဒီဗီဒီယို](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 project အကြောင်းနဲ့ သူတို့ဘယ်လို robot ကို အသုံးပြုပြီး computer vision လုပ်ငန်းတွေကို democratize လုပ်ဖို့ block-based solution တည်ဆောက်ခဲ့တယ်ဆိုတာကို သင်ယူပါ။ ဒီလို project အခြားတွေကို ရှာဖွေပြီး ကွန်ပျူတာဗီရှင်းနယ်ပယ်ကို သင်ယူသူအသစ်တွေ onboard လုပ်ဖို့ ဘယ်လိုကူညီနိုင်တယ်ဆိုတာကို သုတေသနလုပ်ပါ။ + +## [မိန့်ခွန်းပြီးနောက်မေးခွန်း](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +Optical flow အကြောင်းကို [ဒီအလွန်ကောင်းမွန်တဲ့ tutorial](https://learnopencv.com/optical-flow-in-opencv/) မှာ ဖတ်ရှုပါ။ + +## [Assignment](lab/README.md) + +ဒီ lab မှာ သင် gesture ရိုးရှင်းတဲ့ ဗီဒီယိုတစ်ခုကို ရိုက်ကူးပြီး optical flow ကို အသုံးပြုပြီး up/down/left/right motion တွေကို ရှာဖွေဖို့ ရည်ရွယ်ပါတယ်။ + +Palm Movement Frame + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/my/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..e089c07e --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Optical Flow ကို အသုံးပြု၍ လှုပ်ရှားမှုများကို ရှာဖွေခြင်း + +[AI for Beginners Curriculum](https://aka.ms/ai-beginners) မှ Lab Assignment။ + +## တာဝန် + +[ဤဗီဒီယို](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4) ကို စဉ်းစားပါ၊ ဤဗီဒီယိုတွင် လူတစ်ဦး၏ လက်ဖဝါးသည် တည်ငြိမ်သော နောက်ခံပေါ်တွင် ဘယ်/ညာ/အပေါ်/အောက် သို့ လှုပ်ရှားနေသည်။ + +**သင့်ရဲ့ရည်မှန်းချက်** က Optical Flow ကို အသုံးပြုပြီး ဗီဒီယိုရဲ့ ဘယ်အပိုင်းတွေမှာ အပေါ်/အောက်/ဘယ်/ညာ လှုပ်ရှားမှုတွေ ပါဝင်တယ်ဆိုတာကို သတ်မှတ်နိုင်ဖို့ ဖြစ်ပါတယ်။ + +**အပိုရည်မှန်းချက်** ကတော့ [ဤဘလော့ဂ်ပို့စ်](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) သို့မဟုတ် [ဤနေရာ](http://www.benmeline.com/finger-tracking-with-opencv-and-python/) မှ ဖော်ပြထားသည့်အတိုင်း အသားအရောင်ကို အသုံးပြု၍ လက်ဖဝါး/လက်ချောင်း လှုပ်ရှားမှုကို တကယ်တမ်း ခြေရာခံနိုင်ဖို့ ဖြစ်ပါတယ်။ + +## စတင်ရန် Notebook + +[MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) ကို ဖွင့်ပြီး Lab ကို စတင်ပါ။ + +## အဓိကအကျဉ်းချုပ် + +တစ်ခါတစ်ရံမှာ လှုပ်ရှားမှု ရှာဖွေခြင်း သို့မဟုတ် လက်ချောင်းအဖျား ရှာဖွေခြင်းလို အလွန်ရှုပ်ထွေးတဲ့ တာဝန်တွေကို သာမန် Computer Vision နည်းလမ်းတွေနဲ့ ဖြေရှင်းနိုင်ပါတယ်။ ဒါကြောင့် OpenCV လို Libraries တွေ ဘာတွေ လုပ်နိုင်တယ်ဆိုတာ သိထားရတာ အလွန်အသုံးဝင်ပါတယ်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/my/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..1b2f8cac --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# လူသိများသော CNN အဆောက်အအုံများ + +### VGG-16 + +VGG-16 သည် 2014 ခုနှစ်တွင် ImageNet top-5 classification တွင် 92.7% တိကျမှုရရှိခဲ့သော network တစ်ခုဖြစ်သည်။ ၎င်းတွင် အောက်ပါ layer အဆောက်အအုံပါရှိသည်- + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.my.jpg) + +VGG သည် convolution-pooling layers များ၏ အစဉ်အတိုင်း pyramid architecture ကို လိုက်နာသည်ကို သင်တွေ့နိုင်ပါသည်။ + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.my.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 ခုနှစ်တွင် တင်ပြခဲ့သော model များ၏ မိသားစုဖြစ်သည်။ ResNet ၏ အဓိကအကြောင်းအရာမှာ **residual blocks** ကို အသုံးပြုခြင်းဖြစ်သည်- + + + +> [ဒီစာတမ်း](https://arxiv.org/pdf/1512.03385.pdf) မှရရှိသောပုံ + +Identity pass-through ကို အသုံးပြုရသည့်အကြောင်းရင်းမှာ layer ၏ အရလွန်ကို **residual block ၏ output** နှင့် ယှဉ်၍ ခွဲခြားမှုကို ခန့်မှန်းရန်ဖြစ်သည် - ထို့ကြောင့် *residual* ဟုအမည်ပေးထားသည်။ ၎င်း block များကို လွယ်ကူစွာ training ပြုလုပ်နိုင်ပြီး၊ block များရာနှင့်ချီသော network များကို တည်ဆောက်နိုင်သည် (အများဆုံးအသုံးပြုသော variant များမှာ ResNet-52, ResNet-101 နှင့် ResNet-152 ဖြစ်သည်)။ + +ဤ network ကို dataset အပေါ်တွင် ၎င်း၏ ရှုပ်ထွေးမှုကို ချိန်ညှိနိုင်သောအနေဖြင့်လည်း တွေးဆနိုင်သည်။ အစပိုင်းတွင် network ကို training စတင်သောအခါ weight များသည် သေးငယ်ပြီး၊ signal အများစုသည် passthrough identity layers မှတဆင့်သွားသည်။ Training တိုးတက်လာပြီး weight များကြီးလာသည်နှင့် network parameters ၏ အရေးပါမှုများတိုးလာပြီး၊ training images များကို မှန်ကန်စွာခွဲခြားရန်လိုအပ်သော expressive power ကို network သင့်တော်စွာ ချိန်ညှိသည်။ + +### Google Inception + +Google Inception architecture သည် ဤအကြောင်းအရာကို တစ်ဆင့်ပိုမိုတိုးတက်စေပြီး၊ network layer တစ်ခုစီကို အမျိုးမျိုးသော path များ၏ ပေါင်းစပ်အဖြစ် တည်ဆောက်သည်- + + + +> [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) မှရရှိသောပုံ + +ဤနေရာတွင် 1x1 convolution များ၏ အရေးပါမှုကို အထူးပြောဆိုရန်လိုအပ်သည်၊ အစပိုင်းတွင် ၎င်းသည် အဓိပ္ပာယ်မရှိသလိုပင် ထင်ရနိုင်သည်။ 1x1 filter ဖြင့် image ကို run လုပ်ရန် ဘာကြောင့်လိုအပ်သလဲ? သို့သော် convolution filter များသည် depth channel များ (မူလတွင် - RGB အရောင်များ၊ နောက် layer များတွင် - filter များအတွက် channel များ) နှင့်အတူ လုပ်ဆောင်သည်ကို သတိပြုရန်လိုအပ်သည်။ 1x1 convolution သည် input channel များကို trainable weight များကို အသုံးပြု၍ ပေါင်းစပ်ရန်အသုံးပြုသည်။ ၎င်းကို channel dimension အပေါ်တွင် downsampling (pooling) အဖြစ်လည်း တွေးဆနိုင်သည်။ + +ဤအကြောင်းအရာနှင့်ပတ်သက်သော [blog post](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 သည် အရွယ်အစားလျော့ချထားသော model များ၏ မိသားစုဖြစ်ပြီး၊ mobile device များအတွက် သင့်တော်သည်။ အရင်းအမြစ်များနည်းပါးပြီး accuracy အနည်းငယ်လျော့နည်းနိုင်သည်ကို လက်ခံနိုင်ပါက ၎င်းကို အသုံးပြုပါ။ ၎င်း၏ အဓိကအကြောင်းအရာမှာ **depthwise separable convolution** ဖြစ်ပြီး၊ spatial convolution များနှင့် depth channel များအပေါ် 1x1 convolution တို့၏ ပေါင်းစပ်ဖြင့် convolution filter များကို ကိုယ်စားပြုနိုင်သည်။ ၎င်းသည် parameter များ၏ အရေအတွက်ကို အလွန်လျော့ချပြီး၊ network ကို အရွယ်အစားသေးငယ်စေကာ၊ data နည်းပါးစွာဖြင့် training ပြုလုပ်ရန်လည်း လွယ်ကူစေသည်။ + +MobileNet နှင့်ပတ်သက်သော [blog post](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470) တစ်ခုကို ကြည့်ရှုနိုင်ပါသည်။ + +## နိဂုံး + +ဤ unit တွင် သင်သည် computer vision neural networks ၏ အဓိကအကြောင်းအရာ - convolutional networks ကို သင်ယူခဲ့ပါသည်။ အမှန်တကယ် image classification, object detection နှင့် image generation network များကို အားပေးသော architecture များသည် CNN များအပေါ် အခြေခံထားပြီး၊ အလွှာများပိုမိုများပြားခြင်းနှင့် training tricks အချို့ကို ထည့်သွင်းထားသည်။ + +## 🚀 စိန်ခေါ်မှု + +ထည့်သွင်းထားသော notebooks တွင် တိကျမှုပိုမိုရရှိရန်အကြောင်းအရာများကို အောက်ဆုံးတွင် မှတ်ချက်ထားရှိထားသည်။ တိကျမှုပိုမိုရရှိနိုင်မည်ကို စမ်းသပ်ကြည့်ပါ။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +CNN များကို Computer Vision အလုပ်များအတွက် အများဆုံးအသုံးပြုသော်လည်း၊ fixed-sized pattern များကို ထုတ်ယူရန်အတွက်လည်း အထူးကောင်းမွန်သည်။ ဥပမာအားဖြင့်၊ အသံများနှင့်ဆက်နွယ်နေပါက audio signal တွင် pattern အချို့ကို ရှာဖွေရန် CNN များကို အသုံးပြုလိုနိုင်သည် - ဤအခါ filter များသည် 1-dimensional ဖြစ်ပြီး (ဤ CNN ကို 1D-CNN ဟုခေါ်သည်)။ ထို့အပြင် 3D-CNN ကိုလည်း multi-dimensional space တွင် feature များကို ထုတ်ယူရန် အသုံးပြုနိုင်သည်၊ ဥပမာအားဖြင့် video တွင်ဖြစ်ပျက်နေသော အဖြစ်အပျက်အချို့ကို - CNN သည် feature များအချို့၏ အချိန်အတွင်းပြောင်းလဲမှု pattern များကို ဖမ်းဆီးနိုင်သည်။ CNN များဖြင့် ပြုလုပ်နိုင်သော အခြားအလုပ်များကို ပြန်လည်သုံးသပ်ပြီး ကိုယ်တိုင်လေ့လာပါ။ + +## [Assignment](lab/README.md) + +ဤ lab တွင် သင်သည် ကြောင်နှင့် ခွေးမျိုးစုံကို ခွဲခြားရန်တာဝန်ရှိသည်။ ဤပုံများသည် MNIST dataset ထက် ပိုမိုရှုပ်ထွေးပြီး၊ အရွယ်အစားပိုမိုကြီးမားသည်။ class များ 10 ကျော်ပါရှိသည်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲသုံးစားမှု သို့မဟုတ် အနားလည်မှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/my/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..87cc8430 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Convolutional Neural Networks + +ယခင်က ကျွန်ုပ်တို့မြင်ခဲ့သည့်အတိုင်း နယူးရယ်နက်ဝက်များသည် ပုံများကို ကိုင်တွယ်ရာတွင် အတော်လေးကောင်းမွန်ပြီး MNIST ဒေတာစနစ်မှ လက်ဖြင့်ရေးသားထားသော ဂဏန်းများကိုတောင် တစ်လွှာပဲရှိသော perceptron ဖြင့် တော်တော်လေးတိကျစွာ မှတ်မိနိုင်သည်။ သို့သော် MNIST ဒေတာစနစ်သည် အထူးသဖြင့် ဂဏန်းများအားလုံးကို ပုံ၏အလယ်တွင်ထားရှိထားသောကြောင့် အလုပ်ကို ပိုမိုလွယ်ကူစေသည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +အမှန်တကယ်ဘဝတွင် ပုံ၏တိကျသောတည်နေရာမဟုတ်ဘဲ ပုံတစ်ပုံတွင် အရာဝတ္ထုများကို မှတ်မိနိုင်စေရန်လိုအပ်သည်။ ကွန်ပျူတာမြင်ကြည့်မှုသည် အထွေထွေခွဲခြားမှုနှင့်ကွဲပြားပြီး ပုံတစ်ပုံတွင် အရာဝတ္ထုတစ်ခုကို ရှာဖွေရာတွင် အချို့သော **ပုံစံများ** နှင့် ၎င်းတို့၏ပေါင်းစည်းမှုများကို ရှာဖွေရန် ပုံကို စစ်ဆေးနေသည်။ ဥပမာအားဖြင့် ကြောင်တစ်ကောင်ကို ရှာဖွေရာတွင် အရင်ဆုံး အလျားလိုက်လိုင်းများကို ရှာဖွေပြီး ၎င်းတို့သည် ကြောင်၏မုတ်ဆိတ်ဖြစ်နိုင်သည်ဟု သတ်မှတ်နိုင်သည်။ ထို့နောက် မုတ်ဆိတ်ပုံစံတစ်ခုတည်းဖြင့် ၎င်းသည် ကြောင်ပုံတစ်ပုံဖြစ်ကြောင်း ပြောနိုင်သည်။ ပုံတစ်ပုံတွင် တိကျသောတည်နေရာထက် ပုံစံတစ်ခု၏ ဆက်စပ်မှုနှင့် ရှိနေမှုသည် အရေးကြီးသည်။ + +ပုံစံများကို ထုတ်ယူရန် **convolutional filters** ၏အယူအဆကို အသုံးပြုမည်ဖြစ်သည်။ သင်သိသည့်အတိုင်း ပုံတစ်ပုံကို 2D-မက်ထရစ် သို့မဟုတ် အရောင်အနက်ရှိသော 3D-တန်ဆာဖြင့် ကိုယ်စားပြုသည်။ filter ကို အသုံးပြုခြင်းသည် အလွန်သေးငယ်သော **filter kernel** မက်ထရစ်ကို ယူပြီး မူလပုံ၏ တစ်ခုချင်းစီ pixel အတွက် အနီးအနားရှိအချက်အလက်များနှင့်အတူ အလေးချိန်ပျမ်းမျှကိုတွက်ချက်ခြင်းဖြစ်သည်။ ၎င်းကို ပုံတစ်ပုံလုံးပေါ်တွင် သေးငယ်သောပြတင်းပေါက်တစ်ခုကဲ့သို့ လှိမ့်ပြီး filter kernel မက်ထရစ်ရှိ အလေးချိန်များအတိုင်း pixel အားလုံးကို ပျမ်းမျှစေသည်ဟု မြင်နိုင်သည်။ + +![Vertical Edge Filter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.my.png) | ![Horizontal Edge Filter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.my.png) +----|---- + +> ပုံ - Dmitry Soshnikov + +ဥပမာအားဖြင့် MNIST ဂဏန်းများတွင် 3x3 vertical edge နှင့် horizontal edge filters ကို အသုံးပြုပါက မူလပုံတွင် အလျားလိုက်နှင့် အနံလိုက်အနားများရှိရာနေရာများကို ထင်ရှားစေမည် (ဥပမာ- အမြင့်တန်ဖိုးများ)။ ထို့ကြောင့် ၎င်း filter နှစ်ခုကို အနားများကို "ရှာဖွေ" ရန် အသုံးပြုနိုင်သည်။ ထို့နောက် အခြားအနိမ့်အဆင့်ပုံစံများကို ရှာဖွေရန် filter များကိုလည်း ဒီဇိုင်းဆွဲနိုင်သည်။ + +> [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) ၏ပုံ + +သို့သော် ပုံစံများကို လက်ဖြင့် filter များဖြင့် ထုတ်ယူနိုင်သလို၊ နက်ဝက်ကို ပုံစံများကို အလိုအလျောက် သင်ယူနိုင်စေရန် ဒီဇိုင်းဆွဲနိုင်သည်။ ၎င်းသည် CNN ၏ အဓိကအယူအဆတစ်ခုဖြစ်သည်။ + +## CNN ၏ အဓိကအယူအဆများ + +CNN များအလုပ်လုပ်ပုံသည် အောက်ပါအရေးကြီးသောအယူအဆများအပေါ် အခြေခံသည်- + +* Convolutional filters များသည် ပုံစံများကို ထုတ်ယူနိုင်သည်။ +* Filter များကို အလိုအလျောက် သင်ယူနိုင်စေရန် နက်ဝက်ကို ဒီဇိုင်းဆွဲနိုင်သည်။ +* မူလပုံတွင်သာမက အဆင့်မြင့် features တွင်လည်း ပုံစံများကို ရှာဖွေရန် အလားတူနည်းလမ်းကို အသုံးပြုနိုင်သည်။ ထို့ကြောင့် CNN feature extraction သည် အနိမ့်အဆင့် pixel ပေါင်းစည်းမှုမှ စ၍ ပုံ၏ အဆင့်မြင့်အစိတ်အပိုင်းများအထိ feature များ၏ အဆင့်လိုက်အဆင့်လိုက်အဆောက်အအုံအပေါ် အလုပ်လုပ်သည်။ + +![Hierarchical Feature Extraction](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.my.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) အပေါ်အခြေခံ + +## ✍️ လေ့ကျင့်မှုများ: Convolutional Neural Networks + +Convolutional neural networks များအလုပ်လုပ်ပုံနှင့် trainable filters များကို မည်သို့ရရှိနိုင်သည်ကို ဆက်လက်လေ့လာရန် အောက်ပါ notebooks များကို အသုံးပြုပါ- + +* [Convolutional Neural Networks - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Convolutional Neural Networks - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Pyramid Architecture + +ပုံများကို ကိုင်တွယ်ရာတွင် အသုံးပြုသော CNN များအများစုသည် "pyramid architecture" ဟုခေါ်သောဖွဲ့စည်းပုံကို လိုက်နာသည်။ မူလပုံများတွင် ပထမဆုံး convolutional layer သည် အလွန်နည်းသော filter များ (8-16) ကိုသာ ရှိပြီး ၎င်းတို့သည် အလျားလိုက်/အနံလိုက်လိုင်းများကဲ့သို့သော pixel ပေါင်းစည်းမှုများကို ကိုယ်စားပြုသည်။ နောက်အဆင့်တွင် နက်ဝက်၏ အကျယ်အဝန်းကို လျှော့ချပြီး filter များ၏အရေအတွက်ကို တိုးမြှင့်သည်။ ၎င်းသည် ရိုးရှင်းသော feature များ၏ ပေါင်းစည်းမှုများကို ပိုမိုဖြစ်စေသည်။ အလွှာတိုင်းတွင် နောက်ဆုံး classifier သို့ ရောက်သည့်အခါ ပုံ၏ အကျယ်အဝန်းသည် လျှော့ချပြီး filter များ၏အရေအတွက်သည် တိုးပွားသည်။ + +ဥပမာအားဖြင့် 2014 ခုနှစ်တွင် ImageNet ၏ top-5 classification တွင် 92.7% တိကျမှုရရှိခဲ့သော VGG-16 ၏ဖွဲ့စည်းပုံကို ကြည့်ပါ- + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.my.jpg) + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.my.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/my/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/my/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..c40c120e --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# အိမ်မွေးတိရစ္ဆာန် မျက်နှာများ အမျိုးအစားခွဲခြင်း + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ လက်တွေ့လေ့ကျင့်ခန်း။ + +## တာဝန် + +သင်သည် အိမ်မွေးတိရစ္ဆာန် စောင့်ရှောက်ရေးအတွက် အိမ်မွေးတိရစ္ဆာန်များကို စာရင်းသွင်းရန် အက်ပ်တစ်ခု ဖန်တီးရန် လိုအပ်သည်ဟု စိတ်ကူးပါစေ။ ထိုအက်ပ်၏ အထူးအင်္ဂါရပ်တစ်ခုမှာ ဓာတ်ပုံမှ အမျိုးအစားကို အလိုအလျောက် ရှာဖွေနိုင်ခြင်းဖြစ်မည်။ ၎င်းကို နယူးရယ်နက်ဝက်များ (neural networks) အသုံးပြု၍ အောင်မြင်စွာ ပြုလုပ်နိုင်ပါသည်။ + +သင်သည် **Pet Faces** ဒေတာစနစ်ကို အသုံးပြု၍ ကြောင်နှင့် ခွေး အမျိုးအစားများကို ခွဲခြားနိုင်ရန် convolutional neural network တစ်ခုကို လေ့ကျင့်ရမည်။ + +## ဒေတာစနစ် + +ကျွန်ုပ်တို့သည် [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) အိမ်မွေးတိရစ္ဆာန် ဒေတာစနစ်မှ ဆင်းသက်လာသော **Pet Faces** ဒေတာစနစ်ကို အသုံးပြုမည်။ ၎င်းတွင် ခွေးနှင့် ကြောင် အမျိုးအစား ၃၅ မျိုး ပါဝင်သည်။ + +![ကျွန်ုပ်တို့ကိုင်တွယ်မည့် ဒေတာ](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.my.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 accuracy ကို တိုင်းတာခြင်းသည် အဓိကကျပါသည်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/my/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..e5e41f61 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# ကြိုတင်သင်ကြားထားသော Networks နှင့် Transfer Learning + +CNN များကို သင်ကြားရန်အချိန်များစွာလိုအပ်ပြီး၊ အချက်အလက်များစွာလည်း လိုအပ်ပါသည်။ သို့သော် အချိန်အများစုမှာ ပုံများမှ pattern များကို ထုတ်ယူရန် အသုံးပြုနိုင်သော အနိမ့်အဆင့် filter များကို သင်ယူရန်အတွက် အသုံးပြုသည်။ ထို့ကြောင့် သဘာဝကျသောမေးခွန်းတစ်ခုဖြစ်သည်မှာ - တစ်ခုသော dataset တွင် သင်ကြားထားသော neural network ကို အသုံးပြုပြီး အခြားပုံများကို အပြည့်အဝ သင်ကြားစရာမလိုဘဲ ခွဲခြားနိုင်မည်လား? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +ဒီနည်းလမ်းကို **transfer learning** ဟုခေါ်သည်၊ အကြောင်းမှာ တစ်ခုသော neural network model မှ knowledge တစ်စိတ်တစ်ပိုင်းကို အခြား model သို့ လွှဲပြောင်းသုံးစွဲခြင်းဖြစ်သည်။ Transfer learning တွင် ကျွန်ုပ်တို့သည် ပုံမှန်အားဖြင့် **ImageNet** ကဲ့သို့သော အကြီးစား image dataset တစ်ခုတွင် သင်ကြားထားသော pre-trained model တစ်ခုဖြင့် စတင်ပါသည်။ ဒီ model များသည် ပုံမှန်ပုံများမှ အမျိုးမျိုးသော feature များကို ထုတ်ယူနိုင်ပြီး၊ အများစုတွင် ထို feature များပေါ်တွင် classifier တစ်ခုတည်ဆောက်ခြင်းဖြင့် အကောင်းဆုံးရလဒ်ရနိုင်သည်။ + +> ✅ Transfer Learning ဆိုသည်မှာ ပညာရေးကဲ့သို့သော အခြားသိပ္ပံနယ်ပယ်များတွင်လည်း တွေ့ရနိုင်သော စကားလုံးတစ်ခုဖြစ်သည်။ ၎င်းသည် တစ်ခုသောနယ်ပယ်မှ သိမြင်မှုကို အခြားနယ်ပယ်သို့ လွှဲပြောင်းအသုံးပြုခြင်းကို ဆိုလိုသည်။ + +## Pre-Trained Models ကို Feature Extractors အဖြစ် အသုံးပြုခြင်း + +ယခင်ပိုင်းတွင် ဆွေးနွေးခဲ့သော convolutional networks တွင် layer အတော်များများပါဝင်ပြီး၊ ၎င်းတို့သည် ပုံမှန်အားဖြင့် ပုံမှန်ပုံများမှ feature များကို ထုတ်ယူရန်အတွက် ရည်ရွယ်ထားသည်။ အနိမ့်အဆင့် pixel ပေါင်းစပ်မှုများ (ဥပမာ - အလျားလိုင်း/ဒေါင်လိုင်း) မှစ၍ အဆင့်မြင့် feature များ (ဥပမာ - မီးတောက်၏ မျက်လုံး) အထိ ထုတ်ယူနိုင်သည်။ Generic နှင့် အမျိုးမျိုးသောပုံများပါဝင်သော dataset တစ်ခုတွင် CNN ကို သင်ကြားပါက၊ network သည် ထို feature များကို သင်ယူနိုင်မည်ဖြစ်သည်။ + +Keras နှင့် PyTorch နှစ်ခုစလုံးတွင် ImageNet ပုံများပေါ်တွင် သင်ကြားထားသော pre-trained neural network weights များကို လွယ်ကူစွာ load လုပ်နိုင်သော function များပါဝင်သည်။ အများဆုံးအသုံးပြုသော model များကို ယခင်သင်ခန်းစာမှ [CNN Architectures](../07-ConvNets/CNN_Architectures.md) စာမျက်နှာတွင် ဖော်ပြထားသည်။ အထူးသဖြင့် အောက်ပါ model များကို စဉ်းစားနိုင်ပါသည် - + +* **VGG-16/VGG-19** - ရိုးရှင်းသော model များဖြစ်ပြီး၊ accuracy ကောင်းမွန်စွာရရှိစေသည်။ Transfer learning အလုပ်လုပ်ပုံကို စမ်းသပ်ရန် VGG ကို စတင်အသုံးပြုခြင်းသည် ကောင်းမွန်သောရွေးချယ်မှုဖြစ်သည်။ +* **ResNet** - Microsoft Research မှ 2015 ခုနှစ်တွင် တင်ပြခဲ့သော model များဖြစ်သည်။ Layer များပိုများပြီး၊ resource ပိုမိုလိုအပ်သည်။ +* **MobileNet** - အရွယ်အစားသေးငယ်ပြီး၊ mobile device များအတွက် သင့်တော်သော model များဖြစ်သည်။ Resource အနည်းငယ်သာရှိပြီး accuracy အနည်းငယ်လျော့နည်းနိုင်သည်။ + +ဤသည်မှာ VGG-16 network မှ ကြောင်ပုံတစ်ပုံမှ ထုတ်ယူထားသော sample feature များဖြစ်သည် - + +![Features extracted by VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.my.png) + +## ကြောင်များနှင့် ခွေးများ Dataset + +ဤဥပမာတွင် [Cats and Dogs](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste) dataset ကို အသုံးပြုမည်ဖြစ်ပြီး၊ ၎င်းသည် အမှန်တကယ်သော image classification အခြေအနေနှင့် နီးစပ်သည်။ + +## ✍️ လေ့ကျင့်မှု: Transfer Learning + +Transfer learning ကို အောက်ပါ notebook များတွင် လက်တွေ့ကြည့်ရှုပါ - + +* [Transfer Learning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transfer Learning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Adversarial Cat ကို မြင်နိုင်ခြင်း + +Pre-trained neural network တွင် **ideal cat** (အကောင်းဆုံးကြောင်) အပါအဝင် အမျိုးမျိုးသော pattern များပါဝင်သည်။ ၎င်းကို **မြင်နိုင်ရန်** စမ်းသပ်ခြင်းစိတ်ဝင်စားဖွယ်ကောင်းသည်။ သို့သော် ၎င်းသည် ရိုးရှင်းသောအရာမဟုတ်ပါ၊ အကြောင်းမှာ pattern များသည် network weight များတွင် ဖြန့်ကျက်နေပြီး၊ hierarchical structure အဖြစ် စီစဉ်ထားသည်။ + +တစ်နည်းလမ်းမှာ random image တစ်ပုံကို စတင်ပြီး၊ **gradient descent optimization** နည်းလမ်းကို အသုံးပြုကာ network သည် ၎င်းကို ကြောင်ဟု ထင်ရအောင် ပုံပြင်ဆင်ခြင်းဖြစ်သည်။ + +![Image Optimization Loop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.my.png) + +သို့သော် ဤနည်းလမ်းဖြင့် random noise ကဲ့သို့သောအရာကိုသာ ရရှိမည်ဖြစ်သည်။ အကြောင်းမှာ *network သည် input image ကို ကြောင်ဟု ထင်ရစေသော နည်းလမ်းများစွာရှိနိုင်ပြီး၊ ၎င်းတို့သည် မျက်မြင်အရ make sense မဖြစ်နိုင်သောအရာများပါဝင်နိုင်သည်*။ + +ရလဒ်ကို တိုးတက်စေရန် **variation loss** ဟုခေါ်သော loss function တစ်ခုကို ထည့်သွင်းနိုင်သည်။ Variation loss သည် ပုံ၏ အနီးကပ် pixel များ၏ ဆင်တူမှုကို ဖော်ပြသော metric တစ်ခုဖြစ်သည်။ Variation loss ကို လျှော့ချခြင်းဖြင့် ပုံကို ပိုမိုချောမွေ့စေပြီး၊ noise ကို ဖယ်ရှားနိုင်သည် - ထို့ကြောင့် ပိုမိုမျက်မြင်ဆန်းသစ်သော pattern များကို ဖော်ထုတ်နိုင်သည်။ အောက်တွင် ကြောင်နှင့် zebra အဖြစ် classified ဖြစ်သော "ideal" ပုံများကို ဖော်ပြထားသည် - + +![Ideal Cat](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.my.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.my.png) +-----|----- + *Ideal Cat* | *Ideal Zebra* + +ဒီနည်းလမ်းကို neural network တွင် **adversarial attacks** ပြုလုပ်ရန်လည်း အသုံးပြုနိုင်သည်။ ဥပမာ - ခွေးပုံတစ်ပုံကို ကြောင်ဟု ထင်ရစေလိုပါက၊ network သည် ၎င်းကို ခွေးဟု ခွဲခြားထားသောပုံကို gradient descent optimization ဖြင့် အနည်းငယ်ပြင်ဆင်ကာ၊ network သည် ၎င်းကို ကြောင်ဟု ထင်ရအောင် ပြုလုပ်နိုင်သည် - + +![Picture of a Dog](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.my.png) | ![Picture of a dog classified as a cat](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.my.png) +-----|----- +*Original picture of a dog* | *Picture of a dog classified as a cat* + +အထက်ပါရလဒ်များကို ထုတ်လုပ်ရန် code ကို အောက်ပါ notebook တွင် ကြည့်ရှုနိုင်သည် - + +* [Ideal and Adversarial Cat - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## နိဂုံးချုပ် + +Transfer learning ကို အသုံးပြုခြင်းဖြင့် သင့်အတွက် သီးသန့် object classification task တစ်ခုအတွက် classifier တစ်ခုကို အလျင်အမြန်တည်ဆောက်နိုင်ပြီး၊ အတိအကျမှုမြင့်မားသောရလဒ်ရရှိနိုင်သည်။ သင်ကြားနေသော အခက်အခဲများသည် ပိုမိုမြင့်မားလာပြီး၊ CPU ပေါ်တွင် လွယ်ကူစွာ ဖြေရှင်းနိုင်မည်မဟုတ်ကြောင်း တွေ့ရသည်။ နောက်ထပ် unit တွင်၊ compute resource နည်းနည်းဖြင့် model တစ်ခုကို သင်ကြားရန် lightweight implementation တစ်ခုကို အသုံးပြုမည်ဖြစ်ပြီး၊ accuracy အနည်းငယ်သာ လျော့နည်းမည်ဖြစ်သည်။ + +## 🚀 စိန်ခေါ်မှု + +အတူတကွပါဝင်သော notebook များတွင်၊ training data နှင့် ဆင်တူသော data များတွင် transfer knowledge အလုပ်လုပ်ပုံကို ဖော်ပြထားသည်။ အလုံးစုံမတူညီသော image များဖြင့် စမ်းသပ်ပြီး၊ transfer knowledge model များ၏ အလုပ်လုပ်ပုံကို ကြည့်ရှုပါ။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +[TrainingTricks.md](TrainingTricks.md) ကို ဖတ်ရှုပြီး၊ သင်၏ model များကို သင်ကြားရန် အခြားနည်းလမ်းများကို နက်နက်ရှိုင်းရှိုင်း သိရှိပါ။ + +## [Assignment](lab/README.md) + +ဤ lab တွင် [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) pets dataset ကို အသုံးပြုကာ၊ ကြောင်နှင့် ခွေး ၃၅ မျိုးအတွက် transfer learning classifier တစ်ခုကို တည်ဆောက်မည်ဖြစ်သည်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/my/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..ccf91afb --- /dev/null +++ b/translations/my/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]) တွင်ရှိစေရန် သေချာစေရန်လိုအပ်သည်။ ၎င်းသည် အလွန်တင်းကြပ်သော လိုအပ်ချက်မဟုတ်သော်လည်း၊ floating point တွက်ချက်မှုများ၏ သဘာဝသည် အရွယ်အစားကွာခြားမှုများကို တစ်ခုပေါင်းတစ်ခုဖြင့် တိကျစွာ စီမံနိုင်မည်မဟုတ်ပါ။ ဥပမာအားဖြင့် 10-10 နှင့် 1010 ကို ပေါင်းပါက၊ 1010 ကိုရနိုင်ပြီး၊ သေးငယ်သောတန်ဖိုးသည် "အကြီးဆုံးတန်ဖိုး၏ အဆင့်" သို့ ပြောင်းလဲသွားပြီး mantissa ကို ဆုံးရှုံးနိုင်သည်။ + +Activation function များအများစုသည် [-1..1] အကွာအဝေးတွင် non-linear ဖြစ်ပြီး၊ ထို့ကြောင့် input data အားလုံးကို [-1..1] သို့မဟုတ် [0..1] အကွာအဝေးသို့ scale လုပ်ခြင်းသည် make sense ဖြစ်သည်။ + +## အစပိုင်း Weight Initialization + +နက်ဝက် layer များကို ဖြတ်သွားပြီးနောက် တန်ဖိုးများကို အတူတူသော အကွာအဝေးတွင်ရှိစေရန် ကျွန်ုပ်တို့လိုချင်သည်။ ထို့ကြောင့် တန်ဖိုးများ၏ distribution ကို ထိန်းသိမ်းနိုင်ရန် weight များကို initialize လုပ်ခြင်းမှာ အရေးကြီးသည်။ + +Normal distribution **N(0,1)** သည် idea ကောင်းမဟုတ်ပါ၊ အကြောင်းမှာ *n* inputs ရှိပါက output ၏ standard deviation သည် *n* ဖြစ်ပြီး၊ တန်ဖိုးများသည် [0..1] အကွာအဝေးမှ ကျော်လွန်နိုင်သည်။ + +အောက်ပါ initialization များကို မကြာခဏ အသုံးပြုသည်- + + * Uniform distribution -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** သည် zero mean နှင့် standard deviation 1 ရှိသော inputs များအတွက် mean/standard deviation ကို ထိန်းသိမ်းနိုင်သည် + * **N(0,√2/(n_in+n_out))** -- **Xavier initialization** (`glorot`) ဟုခေါ်သည်၊ ၎င်းသည် forward နှင့် backward propagation နှစ်ခုစလုံးတွင် signal များကို range အတွင်း ထိန်းသိမ်းနိုင်ရန် ကူညီသည် + +## Batch Normalization + +Weight initialization ကိုမှန်ကန်စွာ ပြုလုပ်ထားသည်ဖြစ်စေ၊ training အတွင်း weight များသည် အကြီးမားဆုံး သို့မဟုတ် အငယ်ဆုံးဖြစ်နိုင်ပြီး၊ signal များကို သင့်တော်သော range မှ ကျော်လွန်စေမည်။ Signal များကို ပြန်လည် သင့်တော်သော range သို့ ပြန်လည်ဆောင်ရွက်ရန် **normalization** နည်းလမ်းများကို အသုံးပြုနိုင်သည်။ Weight normalization, Layer Normalization စသည်တို့ရှိသော်လည်း၊ အများဆုံး အသုံးပြုသောနည်းလမ်းမှာ Batch Normalization ဖြစ်သည်။ + +**Batch normalization** ၏ အကြောင်းအရာမှာ minibatch အတွင်းရှိ တန်ဖိုးအားလုံးကို အခြေခံပြီး normalization (ဥပမာ mean ကိုနုတ်၍ standard deviation ဖြင့် ခွဲခြင်း) ပြုလုပ်ခြင်းဖြစ်သည်။ ၎င်းကို weight များကို အသုံးပြုပြီးနောက် activation function မတိုင်မီ normalization ပြုလုပ်သော network layer အဖြစ် အကောင်အထည်ဖော်ထားသည်။ ၎င်း၏ရလဒ်အနေဖြင့်၊ အမြင့်ဆုံး accuracy ရရှိနိုင်ခြင်းနှင့် training ပိုမိုမြန်ဆန်စေခြင်းကို တွေ့နိုင်သည်။ + +[Batch normalization အကြောင်း](https://arxiv.org/pdf/1502.03167.pdf) [Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) နှင့် [blog post](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) တို့တွင် ဖတ်ရှုနိုင်သည်။ + +## Dropout + +**Dropout** သည် training အတွင်း random neurons တစ်ချို့ကို ဖယ်ရှားသည့် နည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းကို layer အဖြစ် အကောင်အထည်ဖော်ထားပြီး၊ parameter တစ်ခု (typically 10%-50%) ဖြင့် neurons များကို ဖယ်ရှားသည်။ Training အတွင်း input vector ၏ random elements များကို zero လုပ်ပြီး၊ next layer သို့ ပို့သည်။ + +ဤနည်းလမ်းသည် ထူးဆန်းသော idea တစ်ခုဖြစ်သော်လည်း၊ MNIST digit classifier ကို training လုပ်သည့်အခါ Dropout ၏ အကျိုးသက်ရောက်မှုကို [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) notebook တွင် တွေ့နိုင်သည်။ ၎င်းသည် training ကို မြန်ဆန်စေပြီး၊ training epoch အနည်းငယ်တွင် အမြင့်ဆုံး accuracy ရရှိစေသည်။ + +ဤအကျိုးသက်ရောက်မှုကို အောက်ပါနည်းလမ်းများဖြင့် ရှင်းလင်းနိုင်သည်- + + * ၎င်းကို model အတွက် random shocking factor အဖြစ် သတ်မှတ်နိုင်ပြီး၊ local minimum မှ optimization ကို ထွက်စေသည် + * ၎င်းကို *implicit model averaging* အဖြစ် သတ်မှတ်နိုင်သည်၊ Dropout အတွင်း model အနည်းငယ်ကို training လုပ်နေသည်ဟု ဆိုနိုင်သည် + +> *တချို့လူများက အရက်မူးနေသောသူသည် တစ်ခုခုကို သင်ယူရန်ကြိုးစားသောအခါ၊ နောက်နေ့မနက်တွင် အရက်မူးမနေသောသူထက် ပိုမိုမှတ်မိနိုင်သည်ဟု ဆိုကြသည်။ ဤအချက်ကို ကျွန်ုပ်တို့ကိုယ်တိုင် စမ်းသပ်မထားပါ။* + +## Overfitting ကို ကာကွယ်ခြင်း + +နက်ရှိုင်းသော သင်ကြားမှု၏ အရေးကြီးသော အပိုင်းတစ်ခုမှာ [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ကို ကာကွယ်နိုင်ရန်ဖြစ်သည်။ အလွန်အစွမ်းထက်သော neural network model ကို အသုံးပြုရန် စိတ်လှုပ်ရှားစေသော်လည်း၊ model parameters အရေအတွက်နှင့် training samples အရေအတွက်ကို အချိုးကျစေရန် အမြဲလိုအပ်သည်။ + +> ကျွန်ုပ်တို့ [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ၏ အကြောင်းအရာကို နားလည်ထားရန် သေချာပါစေ! + +Overfitting ကို ကာကွယ်ရန် နည်းလမ်းအချို့မှာ- + + * Early stopping -- validation set အပေါ် error ကို ဆက်လက်ကြည့်ရှုပြီး၊ validation error တိုးလာသောအခါ training ကို ရပ်တန့်ခြင်း + * Explicit Weight Decay / Regularization -- loss function အတွက် weight များ၏ absolute value များကို penalty ထည့်ခြင်း၊ model ကို မတည်ငြိမ်သောရလဒ်များရရှိခြင်းမှ ကာကွယ်သည် + * Model Averaging -- model အများအပြားကို training လုပ်ပြီး၊ ရလဒ်ကို averaging လုပ်ခြင်း။ ၎င်းသည် variance ကို လျှော့ချရန် ကူညီသည်။ + * Dropout (Implicit Model Averaging) + +## Optimizers / Training Algorithms + +Training အတွက် အရေးကြီးသော အပိုင်းတစ်ခုမှာ training algorithm ကောင်းတစ်ခုကို ရွေးချယ်ခြင်းဖြစ်သည်။ **gradient descent** သည် reasonable choice ဖြစ်သော်လည်း၊ ၎င်းသည် တစ်ခါတစ်ရံ အလွန်နှေးကွေးနိုင်သည် သို့မဟုတ် အခြားပြဿနာများကို ဖြစ်စေနိုင်သည်။ + +နက်ရှိုင်းသော သင်ကြားမှုတွင် **Stochastic Gradient Descent** (SGD) ကို အသုံးပြုသည်၊ ၎င်းသည် training set မှ random minibatches ကို ရွေးချယ်ပြီး gradient descent ကို အကောင်အထည်ဖော်ခြင်းဖြစ်သည်။ Weight များကို အောက်ပါဖော်ပြထားသော formula ဖြင့် ပြင်ဆင်သည်- + +wt+1 = wt - η∇ℒ + +### Momentum + +**Momentum SGD** တွင်၊ ယခင်အဆင့်များမှ gradient တစ်စိတ်တစ်ပိုင်းကို ထိန်းသိမ်းထားသည်။ ၎င်းသည် inertia ဖြင့် တစ်နေရာမှ ရွေ့လျားနေသောအခါ၊ အခြားတစ်ဖက်မှ အလှည့်အပြောင်းတစ်ခုရရှိပါက၊ trajectory သည် ချက်ချင်းမပြောင်းလဲဘဲ၊ original movement ၏ တစ်စိတ်တစ်ပိုင်းကို ထိန်းသိမ်းထားသည်နှင့် ဆင်တူသည်။ ဤနေရာတွင် *speed* ကို ကိုယ်စားပြုသော vector v ကို ထည့်သွင်းသည်- + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +ဤနေရာတွင် parameter γ သည် inertia ကို အဘယ်လောက်ထိန်းသိမ်းမည်ကို ဖော်ပြသည်- γ=0 သည် classical SGD ကို ကိုယ်စားပြုသည်။ γ=1 သည် pure motion equation ဖြစ်သည်။ + +### Adam, Adagrad, စသည်တို့ + +Layer တစ်ခုစီတွင် signal များကို matrix Wi ဖြင့် multiply လုပ်သောကြောင့် ||Wi|| အပေါ်မူတည်၍ gradient သည် diminish ဖြစ်ပြီး 0 အနီးသို့ ရောက်နိုင်သည် သို့မဟုတ် အလွန်ကြီးမားနိုင်သည်။ ၎င်းသည် Exploding/Vanishing Gradients ပြဿနာ၏ အဓိကအကြောင်းရင်းဖြစ်သည်။ + +ဤပြဿနာကို ဖြေရှင်းရန် gradient ၏ direction ကိုသာ အသုံးပြုပြီး၊ absolute value ကို မထည့်သွင်းပါ- + +wt+1 = wt - η(∇ℒ/||∇ℒ||), where ||∇ℒ|| = √∑(∇ℒ)2 + +ဤ algorithm ကို **Adagrad** ဟုခေါ်သည်။ အခြား algorithm များဖြစ်သော **RMSProp**, **Adam** သည်လည်း အတူတူသော idea ကို အသုံးပြုသည်။ + +> **Adam** သည် အများသော application များအတွက် အလွန်ထိရောက်သော algorithm ဖြစ်သည်ဟု သတ်မှတ်ထားပြီး၊ သုံးစွဲရန် မသေချာပါက Adam ကို အသုံးပြုပါ။ + +### Gradient clipping + +Gradient clipping သည် အထက်ဖော်ပြထားသော idea ၏ extension ဖြစ်သည်။ ||∇ℒ|| ≤ θ ဖြစ်ပါက၊ weight optimization တွင် original gradient ကို အသုံးပြုသည်။ ||∇ℒ|| > θ ဖြစ်ပါက gradient ကို norm ဖြင့် ခွဲသည်။ ဤနေရာတွင် θ သည် parameter ဖြစ်ပြီး၊ အများဆုံးကိစ္စများတွင် θ=1 သို့မဟုတ် θ=10 ကို အသုံးပြုနိုင်သည်။ + +### Learning rate decay + +Training အောင်မြင်မှုသည် learning rate parameter η အပေါ် မူတည်သည်။ η တန်ဖိုးကြီးများသည် training ပိုမိုမြန်ဆန်စေသည်ဟု သတ်မှတ်နိုင်ပြီး၊ training အစပိုင်းတွင် ၎င်းကို အသုံးပြုလိုသည်။ ထို့နောက် η တန်ဖိုးငယ်များသည် network ကို fine-tune လုပ်ရန် ကူညီသည်။ ထို့ကြောင့် training အတွင်း η ကို လျော့ချလိုသည်။ + +ဤလုပ်ငန်းစဉ်ကို training epoch တစ်ခုစီပြီးနောက် η ကို (ဥပမာ 0.98) multiplier ဖြင့် လျော့ချခြင်း သို့မဟုတ် **learning rate schedule** ကို အသုံးပြုခြင်းဖြင့် ပြုလုပ်နိုင်သည်။ + +## နက်ဝက် Architecture များ + +သင့်ပြဿနာအတွက် နက်ဝက် architecture ကို ရွေးချယ်ခြင်းသည် ခက်ခဲနိုင်သည်။ သာမန်အားဖြင့်၊ သင့် task (သို့မဟုတ် ဆင်တူသော task) အတွက် အောင်မြင်မှုရရှိထားသော architecture ကို ရွေးချယ်လေ့ရှိသည်။ [ဒီအကျဉ်းချုပ်](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) သည် computer vision အတွက် neural network architecture များကို ဖော်ပြထားသည်။ + +> သင့် training samples အရေအတွက်အတွက် အတော်လေးအစွမ်းထက်သော architecture ကို ရွေးချယ်ရန် အရေးကြီးသည်။ အလွန်အစွမ်းထက်သော model ကို ရွေးချယ်ခြင်းသည် [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) ဖြစ်စေနိုင်သည်။ + +အခြားနည်းလမ်းက self-adjusting ဖြစ်သော architecture ကို အသုံးပြုခြင်းဖြစ်သည်။ **ResNet** architecture နှင့် **Inception** တစ်ချို့သည် self-adjusting ဖြစ်သည်။ [Computer vision architecture များအကြောင်း](../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/my/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/my/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..09e047b8 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Oxford အိမ်မွေးတိရစ္ဆာန်များကို Transfer Learning အသုံးပြု၍ ခွဲခြားခြင်း + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ Lab Assignment။ + +## တာဝန် + +သင်သည် အိမ်မွေးတိရစ္ဆာန်များကို စာရင်းသွင်းရန်အတွက် pet nursery အတွက် အက်ပ်တစ်ခု ဖန်တီးရန်လိုအပ်သည်ဟု စိတ်ကူးပါစေ။ ထိုအက်ပ်၏ အလွန်ကောင်းမွန်သော အင်္ဂါရပ်တစ်ခုမှာ ဓာတ်ပုံမှ တိရစ္ဆာန်၏ အမျိုးအစားကို အလိုအလျောက် ရှာဖွေနိုင်ခြင်းဖြစ်မည်။ ဤအလုပ်မှာ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) အိမ်မွေးတိရစ္ဆာန်များ dataset မှ တကယ့်ဘဝ အိမ်မွေးတိရစ္ဆာန်ဓာတ်ပုံများကို Transfer Learning အသုံးပြု၍ ခွဲခြားသတ်မှတ်သွားမည်ဖြစ်သည်။ + +## Dataset + +ကျွန်ုပ်တို့သည် [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) အိမ်မွေးတိရစ္ဆာန်များ dataset ကို အသုံးပြုမည်ဖြစ်ပြီး၊ ၎င်းတွင် ခွေးနှင့်ကြောင် ၃၅ မျိုးအထိ ပါဝင်သည်။ + +Dataset ကို ဒေါင်းလုဒ်လုပ်ရန် အောက်ပါ code snippet ကို အသုံးပြုပါ- + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Notebook စတင်ခြင်း + +Lab ကို [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) ဖိုင်ကို ဖွင့်၍ စတင်ပါ။ + +## အဓိကအချက် + +Transfer learning နှင့် pre-trained networks များသည် တကယ့်ဘဝ image classification ပြဿနာများကို အလွန်လွယ်ကူစွာ ဖြေရှင်းနိုင်စေသည်။ သို့သော် pre-trained networks များသည် အမျိုးအစားတူသော ဓာတ်ပုံများတွင်သာ ကောင်းစွာအလုပ်လုပ်နိုင်ပြီး၊ အလွန်ကွဲပြားသော ဓာတ်ပုံများ (ဥပမာ- ဆေးဘက်ဆိုင်ရာဓာတ်ပုံများ) ကို ခွဲခြားရန် စတင်လျှင်၊ ရလဒ်များမှာ အလွန်မကောင်းနိုင်ပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရားရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားယူမှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/my/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..214e8a79 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoencoders + +CNN များကိုလေ့ကျင့်ရာတွင် အဓိကပြဿနာတစ်ခုမှာ အမှတ်အသားပြုထားသော ဒေတာများအများကြီးလိုအပ်သည်။ ဥပမာအားဖြင့် ပုံများကို အမျိုးအစားအလိုက်ခွဲခြားရန် လိုအပ်ပြီး၊ ၎င်းသည်လူ့အင်အားဖြင့် လုပ်ဆောင်ရမည့်အလုပ်ဖြစ်သည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +သို့သော်၊ CNN feature extractors များကိုလေ့ကျင့်ရန် အမှတ်အသားမပြုထားသော (raw) ဒေတာများကို အသုံးပြုလိုနိုင်သည်။ ၎င်းကို **self-supervised learning** ဟုခေါ်သည်။ အမှတ်အသားများအစား၊ ပုံများကို network input နှင့် output အဖြစ်အသုံးပြုမည်ဖြစ်သည်။ **autoencoder** ၏ အဓိကအကြောင်းအရာမှာ **encoder network** တစ်ခုကို အသုံးပြု၍ input ပုံကို **latent space** (အများအားဖြင့် အရွယ်အစားသေးငယ်သော vector) တစ်ခုအဖြစ် ပြောင်းလဲပြီး၊ **decoder network** သည် မူရင်းပုံကို ပြန်လည်ဖန်တီးရန် ရည်ရွယ်ထားသည်။ + +> ✅ [autoencoder](https://wikipedia.org/wiki/Autoencoder) သည် "အမှတ်အသားမပြုထားသော ဒေတာများကို ထိရောက်စွာ encode လုပ်ရန် လေ့လာသည့် artificial neural network အမျိုးအစားတစ်ခုဖြစ်သည်။" + +autoencoder ကို accurate reconstruction ရရှိရန် မူရင်းပုံမှ အချက်အလက်များကို အများဆုံးဖမ်းယူရန် လေ့ကျင့်နေသောကြောင့်၊ network သည် input ပုံများ၏ အဓိပ္ပါယ်ကို ဖမ်းယူရန် အကောင်းဆုံး **embedding** ကို ရှာဖွေသည်။ + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.my.jpg) + +> ပုံကို [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) မှရယူသည် + +## Autoencoders အသုံးပြုနိုင်သောအခြေအနေများ + +မူရင်းပုံများကို ပြန်လည်ဖန်တီးခြင်းသည် ကိုယ်တိုင်အသုံးဝင်သည်ဟု မထင်ရသော်လည်း၊ autoencoders အထူးအသုံးဝင်သော အခြေအနေများ ရှိသည်။ + +* **ပုံများ၏ dimension ကို လျှော့ချခြင်း** သို့မဟုတ် **image embeddings များကို လေ့ကျင့်ခြင်း**။ Autoencoders များသည် PCA ထက် ပိုမိုကောင်းမွန်သောရလဒ်များပေးနိုင်သည်၊ အကြောင်းမှာ ၎င်းသည် ပုံများ၏ spatial nature နှင့် hierarchical features များကို ထည့်သွင်းစဉ်းစားသောကြောင့်ဖြစ်သည်။ +* **Denoising**၊ ပုံမှ ဆူညံသံကို ဖယ်ရှားခြင်း။ ဆူညံသံသည် အသုံးမဝင်သော အချက်အလက်များစွာကို ပါဝင်သောကြောင့် autoencoder သည် ၎င်းအား latent space သေးငယ်သောနေရာတွင် အားလုံးကို fit လုပ်၍မရနိုင်ပါ၊ ထို့ကြောင့် ပုံ၏ အရေးပါသောအပိုင်းကိုသာ ဖမ်းယူသည်။ Denoisers များကို လေ့ကျင့်ရာတွင် မူရင်းပုံများကို စတင်အသုံးပြုပြီး၊ ဆူညံသံ artificial ထည့်သွင်းထားသောပုံများကို autoencoder input အဖြစ်အသုံးပြုသည်။ +* **Super-resolution**၊ ပုံ၏ resolution ကို မြှင့်တင်ခြင်း။ Resolution မြင့်သောပုံများကို စတင်အသုံးပြုပြီး၊ resolution နိမ့်သောပုံကို autoencoder input အဖြစ်အသုံးပြုသည်။ +* **Generative models**။ autoencoder ကို လေ့ကျင့်ပြီးနောက်၊ decoder အပိုင်းကို random latent vectors မှ စတင်၍ object အသစ်များဖန်တီးရန် အသုံးပြုနိုင်သည်။ + +## Variational Autoencoders (VAE) + +Traditional autoencoders များသည် input data ၏ dimension ကို လျှော့ချပြီး၊ input ပုံများ၏ အရေးပါသော features များကို ရှာဖွေသည်။ သို့သော် latent vectors များသည် အဓိပ္ပါယ်မရှိသောအခါများရှိသည်။ ဥပမာအားဖြင့် MNIST dataset ကိုယူကာ၊ latent vectors များနှင့် digit များကို ဆက်စပ်စဉ်းစားရန် မလွယ်ကူပါ၊ အနီးစပ်ဆုံး latent vectors များသည် တူညီသော digit များကို မဖြစ်စေပါ။ + +Generative models များကို လေ့ကျင့်ရန် latent space ကို နားလည်ရန် ပိုမိုကောင်းမွန်သည်။ ဤအကြောင်းအရာသည် **variational auto-encoder** (VAE) သို့ ဦးတည်စေသည်။ + +VAE သည် latent parameters ၏ *statistical distribution* ကို ခန့်မှန်းရန် လေ့ကျင့်သော autoencoder ဖြစ်ပြီး၊ ၎င်းကို **latent distribution** ဟုခေါ်သည်။ ဥပမာအားဖြင့် latent vectors များကို zmean နှင့် zsigma (mean နှင့် standard deviation သည် dimensionality d ရှိသော vectors ဖြစ်သည်) ဖြင့် normal distribution အတိုင်း ခန့်မှန်းလိုနိုင်သည်။ VAE ၏ encoder သည် ၎င်း parameters များကို ခန့်မှန်းပြီး၊ decoder သည် ဤ distribution မှ random vector ကိုယူကာ object ကို ပြန်လည်ဖန်တီးသည်။ + +အကျဉ်းချုပ်အားဖြင့် - + + * Input vector မှ `z_mean` နှင့် `z_log_sigma` ကို ခန့်မှန်းသည် (standard deviation ကို ခန့်မှန်းခြင်းမဟုတ်ဘဲ၊ ၎င်း၏ logarithm ကို ခန့်မှန်းသည်) + * Distribution N(zmean,exp(zlog\_sigma)) မှ `sample` vector ကို ရွေးချယ်သည် + * Decoder သည် `sample` ကို input vector အဖြစ်အသုံးပြုကာ မူရင်းပုံကို ပြန်လည်ဖန်တီးရန် ကြိုးစားသည် + + + +> ပုံကို [Isaak Dykeman](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ၏ blog post မှရယူသည် + +Variational auto-encoders တွင် loss function အစိတ်အပိုင်းနှစ်ခုပါဝင်သည် - + +* **Reconstruction loss** သည် target နှင့် ပြန်လည်ဖန်တီးထားသောပုံ၏ နီးစပ်မှုကို ပြသသော loss function ဖြစ်သည် (Mean Squared Error, MSE ဖြစ်နိုင်သည်)။ ၎င်းသည် normal autoencoders တွင် အသုံးပြုသော loss function နှင့် တူသည်။ +* **KL loss** သည် latent variable distributions ကို normal distribution နှင့် နီးစပ်စေသည်။ ၎င်းသည် [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) အပေါ် အခြေခံသည် - statistical distributions နှစ်ခု၏ တူညီမှုကို ခန့်မှန်းရန် metric တစ်ခုဖြစ်သည်။ + +VAE ၏ အရေးပါသောအားသာချက်တစ်ခုမှာ latent vectors ကို sample လုပ်ရန် distribution ကို သိရှိထားသောကြောင့် ပုံအသစ်များကို လွယ်ကူစွာ ဖန်တီးနိုင်သည်။ ဥပမာအားဖြင့် MNIST dataset ကို 2D latent vector ဖြင့် VAE ကို လေ့ကျင့်ပါက latent vector ၏ components များကို ပြောင်းလဲကာ digit များကို ရနိုင်သည် - + +vaemnist + +> ပုံကို [Dmitry Soshnikov](http://soshnikov.com) မှရယူသည် + +latent parameter space ၏ အခြားအစိတ်အပိုင်းများမှ latent vectors များကို ရယူသောအခါ၊ ပုံများသည် တစ်ခုနှင့်တစ်ခု ပေါင်းစပ်နေသည်ကို တွေ့နိုင်သည်။ ဤ space ကို 2D အနေနှင့် visualization ပြုလုပ်နိုင်သည် - + +vaemnist cluster + +> ပုံကို [Dmitry Soshnikov](http://soshnikov.com) မှရယူသည် + +## ✍️ Exercises: Autoencoders + +Autoencoders အကြောင်းကို အောက်ပါ notebooks များတွင် ပိုမိုလေ့လာပါ - + +* [Autoencoders in TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders in PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Autoencoders ၏ Properties + +* **Data Specific** - ၎င်းသည် လေ့ကျင့်ထားသော ပုံအမျိုးအစားများတွင်သာ ကောင်းမွန်စွာ အလုပ်လုပ်သည်။ ဥပမာအားဖြင့် flower များအပေါ် super-resolution network ကို လေ့ကျင့်ပါက portrait များအပေါ် ကောင်းမွန်စွာ အလုပ်မလုပ်နိုင်ပါ။ ၎င်းသည် training dataset မှ features များကို အသုံးပြုကာ resolution မြင့်သောပုံကို ဖန်တီးသောကြောင့်ဖြစ်သည်။ +* **Lossy** - ပြန်လည်ဖန်တီးထားသောပုံသည် မူရင်းပုံနှင့် တူညီမှုမရှိပါ။ Loss ၏ nature ကို training အတွင်း အသုံးပြုသော *loss function* က သတ်မှတ်သည်။ +* **Unlabeled data** တွင် အလုပ်လုပ်သည်။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## အကျဉ်းချုပ် + +ဤသင်ခန်းစာတွင် autoencoders ၏ အမျိုးအစားများနှင့် ၎င်းတို့ကို AI scientist အနေဖြင့် ဘယ်လိုအသုံးပြုရမည်ကို သင်လေ့လာခဲ့သည်။ ၎င်းတို့ကို ဘယ်လိုတည်ဆောက်ရမည်၊ ပုံများကို ပြန်လည်ဖန်တီးရန် ဘယ်လိုအသုံးပြုရမည်ကိုလည်း သင်လေ့လာခဲ့သည်။ VAE နှင့် ၎င်းကို အသုံးပြုကာ ပုံအသစ်များဖန်တီးရန် ဘယ်လိုလုပ်ရမည်ကိုလည်း သင်လေ့လာခဲ့သည်။ + +## 🚀 Challenge + +ဤသင်ခန်းစာတွင် autoencoders ကို ပုံများအတွက် အသုံးပြုခြင်းကို သင်လေ့လာခဲ့သည်။ သို့သော်၊ ၎င်းတို့ကို ဂီတအတွက်လည်း အသုံးပြုနိုင်သည်! Magenta project ၏ [MusicVAE](https://magenta.tensorflow.org/music-vae) ကို ကြည့်ရှုပါ၊ autoencoders ကို အသုံးပြုကာ ဂီတကို ပြန်လည်ဖန်တီးရန် လေ့လာထားသည်။ ဤ library ကို အသုံးပြုကာ [အတွေ့အကြုံများ](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) + +## Review & Self Study + +Autoencoders အကြောင်းကို အောက်ပါ resources များတွင် ပိုမိုလေ့လာပါ - + +* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blog post on NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/) +* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Assignment + +[AutoencodersTF.ipynb](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) notebook ၏ အဆုံးတွင် 'task' ရှိသည် - ၎င်းကို သင်၏ assignment အဖြစ် အသုံးပြုပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/10-GANs/README.md b/translations/my/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..54a7d16a --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,111 @@ + +# Generative Adversarial Networks + +မကြာသေးမီကပိုင်းတွင် **generative models** အကြောင်းကိုလေ့လာခဲ့ပါသည်။ Generative models ဆိုသည်မှာ သင်ကြားမှု dataset ထဲရှိပုံများနှင့်တူသော ပုံအသစ်များကို ဖန်တီးနိုင်သော မော်ဒယ်များဖြစ်သည်။ VAE သည် generative model တစ်ခုအနေဖြင့် ကောင်းမွန်သော ဥပမာတစ်ခုဖြစ်သည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +သို့သော် VAE ကို အသုံးပြု၍ အဓိပ္ပါယ်ရှိသော ပုံများကို သင့်တင့်သော resolution ဖြင့် ဖန်တီးရန်ကြိုးစားပါက သင်ကြားမှုသည် ကောင်းစွာမရောက်ရှိနိုင်ပါ။ ဒီလိုအခြေအနေတွင် generative models အတွက် အထူးသီးသန့်ဖန်တီးထားသော architecture တစ်ခုဖြစ်သည့် **Generative Adversarial Networks** (GANs) အကြောင်းကို လေ့လာရမည်ဖြစ်သည်။ + +GAN ၏ အဓိကအကြောင်းအရာမှာ neural networks နှစ်ခုကို အချင်းချင်းယှဉ်ပြိုင်စွမ်းရည်မြှင့်တင်ရန် သင်ကြားခြင်းဖြစ်သည်။ + + + +> ပုံကို [Dmitry Soshnikov](http://soshnikov.com) မှ ဖန်တီးထားသည်။ + +> ✅ အသုံးအနှုန်းအနည်းငယ်: +> * **Generator** ဆိုသည်မှာ random vector တစ်ခုကိုယူပြီး အဖြေအနေဖြင့် ပုံတစ်ခုကို ဖန်တီးပေးသော network ဖြစ်သည်။ +> * **Discriminator** ဆိုသည်မှာ ပုံတစ်ခုကိုယူပြီး အဲဒီပုံသည် training dataset ထဲမှ အမှန်ပုံဖြစ်သည်လား၊ generator မှ ဖန်တီးထားသော ပုံဖြစ်သည်လားဆိုတာကို ခွဲခြားပေးရမည်။ အဓိကအားဖြင့် image classifier တစ်ခုဖြစ်သည်။ + +### Discriminator + +Discriminator ၏ architecture သည် အခြား image classification network များနှင့် မတူကွဲပြားမှုမရှိပါ။ အလွယ်ဆုံးအနေဖြင့် fully-connected classifier ဖြစ်နိုင်သလို၊ [convolutional network](../07-ConvNets/README.md) ဖြစ်နိုင်ပါသည်။ + +> ✅ Convolutional networks အပေါ်အခြေခံထားသော GAN ကို [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) ဟုခေါ်သည်။ + +CNN discriminator တွင် ပါဝင်သော layer များမှာ - convolution+pooling အတန်းများ (spatial size လျော့နည်းလာသော) နှင့် "feature vector" ရရှိရန် fully-connected layer တစ်ခု (သို့မဟုတ်) အများအပြားပါဝင်သည်။ နောက်ဆုံး binary classifier တစ်ခုဖြစ်သည်။ + +> ✅ "Pooling" ဆိုသည်မှာ ပုံ၏အရွယ်အစားကို လျော့နည်းစေသောနည်းလမ်းတစ်ခုဖြစ်သည်။ "Pooling layers သည် data ၏ dimension များကို လျော့နည်းစေပြီး layer တစ်ခုတွင် neuron cluster များ၏ output များကို နောက်တစ်ခု layer တွင် neuron တစ်ခုအဖြစ်ပေါင်းစည်းပေးသည်။" - [source](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Generator သည် အနည်းငယ်ပိုရှုပ်ထွေးသည်။ Discriminator ကို ပြန်လှည့်ထားသည့်အနေဖြင့် တွေးနိုင်သည်။ latent vector (feature vector ၏နေရာတွင်) မှစတင်ပြီး၊ fully-connected layer တစ်ခုဖြင့် လိုအပ်သော size/shape သို့ ပြောင်းလဲပေးပြီး၊ deconvolutions+upscaling ဖြင့် ဆက်လက်လုပ်ဆောင်သည်။ ၎င်းသည် [autoencoder](../09-Autoencoders/README.md) ၏ *decoder* အပိုင်းနှင့် ဆင်တူသည်။ + +> ✅ Convolution layer ကို linear filter အနေဖြင့် ပုံကို traverse လုပ်သော logic ဖြင့် implement လုပ်ထားသည့်အတွက် deconvolution သည် convolution နှင့် ဆင်တူပြီး၊ အတူတူသော layer logic ကို အသုံးပြု၍ implement လုပ်နိုင်သည်။ + + + +> ပုံကို [Dmitry Soshnikov](http://soshnikov.com) မှ ဖန်တီးထားသည်။ + +### GAN သင်ကြားခြင်း + +GANs ကို **adversarial** ဟုခေါ်သည်မှာ generator နှင့် discriminator အချင်းချင်း ယှဉ်ပြိုင်မှုရှိနေသောကြောင့်ဖြစ်သည်။ ယှဉ်ပြိုင်မှုအတွင်း generator နှင့် discriminator နှစ်ခုစလုံးကောင်းမွန်လာပြီး၊ network သည် ပိုမိုကောင်းမွန်သော ပုံများကို ဖန်တီးနိုင်ရန် သင်ကြားသည်။ + +သင်ကြားမှုသည် အဆင့်နှစ်ခုဖြင့် ဆောင်ရွက်သည် - + +* **Discriminator ကို သင်ကြားခြင်း**။ ဒီအလုပ်ကို လွယ်ကူစွာလုပ်ဆောင်နိုင်သည် - generator မှ ဖန်တီးထားသော ပုံများ batch တစ်ခုကိုယူပြီး၊ ၎င်းကို 0 (fake image) ဟု label လုပ်သည်။ input dataset မှ ပုံများ batch တစ်ခုကိုယူပြီး (label 1, real image) ဖြင့် သတ်မှတ်သည်။ *discriminator loss* တစ်ခုရရှိပြီး၊ backprop လုပ်ဆောင်သည်။ +* **Generator ကို သင်ကြားခြင်း**။ ဒီအလုပ်သည် အနည်းငယ်ပိုရှုပ်ထွေးသည်၊ generator ၏ အနိမ့်ဆုံး output ကို တိုင်းတာရန် မသိသောကြောင့်ဖြစ်သည်။ GAN network တစ်ခုလုံးကို generator နှင့် discriminator ပေါင်းစပ်ထားသောအနေဖြင့်ယူပြီး၊ random vectors များဖြင့် input ပေးကာ၊ output ကို 1 (real images) ဖြစ်ရန် မျှော်မှန်းသည်။ Discriminator ၏ parameters များကို freeze လုပ်ပြီး (ဒီအဆင့်တွင် သင်ကြားလိုမထားပါ)၊ backprop လုပ်ဆောင်သည်။ + +ဒီလုပ်ငန်းစဉ်အတွင်း generator နှင့် discriminator loss များသည် အနိမ့်ဆုံးမရောက်ရှိနိုင်ပါ။ အကောင်းဆုံးအခြေအနေတွင် loss များသည် တုန်လှုပ်မှုရှိပြီး၊ network နှစ်ခုစလုံးကောင်းမွန်လာသည်ကို ဖော်ပြသည်။ + +## ✍️ Exercises: GANs + +* [GAN Notebook in TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook in PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### GAN သင်ကြားမှု၏ ပြဿနာများ + +GANs သည် သင်ကြားရန် အထူးခက်ခဲသော network များအဖြစ်လူသိများသည်။ အောက်ပါပြဿနာများရှိနိုင်သည် - + +* **Mode Collapse**။ Generator သည် discriminator ကို လှည့်စားနိုင်သော ပုံတစ်ခုကိုသာ ဖန်တီးပြီး၊ ပုံအမျိုးမျိုးကို ဖန်တီးရန် မလေ့လာနိုင်သောအခြေအနေကို mode collapse ဟုခေါ်သည်။ +* **Hyperparameters sensitivity**။ GAN သည် မတိုင်မီ convergence မရောက်ရှိနိုင်ပြီး၊ sudden learning rate လျော့နည်းမှုကြောင့် convergence ရောက်ရှိနိုင်သည်။ +* **Generator နှင့် discriminator အချင်းချင်း balance ထိန်းသိမ်းမှု**။ Discriminator loss သည် အလွန်မြန်စွာ 0 သို့ရောက်ရှိနိုင်ပြီး၊ generator သည် ဆက်လက်သင်ကြားရန် မရနိုင်သောအခြေအနေဖြစ်နိုင်သည်။ ဒီပြဿနာကို generator နှင့် discriminator အတွက် learning rate မတူကွဲပြားစွာ သတ်မှတ်ခြင်း၊ သို့မဟုတ် discriminator loss အလွန်နိမ့်နေပါက training ကို ချန်ထားခြင်းဖြင့် ဖြေရှင်းနိုင်သည်။ +* **High resolution training**။ Autoencoders တွင်ရှိသောပြဿနာနှင့်တူသောပြဿနာဖြစ်ပြီး၊ convolutional network layer များအများအပြားကို ပြန်လည်ဖန်တီးရန်ကြိုးစားမှုကြောင့် artifacts ဖြစ်ပေါ်သည်။ ဒီပြဿနာကို **progressive growing** ဖြင့် ဖြေရှင်းနိုင်သည် - layer အနည်းငယ်ကို low-res images တွင် training လုပ်ပြီး၊ layer များကို "unblock" သို့မဟုတ် ထပ်မံထည့်သွင်းသည်။ အခြားနည်းလမ်းမှာ layer များအကြား extra connections ထည့်သွင်းပြီး၊ resolution အမျိုးမျိုးကို တစ်ချိန်တည်း training လုပ်ခြင်းဖြစ်သည်။ [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048) ကို အသေးစိတ်ဖတ်ရှုပါ။ + +## Style Transfer + +GANs သည် အနုပညာပုံများ ဖန်တီးရန် ကောင်းမွန်သောနည်းလမ်းဖြစ်သည်။ အခြားစိတ်ဝင်စားဖွယ်နည်းလမ်းတစ်ခုမှာ **style transfer** ဖြစ်ပြီး၊ **content image** တစ်ခုကိုယူကာ၊ **style image** ၏ filter များကို အသုံးပြု၍ ပုံကို ပြန်လည်ရေးဆွဲပေးသည်။ + +၎င်း၏လုပ်ဆောင်ပုံမှာ - + +* Random noise image (content image ကိုလည်းစတင်အသုံးပြုနိုင်သော်လည်း၊ random noise image မှစတင်ခြင်းသည် နားလည်ရန်ပိုလွယ်ကူသည်) မှစတင်သည်။ +* Content image နှင့် style image နှစ်ခုလုံးနှင့် နီးစပ်သော image တစ်ခုကို ဖန်တီးရန် ရည်ရွယ်သည်။ Loss function နှစ်ခုဖြင့် သတ်မှတ်သည် - + - **Content loss** ကို current image နှင့် content image မှ CNN ၏ layer များမှ extract လုပ်ထားသော features အပေါ်အခြေခံ၍ တွက်ချက်သည်။ + - **Style loss** ကို current image နှင့် style image အကြား Gram matrices ကို အသုံးပြု၍ တွက်ချက်သည် (အသေးစိတ်ကို [example notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) တွင်ကြည့်ပါ)။ +* ပုံကို ပိုမိုချောမွေ့စေရန်နှင့် noise ကို ဖယ်ရှားရန် **Variation loss** ကို ထည့်သွင်းသည်။ Neighboring pixels အကြားအကွာအဝေးကို တွက်ချက်သည်။ +* Optimization loop ၏အဓိကလုပ်ငန်းစဉ်မှာ gradient descent (သို့မဟုတ် အခြား optimization algorithm) ကို အသုံးပြု၍ total loss (loss သုံးခု၏ weighted sum) ကို လျော့နည်းစေရန် current image ကို ပြင်ဆင်သည်။ + +## ✍️ Example: [Style Transfer](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## နိဂုံး + +ဒီသင်ခန်းစာတွင် GANs နှင့် ၎င်းတို့ကို သင်ကြားပုံကို လေ့လာခဲ့ပါသည်။ GANs ၏ အထူးပြဿနာများနှင့် ၎င်းတို့ကို ဖြေရှင်းရန်နည်းလမ်းများကိုလည်း လေ့လာခဲ့ပါသည်။ + +## 🚀 Challenge + +သင်၏ပုံများကို အသုံးပြု၍ [Style Transfer notebook](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) ကို run လုပ်ပါ။ + +## Review & Self Study + +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 architecture အနေဖြင့် စဉ်ဆက်မပြတ်အသုံးပြုနေသောနည်းလမ်း +* [Creating Generative Art using GANs on Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Assignment + +ဒီသင်ခန်းစာနှင့်ဆက်စပ်ထားသော notebook နှစ်ခုမှ တစ်ခုကို ပြန်လည်လေ့လာပြီး၊ သင်၏ပုံများကို အသုံးပြု၍ GAN ကို retrain လုပ်ပါ။ သင်ဘာတွေဖန်တီးနိုင်မလဲ? + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာရှိသောအရင်းအမြစ်အဖြစ် ရှုလေ့လာသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/my/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..235fd547 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,187 @@ + +# အရာဝတ္ထုရှာဖွေခြင်း + +ယခင်က ကျွန်ုပ်တို့ handling လုပ်ခဲ့သော ပုံရိပ်အမျိုးအစားခွဲခြားမှုမော်ဒယ်များသည် ပုံရိပ်တစ်ခုကိုယူပြီး MNIST ပြဿနာတွင် 'number' အတန်းလိုမျိုး အမျိုးအစားရလဒ်တစ်ခုကိုထုတ်ပေးသည်။ သို့သော် အများသောအားဖြင့် ပုံရိပ်တွင် အရာဝတ္ထုများပါဝင်သည်ကိုသာမက၊ ၎င်းတို့၏တိကျသောတည်နေရာကိုသိလိုသည်။ **အရာဝတ္ထုရှာဖွေခြင်း**၏အဓိကရည်ရွယ်ချက်မှာ အတိအကျတည်နေရာကိုသတ်မှတ်နိုင်ရန်ဖြစ်သည်။ + +## [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.my.png) + +> ပုံရိပ် [YOLO v2 web site](https://pjreddie.com/darknet/yolov2/) မှ + +## အရာဝတ္ထုရှာဖွေခြင်းအတွက် ရိုးရိုးရှင်းရှင်းနည်းလမ်း + +ပုံရိပ်တစ်ခုတွင် ကြောင်ကိုရှာဖွေလိုသည်ဟုယူဆပါက၊ အရာဝတ္ထုရှာဖွေခြင်းအတွက် ရိုးရိုးရှင်းရှင်းနည်းလမ်းမှာ အောက်ပါအတိုင်းဖြစ်နိုင်သည်- + +1. ပုံရိပ်ကို အပိုင်းအခြားများအဖြစ်ခွဲခြားပါ။ +2. တစ်ခုချင်းစီအပေါ် ပုံရိပ်အမျိုးအစားခွဲခြားမှုကို run လုပ်ပါ။ +3. activation အဆင့်မြင့်သော အပိုင်းများကို အဆိုပါအရာဝတ္ထုပါဝင်သည်ဟုယူဆနိုင်သည်။ + +![Naive Object Detection](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.my.png) + +> *ပုံရိပ် [Exercise Notebook](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb) မှ* + +သို့သော်၊ ဤနည်းလမ်းသည် အလွန်မကျွမ်းကျင်သောနည်းလမ်းဖြစ်ပြီး အရာဝတ္ထု၏ bounding box ကိုတိကျစွာသတ်မှတ်ရန်မလွယ်ကူပါ။ တိကျသောတည်နေရာကိုသတ်မှတ်ရန် **regression** တစ်ခုကို run လုပ်ရန်လိုအပ်ပြီး၊ ၎င်းအတွက် dataset အထူးတစ်ခုလိုအပ်သည်။ + +## အရာဝတ္ထုရှာဖွေခြင်းအတွက် Regression + +[ဤ blog post](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) တွင် shape detection အပေါ် gentle introduction တစ်ခုပါဝင်သည်။ + +## အရာဝတ္ထုရှာဖွေခြင်းအတွက် Dataset များ + +ဤအလုပ်အတွက် dataset များကိုတွေ့နိုင်ပါသည်- + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 အတန်းများ +* [COCO](http://cocodataset.org/#home) - Common Objects in Context. 80 အတန်းများ၊ bounding boxes နှင့် segmentation masks + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.my.jpg) + +## အရာဝတ္ထုရှာဖွေခြင်း Metrics + +### Intersection over Union + +ပုံရိပ်အမျိုးအစားခွဲခြားမှုအတွက် algorithm ၏စွမ်းဆောင်ရည်ကိုတိုင်းတာရန်လွယ်ကူသော်လည်း၊ အရာဝတ္ထုရှာဖွေခြင်းတွင် အတန်း၏တိကျမှုနှင့် bounding box တည်နေရာ၏တိကျမှုကိုတိုင်းတာရန်လိုအပ်သည်။ ၎င်းအတွက် **Intersection over Union** (IoU) ကိုအသုံးပြုသည်၊ ၎င်းသည် box နှစ်ခု (သို့မဟုတ် arbitrary areas နှစ်ခု) overlap ဖြစ်မှုကိုတိုင်းတာသည်။ + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.my.png) + +> *ပုံရိပ် [IoU အပေါ် blog post](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/) မှ* + +အဓိကအကြောင်းအရာမှာ ရှုထောင့်နှစ်ခု၏ intersection ကို union ဖြင့်စား၍ IoU ကိုရရှိသည်။ identical areas အတွက် IoU သည် 1 ဖြစ်ပြီး၊ completely disjointed areas အတွက် 0 ဖြစ်သည်။ အခြားသောအခြေအနေများတွင် 0 မှ 1 အတွင်းရှိသည်။ IoU သတ်မှတ်ချက်တစ်ခုအထက်ရှိ bounding boxes များကိုသာယူဆပါသည်။ + +### Average Precision + +အတန်း $C$ တစ်ခုကိုဘယ်လောက်ကောင်းကောင်းသိရှိနိုင်သည်ကိုတိုင်းတာလိုပါက **Average Precision** metrics ကိုအသုံးပြုသည်၊ ၎င်းကိုအောက်ပါအတိုင်းတွက်ချက်သည်- + +1. Precision-Recall curve သည် detection threshold value (0 မှ 1) အပေါ်တွင်တိကျမှုကိုပြသည်။ +2. Threshold အပေါ်မူတည်၍ ပုံရိပ်တွင် detection object များနှင့် precision နှင့် recall တန်ဖိုးများကိုရရှိသည်။ +3. Curve သည် အောက်ပါပုံစံဖြစ်သည်- + + + +> *ပုံရိပ် [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) မှ* + +အတန်း $C$ အတွက် Average Precision သည် curve အောက်ရှိဧရိယာဖြစ်သည်။ Recall axis ကို 10 အပိုင်းခွဲပြီး Precision ကိုအပိုင်းများအားလုံးတွင်ပျမ်းမျှတွက်ချက်သည်- + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP နှင့် IoU + +IoU သတ်မှတ်ချက်တစ်ခုအထက်ရှိ detection များကိုသာယူဆပါသည်။ ဥပမာ၊ PASCAL VOC dataset တွင် $\mbox{IoU Threshold} = 0.5$ ကိုယူဆပြီး၊ COCO တွင် AP ကို $\mbox{IoU Threshold}$ တန်ဖိုးများအတွက်တိုင်းတာသည်။ + + + +> *ပုံရိပ် [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop) မှ* + +### Mean Average Precision - mAP + +အရာဝတ္ထုရှာဖွေခြင်းအတွက် အဓိက metric သည် **Mean Average Precision** (mAP) ဖြစ်သည်။ ၎င်းသည် Average Precision တန်ဖိုးကို အတန်းအားလုံးနှင့် $\mbox{IoU Threshold}$ အပေါ်ပျမ်းမျှတွက်ချက်ထားသောတန်ဖိုးဖြစ်သည်။ **mAP** တွက်ချက်မှုလုပ်ငန်းစဉ်ကို [ဤ blog post](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3) တွင်အသေးစိတ်ဖော်ပြထားပြီး၊ [code samples](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734) တွင်လည်းပါဝင်သည်။ + +## အရာဝတ္ထုရှာဖွေခြင်းနည်းလမ်းများ + +အရာဝတ္ထုရှာဖွေခြင်း algorithm များကို အောက်ပါ broad classes နှစ်ခုအဖြစ်ခွဲခြားနိုင်သည်- + +* **Region Proposal Networks** (R-CNN, Fast R-CNN, Faster R-CNN) - အဓိကအကြောင်းအရာမှာ **Regions of Interests** (ROI) များကို generate လုပ်ပြီး CNN ကို run လုပ်ခြင်းဖြစ်သည်။ ဤနည်းလမ်းသည် ရိုးရိုးနည်းလမ်းနှင့်ဆင်တူသော်လည်း ROI များကိုပိုကျွမ်းကျင်စွာ generate လုပ်သည်။ drawback အဓိကမှာ CNN classifier ကို image အပေါ် pass များစွာ run လုပ်ရန်လိုအပ်သောကြောင့် နှေးကွေးသည်။ +* **One-pass** (YOLO, SSD, RetinaNet) methods - ဤ architecture များတွင် network ကို class နှင့် ROI များကို pass တစ်ခုတည်းတွင် predict လုပ်ရန် design လုပ်ထားသည်။ + +### 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 regions များ၏ hierarchical structure ကို generate လုပ်ပြီး၊ CNN feature extractors နှင့် SVM-classifiers ကိုအသုံးပြု၍ object class ကိုသတ်မှတ်သည်။ linear regression ကို bounding box coordinates ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ [Official Paper](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.my.png) + +> *ပုံရိပ် van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.my.png) + +> *ပုံရိပ် [ဤ blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) မှ* + +### F-RCNN - Fast R-CNN + +ဤနည်းလမ်းသည် R-CNN နှင့်ဆင်တူသော်လည်း convolution layers apply လုပ်ပြီးနောက် regions များကိုသတ်မှတ်သည်။ + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.my.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 + +ဤနည်းလမ်း၏အဓိကအကြောင်းအရာမှာ neural network ကိုအသုံးပြု၍ ROIs ကို predict လုပ်ခြင်းဖြစ်သည်။ *Region Proposal Network* ဟုခေါ်သည်။ [Paper](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.my.png) + +> ပုံရိပ် [Official Paper](https://arxiv.org/pdf/1506.01497.pdf) မှ + +### R-FCN: Region-Based Fully Convolutional Network + +ဤ algorithm သည် Faster R-CNN ထက်ပိုမြန်သည်။ အဓိကအကြောင်းအရာမှာ- + +1. ResNet-101 ကိုအသုံးပြု၍ features များကို extract လုပ်သည်။ +2. Features များကို **Position-Sensitive Score Map** ဖြင့် process လုပ်သည်။ $C$ အတန်းများမှ object တစ်ခုကို $k\times k$ regions ဖြင့်ခွဲခြားပြီး၊ object parts များကို predict လုပ်ရန် training လုပ်သည်။ +3. $k\times k$ regions မှ part တစ်ခုစီအတွက် network များသည် object classes အတွက် vote လုပ်ပြီး၊ အများဆုံး vote ရရှိသော object class ကိုရွေးချယ်သည်။ + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.my.png) + +> ပုံရိပ် [Official Paper](https://arxiv.org/abs/1605.06409) မှ + +### YOLO - You Only Look Once + +YOLO သည် realtime one-pass algorithm ဖြစ်သည်။ အဓိကအကြောင်းအရာမှာ- + + * ပုံရိပ်ကို $S\times S$ regions အဖြစ်ခွဲခြားသည်။ + * Region တစ်ခုစီအတွက် **CNN** သည် $n$ အရာဝတ္ထုများ၊ *bounding box* coordinates နှင့် *confidence*=*probability* * IoU ကို predict လုပ်သည်။ + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.my.png) + +> ပုံရိပ် [Official Paper](https://arxiv.org/abs/1506.02640) မှ + +### အခြားသော Algorithm များ + +* 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) + +## ✍️ အလုပ်များ: အရာဝတ္ထုရှာဖွေခြင်း + +အောက်ပါ notebook တွင် သင်ကြားမှုကိုဆက်လက်လေ့လာပါ- + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## နိဂုံး + +ဤသင်ခန်းစာတွင် အရာဝတ္ထုရှာဖွေခြင်းကိုအကွာအဝေးရှိသောနည်းလမ်းများဖြင့်လေ့လာခဲ့ပါသည်။ + +## 🚀 စိန်ခေါ်မှု + +YOLO အပေါ်ရှိဤဆောင်းပါးများနှင့် notebook များကိုဖတ်ရှုပြီး ကိုယ်တိုင်စမ်းသပ်ပါ- + +* [Good blog post](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) describing 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) + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Review & Self Study + +* [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/) + +## [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/my/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/my/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..aa687844 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Head Detection using Hollywood Heads Dataset + +[AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ Lab Assignment။ + +## Task + +ဗီဒီယိုစောင့်ကြည့်မှုကင်မရာစီးရီးတွင် လူဦးရေကိုရေတွက်ခြင်းသည် ဆိုင်များတွင်လာရောက်သူဦးရေ၊ စားသောက်ဆိုင်များတွင် လူအများစုစုဝေးသောအချိန်များကို ခန့်မှန်းနိုင်ရန်အရေးကြီးသောအလုပ်တစ်ခုဖြစ်သည်။ ဤအလုပ်ကို ဖြေရှင်းရန်အတွက် လူ့ခေါင်းများကို အမျိုးမျိုးသောထောင့်မှရှာဖွေနိုင်ရမည်။ လူ့ခေါင်းများကို ရှာဖွေနိုင်ရန် Object Detection မော်ဒယ်ကို သင်ကြားရန်အတွက် [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/) ကို အသုံးပြုနိုင်သည်။ + +## The Dataset + +[Hollywood Heads Dataset](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` ဟူသော အတန်းတစ်ခုသာပါရှိပြီး၊ ခေါင်းတစ်ခုစီအတွက် bounding box ၏ ကိုဩဒိနိတ်များကို ရရှိနိုင်သည်။ XML ကို Python libraries အသုံးပြု၍ parse လုပ်နိုင်သကဲ့သို့၊ [ဤစာကြည့်တိုက်](https://pypi.org/project/pascal-voc/) ကို အသုံးပြု၍ PASCAL VOC ဖော်မတ်ကို တိုက်ရိုက်ကိုင်တွယ်နိုင်သည်။ + +## Training Object Detection + +Object Detection မော်ဒယ်ကို အောက်ပါနည်းလမ်းများမှတစ်ခုဖြင့် သင်ကြားနိုင်သည်- + +* [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 ကို အသုံးပြု၍ မော်ဒယ်ကို cloud တွင် programmatically သင်ကြားနိုင်သည်။ 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 တွင်ပါရှိသော build-in module ကို အသုံးပြုနိုင်သည်။ + +## Takeaway + +Object Detection သည် စက်မှုလုပ်ငန်းတွင် မကြာခဏလိုအပ်သောအလုပ်တစ်ခုဖြစ်သည်။ [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) ကဲ့သို့သော ဝန်ဆောင်မှုများကို အသုံးပြု၍ Object Detection ကို ပြုလုပ်နိုင်သော်လည်း၊ Object Detection ၏ လုပ်ဆောင်ပုံကို နားလည်ရန်နှင့် မိမိ၏ မော်ဒယ်များကို သင်ကြားနိုင်ရန် အရေးကြီးသည်။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတရ အရင်းအမြစ်အဖြစ် ရှုယူသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/my/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..e3dac7c7 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# အပိုင်းခွဲခြားခြင်း + +ယခင်က ကျွန်ုပ်တို့ Object Detection အကြောင်းကို လေ့လာခဲ့ပြီး၊ *bounding boxes* ကိုခန့်မှန်းခြင်းဖြင့် ပုံထဲရှိ objects တွေကို ရှာဖွေနိုင်ခဲ့ပါတယ်။ သို့သော် အချို့သောအလုပ်များအတွက် bounding boxes ပဲမဟုတ်ဘဲ၊ ပိုမိုတိကျသော object localization လည်းလိုအပ်ပါတယ်။ ဒီအလုပ်ကို **segmentation** လို့ခေါ်ပါတယ်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentation ကို **pixel classification** အနေနဲ့မြင်နိုင်ပြီး၊ ပုံရိပ်ရဲ့ **တစ်ခုချင်းစီ** pixel အတွက် class ကိုခန့်မှန်းရမယ် (*background* က classes တွေထဲကတစ်ခုဖြစ်ပါတယ်)။ Segmentation algorithm နှစ်မျိုးရှိပါတယ်- + +* **Semantic segmentation** က pixel class ကိုသာပြောပြပြီး၊ အတူတူ class ရဲ့ object တွေကို ခွဲခြားမပြုလုပ်ပါဘူး။ +* **Instance segmentation** ကတော့ class တွေကို အခြားသော instances တွေအဖြစ် ခွဲခြားပေးပါတယ်။ + +ဥပမာအားဖြင့် instance segmentation မှာ သိုးတွေဟာ object အနေနဲ့ ခွဲခြားထားပြီး၊ semantic segmentation မှာတော့ သိုးအားလုံးကို class တစ်ခုအနေနဲ့ပြသထားပါတယ်။ + + + +> ပုံရင်း [ဒီ blog post](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) မှာရရှိပါတယ်။ + +Segmentation အတွက် neural architectures မျိုးစုံရှိပေမယ့်၊ အားလုံးမှာ တူညီတဲ့ဖွဲ့စည်းမှုရှိပါတယ်။ တစ်နည်းအားဖြင့်၊ အရင်ကလေ့လာခဲ့တဲ့ autoencoder နဲ့ဆင်တူပါတယ်၊ ဒါပေမယ့် original image ကို deconstruct လုပ်တာမဟုတ်ဘဲ၊ **mask** ကို deconstruct လုပ်ဖို့ရည်ရွယ်ပါတယ်။ ထို့ကြောင့် segmentation network မှာ အောက်ပါအစိတ်အပိုင်းတွေပါဝင်ပါတယ်- + +* **Encoder** က input image မှ feature တွေကို extract လုပ်ပါတယ်။ +* **Decoder** က feature တွေကို **mask image** အဖြစ်ပြောင်းလဲပေးပြီး၊ အရွယ်အစားတူညီပြီး channel အရေအတွက်က classes အရေအတွက်နဲ့ကိုက်ညီပါတယ်။ + + + +> ပုံရင်း [ဒီ publication](https://arxiv.org/pdf/2001.05566.pdf) မှာရရှိပါတယ်။ + +Segmentation အတွက် အသုံးပြုတဲ့ loss function ကို အထူးပြောရမယ်။ Classical autoencoders အသုံးပြုတဲ့အခါမှာ၊ ပုံရိပ်နှစ်ခုအကြားတူညီမှုကိုတိုင်းတာဖို့လိုအပ်ပြီး၊ mean square error (MSE) ကိုအသုံးပြုနိုင်ပါတယ်။ Segmentation မှာတော့ target mask image ရဲ့ pixel တစ်ခုချင်းစီက class number ကို (third dimension အတိုင်း one-hot-encoded) ကိုယ်စားပြုပါတယ်၊ classification-specific loss functions - cross-entropy loss ကို pixel အားလုံးအတွက်ပျမ်းမျှတွက်ချက်ရပါတယ်။ Mask က binary ဖြစ်ရင် - **binary cross-entropy loss** (BCE) ကိုအသုံးပြုပါတယ်။ + +> ✅ One-hot encoding က class label ကို class အရေအတွက်နဲ့တူညီတဲ့အရှည်ရှိတဲ့ vector အဖြစ် encode လုပ်တဲ့နည်းလမ်းတစ်ခုဖြစ်ပါတယ်။ [ဒီ article](https://datagy.io/sklearn-one-hot-encode/) ကိုကြည့်ပြီး ဒီနည်းလမ်းအကြောင်းပိုမိုလေ့လာပါ။ + +## ဆေးဘက်ပုံရိပ်များအတွက် Segmentation + +ဒီသင်ခန်းစာမှာ၊ human nevi (moles) ကို medical images မှာသိရှိနိုင်ဖို့ network ကို training လုပ်တဲ့အခါ segmentation ကိုအလုပ်လုပ်ပုံကိုမြင်ရပါမယ်။ PH2 Database of dermoscopy images ကို image source အနေနဲ့အသုံးပြုပါမယ်။ ဒီ dataset မှာ typical nevus, atypical nevus, နဲ့ melanoma ဆိုတဲ့ class သုံးမျိုးပါဝင်တဲ့ပုံရိပ် 200 ခုပါဝင်ပါတယ်။ အပုံရိပ်အားလုံးမှာ **mask** ပါဝင်ပြီး၊ nevus ကို outline လုပ်ထားပါတယ်။ + +> ✅ ဒီနည်းလမ်းက ဒီလို medical imaging အတွက် အထူးသင့်လျော်ပါတယ်၊ ဒါပေမယ့် အခြားသောလက်တွေ့အသုံးချမှုတွေကို သင်စဉ်းစားနိုင်မလား? + +navi + +> ပုံရင်း PH2 Database မှာရရှိပါတယ်။ + +ကျွန်ုပ်တို့ model ကို training လုပ်ပြီး၊ background မှ nevus ကို segment လုပ်ပါမယ်။ + +## ✍️ လေ့ကျင့်ခန်းများ: 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 က image classification အတွက် အလွန်အစွမ်းထက်တဲ့နည်းလမ်းဖြစ်ပြီး၊ bounding boxes ကိုကျော်လွန်ပြီး pixel-level classification ကိုလုပ်ဆောင်ပါတယ်။ ဒါဟာ medical imaging အပါအဝင် အခြားသော application တွေမှာအသုံးပြုတဲ့နည်းလမ်းတစ်ခုဖြစ်ပါတယ်။ + +## 🚀 စိန်ခေါ်မှု + +ကိုယ်ခန္ဓာ segmentation က လူတွေ့ပုံရိပ်တွေနဲ့လုပ်နိုင်တဲ့ common tasks တွေထဲကတစ်ခုပါ။ အခြားသောအရေးကြီးတဲ့ tasks တွေမှာ **skeleton detection** နဲ့ **pose detection** ပါဝင်ပါတယ်။ [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) library ကိုစမ်းကြည့်ပြီး pose detection ကိုဘယ်လိုအသုံးပြုနိုင်လဲမြင်ပါ။ + +## Review & Self Study + +ဒီ [wikipedia article](https://wikipedia.org/wiki/Image_segmentation) က ဒီနည်းလမ်းရဲ့ application မျိုးစုံအကြောင်းကို အကျဉ်းချုပ်ပေးထားပါတယ်။ Instance segmentation နဲ့ Panoptic segmentation ရဲ့ subdomains အကြောင်းကို သင်ကိုယ်တိုင်ပိုမိုလေ့လာပါ။ + +## [Assignment](lab/README.md) + +ဒီ lab မှာ **human body segmentation** ကို [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ကို Kaggle မှာရရှိနိုင်တဲ့ dataset ကိုအသုံးပြုပြီးစမ်းကြည့်ပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/my/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..ddcce9f5 --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# လူ့ခန္ဓာကိုယ် အပိုင်းခွဲခြားခြင်း + +လက်တွေ့လေ့ကျင့်ရေး အလုပ်စီမံကိန်း - [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ။ + +## လုပ်ငန်းတာဝန် + +ဗီဒီယိုထုတ်လုပ်မှုတွင်၊ ဥပမာအားဖြင့် မိုးလေဝသခန့်မှန်းချက်များတွင်၊ ကင်မရာမှ လူပုံရိပ်ကို ဖြတ်ထုတ်ပြီး အခြားဗီဒီယိုပုံရိပ်များပေါ်တွင် ထည့်သွင်းရသောအခါများရှိသည်။ ၎င်းကို **chroma key** နည်းလမ်းများ အသုံးပြု၍ ပြုလုပ်ကြသည်။ ယင်းနည်းလမ်းတွင် လူကို တစ်မျိုးတည်းသော အရောင်နောက်ခံပေါ်တွင် ရိုက်ကူးပြီး၊ ထိုနောက်ခံကို ဖယ်ရှားသည်။ ဤလက်တွေ့လေ့ကျင့်ရေးတွင်၊ လူပုံရိပ်ကို ဖြတ်ထုတ်ရန် နယူးရယ်နက်ဝက်မော်ဒယ်ကို လေ့ကျင့်သင်ကြားမည်ဖြစ်သည်။ + +## ဒေတာစုစည်းမှု + +ကျွန်ုပ်တို့သည် Kaggle မှ [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ကို အသုံးပြုမည်ဖြစ်သည်။ Kaggle မှ ဒေတာကို ကိုယ်တိုင်ဒေါင်းလုဒ်ဆွဲပါ။ + +## စတင်ရန် Notebook + +[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/my/lessons/4-ComputerVision/README.md b/translations/my/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..47a5435e --- /dev/null +++ b/translations/my/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# ကွန်ပျူတာမြင်ကြည့်မှု + +![ကွန်ပျူတာမြင်ကြည့်မှုအကြောင်းအရာကို ရေးဆွဲထားသောပုံ](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.my.png) + +ဤအပိုင်းတွင် ကျွန်ုပ်တို့ သင်ယူမည့်အကြောင်းအရာများမှာ - + +* [ကွန်ပျူတာမြင်ကြည့်မှုနှင့် OpenCV အကြောင်းအကျဉ်း](06-IntroCV/README.md) +* [Convolutional Neural Networks](07-ConvNets/README.md) +* [Pre-trained Networks နှင့် Transfer Learning](08-TransferLearning/README.md) +* [Autoencoders](09-Autoencoders/README.md) +* [Generative Adversarial Networks](10-GANs/README.md) +* [Object Detection](11-ObjectDetection/README.md) +* [Semantic Segmentation](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/my/lessons/5-NLP/13-TextRep/README.md b/translations/my/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..3577c01b --- /dev/null +++ b/translations/my/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# စာသားကို Tensor အဖြစ် ကိုယ်စားပြုခြင်း + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## စာသား အမျိုးအစားခွဲခြားခြင်း + +ဤအပိုင်း၏ ပထမပိုင်းတစ်လျှောက်လုံးတွင် **စာသား အမျိုးအစားခွဲခြားခြင်း** လုပ်ငန်းကို အဓိကထားဆောင်ရွက်မည်ဖြစ်သည်။ ဤအတွက် [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) Dataset ကို အသုံးပြုမည်ဖြစ်ပြီး၊ ၎င်းတွင် အောက်ပါအတိုင်း သတင်းဆောင်းပါးများ ပါဝင်သည်- + +* အမျိုးအစား - Sci/Tech +* ခေါင်းစဉ် - Ky. Company Wins Grant to Study Peptides (AP) +* အကြောင်းအရာ - AP - A company founded by a chemistry researcher at the University of Louisville won a grant to develop... + +ကျွန်ုပ်တို့၏ ရည်မှန်းချက်မှာ စာသားအပေါ်အခြေခံပြီး သတင်းအကြောင်းအရာကို အမျိုးအစားတစ်ခုသို့ ခွဲခြားခြင်းဖြစ်သည်။ + +## စာသားကို ကိုယ်စားပြုခြင်း + +Neural Network များဖြင့် သဘာဝဘာသာစကား အ処理 (NLP) လုပ်ငန်းများကို ဖြေရှင်းလိုပါက၊ စာသားကို Tensor အဖြစ် ကိုယ်စားပြုရန် နည်းလမ်းတစ်ခုလိုအပ်သည်။ ကွန်ပျူတာများသည် ASCII သို့မဟုတ် UTF-8 ကဲ့သို့သော Encoding များကို အသုံးပြု၍ စာသားအက္ခရာများကို နံပါတ်များအဖြစ် ရှိပြီးသားဖြစ်သည်။ + +အက္ခရာတစ်ခုကို ASCII နှင့် binary ကိုယ်စားပြုမှုသို့ mapping ပြုလုပ်ထားသော ပုံ + +> [ပုံရင်းအရင်းအမြစ်](https://www.seobility.net/en/wiki/ASCII) + +လူသားများအနေဖြင့် အက္ခရာတစ်ခုစီ၏ **ကိုယ်စားပြုမှု** ကို နားလည်နိုင်ပြီး၊ အက္ခရာအားလုံးပေါင်းစပ်၍ စာကြောင်းတစ်ကြောင်း၏ စကားလုံးများကို ဖွဲ့စည်းပုံကို နားလည်နိုင်သည်။ သို့သော် ကွန်ပျူတာများသည် ၎င်းကို မသိနိုင်သလို၊ Neural Network သည် သင်ကြားမှုအတွင်း အဓိပ္ပါယ်ကို သင်ယူရမည်ဖြစ်သည်။ + +ထို့ကြောင့် စာသားကို ကိုယ်စားပြုရာတွင် အောက်ပါနည်းလမ်းများကို အသုံးပြုနိုင်သည်- + +* **Character-level ကိုယ်စားပြုမှု** - စာသားကို အက္ခရာတစ်ခုစီကို နံပါတ်တစ်ခုအဖြစ် ကိုယ်စားပြုခြင်း။ စာသား corpus တွင် *C* အက္ခရာများရှိပါက၊ *Hello* စကားလုံးကို 5x*C* Tensor အဖြစ် ကိုယ်စားပြုမည်။ အက္ခရာတစ်ခုစီသည် One-hot encoding တွင် Tensor column တစ်ခုနှင့် ကိုက်ညီမည်။ +* **Word-level ကိုယ်စားပြုမှု** - စာသားရှိ စကားလုံးအားလုံးကို **vocabulary** တစ်ခုအဖြစ် ဖန်တီးပြီး၊ စကားလုံးများကို One-hot encoding ဖြင့် ကိုယ်စားပြုခြင်း။ ဤနည်းလမ်းသည် ပိုမိုကောင်းမွန်သော်လည်း၊ စကားလုံးများ၏ အဓိပ္ပါယ်ကို Neural Network အတွက် လွယ်ကူစေသည်။ သို့သော် Dictionary အရွယ်အစားကြီးမားမှုကြောင့်၊ High-dimensional sparse tensors ကို ကိုင်တွယ်ရမည်။ + +မည်သည့် ကိုယ်စားပြုမှုကိုမဆို စတင်ရန်အတွက် စာသားကို **tokens** အစီအစဉ်တစ်ခုအဖြစ် ပြောင်းလဲရမည်။ Token တစ်ခုသည် အက္ခရာ၊ စကားလုံး သို့မဟုတ် စကားလုံး၏ အစိတ်အပိုင်းတစ်ခုဖြစ်နိုင်သည်။ ထို့နောက် Token ကို **vocabulary** အသုံးပြု၍ နံပါတ်တစ်ခုအဖြစ် ပြောင်းလဲပြီး၊ ၎င်းနံပါတ်ကို Neural Network သို့ One-hot encoding ဖြင့် ထည့်သွင်းနိုင်သည်။ + +## N-Grams + +သဘာဝဘာသာစကားတွင် စကားလုံး၏ အဓိပ္ပါယ်ကို အကြောင်းအရာအပေါ်မူတည်၍သာ သတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့် *neural network* နှင့် *fishing network* ၏ အဓိပ္ပါယ်များမှာ လုံးဝကွဲပြားသည်။ ၎င်းကို ထည့်သွင်းစဉ်းစားရန် နည်းလမ်းတစ်ခုမှာ စကားလုံးနှစ်လုံးစီကို Vocabulary token အဖြစ် သတ်မှတ်ခြင်းဖြစ်သည်။ ဥပမာအားဖြင့် *I like to go fishing* စာကြောင်းကို *I like*, *like to*, *to go*, *go fishing* အဖြစ် Tokens အဖြစ် ကိုယ်စားပြုမည်။ သို့သော် Dictionary အရွယ်အစားကြီးမားလာပြီး၊ *go fishing* နှင့် *go shopping* ကဲ့သို့သော စကားလုံးပေါင်းစပ်မှုများသည် Semantic ဆက်စပ်မှုမရှိသော်လည်း ကွဲပြားသော Tokens အဖြစ် သတ်မှတ်မည်။ + +တစ်ခါတစ်ရံတွင် Tri-grams (စကားလုံးသုံးလုံးပေါင်းစပ်မှု) ကိုလည်း အသုံးပြုနိုင်သည်။ ထို့ကြောင့် ဤနည်းလမ်းကို **n-grams** ဟု ခေါ်သည်။ Character-level ကိုယ်စားပြုမှုတွင်လည်း N-grams ကို အသုံးပြုနိုင်ပြီး၊ ၎င်းသည် အများအားဖြင့် သရစဉ်များနှင့် ကိုက်ညီသည်။ + +## Bag-of-Words နှင့် TF/IDF + +စာသား အမျိုးအစားခွဲခြားခြင်းကဲ့သို့သော လုပ်ငန်းများကို ဖြေရှင်းရာတွင်၊ စာသားကို တစ်ခုတည်းသော အရွယ်အစားရှိ Vector အဖြစ် ကိုယ်စားပြုနိုင်ရမည်။ ၎င်းကို နောက်ဆုံး Dense Classifier သို့ ထည့်သွင်းမည်ဖြစ်သည်။ အလွယ်ဆုံးနည်းလမ်းတစ်ခုမှာ စကားလုံးတစ်ခုစီ၏ ကိုယ်စားပြုမှုအားလုံးကို ပေါင်းစည်းခြင်းဖြစ်သည်။ စကားလုံးတစ်ခုစီ၏ One-hot encoding ကို ပေါင်းစည်းပါက၊ စကားလုံးတစ်ခုစီ၏ Frequency ကို ပြသသော Vector တစ်ခုရရှိမည်။ ဤကိုယ်စားပြုမှုကို **Bag of Words** (BoW) ဟု ခေါ်သည်။ + + + +> ပုံရေးသားသူမှ + +BoW သည် စာသားတွင် ဘယ်စကားလုံးများ ပါဝင်ပြီး၊ ၎င်းတို့၏ အရေအတွက်ကို ကိုယ်စားပြုသည်။ ဤနည်းလမ်းသည် စာသား၏ အကြောင်းအရာကို သတ်မှတ်ရန် ကောင်းမွန်သော အညွှန်းတစ်ခုဖြစ်နိုင်သည်။ ဥပမာအားဖြင့် နိုင်ငံရေးသတင်းဆောင်းပါးတွင် *president* နှင့် *country* ကဲ့သို့သော စကားလုံးများ ပါဝင်နိုင်ပြီး၊ သိပ္ပံဆောင်းပါးတွင် *collider*, *discovered* စသည်ဖြင့် ပါဝင်နိုင်သည်။ + +BoW ၏ ပြဿနာမှာ *and*, *is* ကဲ့သို့သော စကားလုံးများသည် စာသားအများစုတွင် ပါဝင်ပြီး၊ အမြင့်ဆုံး Frequency ရှိသဖြင့် အရေးပါသော စကားလုံးများကို ဖုံးကွယ်သွားနိုင်သည်။ ၎င်းစကားလုံးများ၏ အရေးပါမှုကို လျော့ချရန် စာတမ်းစုစုပေါင်းတွင် စကားလုံးများ ပေါ်ပေါက်မှု Frequency ကို ထည့်သွင်းစဉ်းစားရမည်။ ဤနည်းလမ်းကို TF/IDF ဟု ခေါ်ပြီး၊ ဤသင်ခန်းစာတွင် ပါဝင်သော Notebook များတွင် အသေးစိတ်ဖော်ပြထားသည်။ + +သို့သော် ဤနည်းလမ်းများသည် စာသား၏ **အဓိပ္ပါယ်** ကို အပြည့်အဝ ကိုယ်စားပြုနိုင်ခြင်းမရှိပါ။ ၎င်းကို Neural Network မော်ဒယ်များဖြင့်သာ ပြုလုပ်နိုင်ပြီး၊ ၎င်းကို ကျွန်ုပ်တို့သည် နောက်ပိုင်းတွင် ဆွေးနွေးမည်ဖြစ်သည်။ + +## ✍️ လေ့ကျင့်မှုများ - စာသားကို ကိုယ်စားပြုခြင်း + +အောက်ပါ Notebook များတွင် သင်ကြားမှုကို ဆက်လက်လုပ်ဆောင်ပါ- + +* [Text Representation with PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Text Representation with TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## အနှိပ်ချုပ် + +ယခုအချိန်ထိ ကျွန်ုပ်တို့သည် စကားလုံးများကို Frequency အလေးချိန် ပေးနိုင်သော နည်းလမ်းများကို လေ့လာခဲ့ပါသည်။ သို့သော် ၎င်းတို့သည် အဓိပ္ပါယ် သို့မဟုတ် အစီအစဉ်ကို ကိုယ်စားပြုနိုင်ခြင်းမရှိပါ။ 1935 ခုနှစ်တွင် နာမည်ကြီး ဘာသာဗေဒပညာရှင် J. R. Firth က "စကားလုံး၏ အဓိပ္ပါယ်သည် အမြဲတမ်း အကြောင်းအရာနှင့် ဆက်စပ်ပြီး၊ အကြောင်းအရာမှ ကင်းလွတ်သော အဓိပ္ပါယ်ကို လေ့လာခြင်းသည် အလေးထားစဉ်းစားရန် မဖြစ်နိုင်ပါ" ဟု ဆိုခဲ့သည်။ ကျွန်ုပ်တို့သည် နောက်ပိုင်းသင်ခန်းစာများတွင် စာသားမှ အကြောင်းအရာဆိုင်ရာ အချက်အလက်များကို Language Modeling အသုံးပြု၍ ဖမ်းယူနည်းကို လေ့လာမည်ဖြစ်သည်။ + +## 🚀 စိန်ခေါ်မှု + +Bag-of-Words နှင့် အခြား Data Model များကို အသုံးပြု၍ အခြားသော လေ့ကျင့်မှုများကို စမ်းသပ်ကြည့်ပါ။ ဤ [Kaggle ပြိုင်ပွဲ](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) မှ အကြံဉာဏ်ရနိုင်ပါသည်။ + +## [Post-lecture quiz](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) တွင် စာသား Embedding နှင့် Bag-of-Words နည်းလမ်းများကို လေ့ကျင့်ပါ။ + +## [Assignment: Notebooks](assignment.md) + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/13-TextRep/assignment.md b/translations/my/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..a99d0fbe --- /dev/null +++ b/translations/my/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# အလုပ်တာဝန်: Notebooks + +ဒီသင်ခန်းစာနဲ့ဆက်စပ်နေတဲ့ notebooks (PyTorch version ဒါမှမဟုတ် TensorFlow version) တွေကို သင့်ရဲ့ကိုယ်ပိုင်ဒေတာစနစ်နဲ့ ပြန်လည်အသုံးပြုပါ၊ ဥပမာ Kaggle ကနေရရှိတဲ့ ဒေတာတစ်ခုကို Attribution နဲ့အတူ အသုံးပြုနိုင်ပါတယ်။ သင့်ရဲ့ကိုယ်ပိုင် ရှာဖွေတွေ့ရှိချက်တွေကို အထောက်အထားပြဖို့ notebook ကို ပြန်ရေးဆွဲပါ။ အံ့သြဖွယ်ဖြစ်နိုင်တဲ့ ဒေတာစနစ်တွေကို စမ်းသပ်ကြည့်ပါ၊ ဥပမာ [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/my/lessons/5-NLP/14-Embeddings/README.md b/translations/my/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..aef19775 --- /dev/null +++ b/translations/my/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Embeddings + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +BoW သို့မဟုတ် TF/IDF အခြေခံထားသော classifier များကို သင်ကြားသင့်သောအခါတွင် `vocab_size` အရှည်ရှိသော အမြင့် dimension bag-of-words vectors များကို အသုံးပြုခဲ့ပြီး၊ အနိမ့် dimension positional representation vectors များမှ sparse one-hot representation သို့ အတိအကျပြောင်းလဲခဲ့သည်။ သို့သော် one-hot representation သည် memory ကို ထိရောက်စွာ အသုံးမပြုနိုင်ပါ။ ထို့အပြင်၊ စကားလုံးတစ်လုံးချင်းစီကို တစ်ခုချင်းစီ သီးခြားစီဆက်ဆံသည်၊ ဤအနေအထားတွင် one-hot encoded vectors များသည် စကားလုံးများအကြား semantic ဆက်စပ်မှုကို မဖော်ပြနိုင်ပါ။ + +**Embedding** ဆိုသည်မှာ စကားလုံးများကို အနိမ့် dimension dense vectors များဖြင့် ကိုယ်စားပြုရန်အယူအဆဖြစ်ပြီး၊ စကားလုံးတစ်လုံး၏ semantic အဓိပ္ပါယ်ကို တစ်နည်းနည်းဖြင့် ရှင်းလင်းဖော်ပြသည်။ စကားလုံး embedding များကို ဘယ်လိုဖန်တီးရမည်ကို နောက်ပိုင်းတွင် ဆွေးနွေးမည်ဖြစ်သော်လည်း၊ ယခုအချိန်တွင် embedding များကို စကားလုံး vector ၏ dimension ကို လျှော့ချရန် နည်းလမ်းတစ်ခုအဖြစ်သာ စဉ်းစားပါ။ + +ထို့ကြောင့် embedding layer သည် စကားလုံးတစ်လုံးကို input အဖြစ်ယူပြီး၊ သတ်မှတ်ထားသော `embedding_size` output vector ကို ထုတ်ပေးမည်ဖြစ်သည်။ တစ်နည်းအားဖြင့်၊ ၎င်းသည် `Linear` layer နှင့် အလွန်ဆင်တူသည်၊ သို့သော် one-hot encoded vector ကို မယူဘဲ၊ စကားလုံးနံပါတ်ကို input အဖြစ်ယူနိုင်မည်ဖြစ်ပြီး၊ အကြီးမားသော one-hot-encoded vectors များ ဖန်တီးရန် မလိုအပ်တော့ပါ။ + +Classifier network ၏ ပထမဆုံး layer အဖြစ် embedding layer ကို အသုံးပြုခြင်းဖြင့်၊ bag-of-words မှ **embedding bag** မော်ဒယ်သို့ ပြောင်းလဲနိုင်ပြီး၊ ကျွန်ုပ်တို့၏ စာသားအတွင်းရှိ စကားလုံးတစ်လုံးချင်းစီကို သက်ဆိုင်ရာ embedding သို့ ပထမဆုံး ပြောင်းလဲပြီး၊ ထို့နောက် `sum`၊ `average` သို့မဟုတ် `max` ကဲ့သို့သော aggregate function တစ်ခုကို အဲဒီ embedding များအားလုံးအပေါ်တွင် တွက်ချက်နိုင်သည်။ + +![Image showing an embedding classifier for five sequence words.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.my.png) + +> ပုံကို စာရေးသူမှ ဖန်တီးသည် + +## ✍️ လေ့ကျင့်မှုများ: Embeddings + +အောက်ပါ notebooks များတွင် သင့်လေ့လာမှုကို ဆက်လက်လုပ်ဆောင်ပါ: +* [Embeddings with PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Embeddings TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Semantic Embeddings: Word2Vec + +Embedding layer သည် စကားလုံးများကို vector representation သို့ map လုပ်ရန် သင်ကြားခဲ့သော်လည်း၊ ၎င်း representation သည် အဓိပ္ပါယ်ဆိုင်ရာ အနက်အဓိပ္ပါယ်များကို မရှိမဖြစ် ဖော်ပြထားသည်မဟုတ်ပါ။ စကားလုံးများနှင့် အနီးကပ်ဆက်စပ်မှုရှိသော vector distance (ဥပမာ Euclidean distance) အရ၊ ဆင်တူသော စကားလုံးများ သို့မဟုတ် အဓိပ္ပါယ်တူများကို နီးကပ်သော vectors အဖြစ် ကိုယ်စားပြုနိုင်မည့် vector representation ကို သင်ကြားနိုင်ရမည်ဖြစ်သည်။ + +ဤအတွက်၊ စကားလုံး embedding မော်ဒယ်ကို စာသားအစုကြီးတစ်ခုအပေါ်တွင် သီးခြားနည်းလမ်းဖြင့် pre-train လုပ်ရန် လိုအပ်သည်။ Semantic embeddings များကို သင်ကြားရန် နည်းလမ်းတစ်ခုမှာ [Word2Vec](https://en.wikipedia.org/wiki/Word2vec) ဟုခေါ်သည်။ ၎င်းသည် စကားလုံးများ၏ distributed representation ကို ထုတ်လုပ်ရန် အသုံးပြုသော အဓိက architecture နှစ်ခုအပေါ် အခြေခံသည်။ + + - **Continuous bag-of-words** (CBoW) — ဤ architecture တွင်၊ မော်ဒယ်ကို context ပတ်ဝန်းကျင်မှ စကားလုံးကို ခန့်မှန်းရန် သင်ကြားသည်။ 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 ၏ ဆန့်ကျင်ဘက်ဖြစ်သည်။ မော်ဒယ်သည် context စကားလုံးများ၏ window ကို အသုံးပြု၍ လက်ရှိစကားလုံးကို ခန့်မှန်းသည်။ + +CBoW သည် ပိုမြန်သော်လည်း၊ skip-gram သည် ပိုနှေးပြီး၊ မကြာခဏမတွေ့သော စကားလုံးများကို ကိုယ်စားပြုရာတွင် ပိုကောင်းသည်။ + +![Image showing both CBoW and Skip-Gram algorithms to convert words to vectors.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.my.png) + +> ပုံကို [ဤစာတမ်း](https://arxiv.org/pdf/1301.3781.pdf) မှ ယူဆောင်သည် + +Word2Vec pre-trained embeddings (GloVe ကဲ့သို့သော အခြားမော်ဒယ်များနှင့်အတူ) ကို neural networks တွင် embedding layer အဖြစ် အသုံးပြုနိုင်သည်။ သို့သော် vocabularies ကို စီမံခန့်ခွဲရန် လိုအပ်သည်၊ အကြောင်းမှာ Word2Vec/GloVe ကို pre-train လုပ်ရန် အသုံးပြုသော vocabulary သည် ကျွန်ုပ်တို့၏ စာသား corpus ၏ vocabulary နှင့် မတူနိုင်ပါ။ ဤပြဿနာကို ဘယ်လိုဖြေရှင်းရမည်ကို အထက်ပါ Notebooks များတွင် ကြည့်ရှုပါ။ + +## Contextual Embeddings + +Word2Vec ကဲ့သို့သော traditional pretrained embedding representations ၏ အဓိက ကန့်သတ်ချက်တစ်ခုမှာ စကားလုံးအဓိပ္ပါယ်များကို ရှင်းလင်းစွာ ခွဲခြားနိုင်မှု၏ ပြဿနာဖြစ်သည်။ Pretrained embeddings များသည် စကားလုံးများ၏ အဓိပ္ပါယ်ကို context အတွင်း ဖမ်းယူနိုင်သော်လည်း၊ စကားလုံးတစ်လုံး၏ အဓိပ္ပါယ်အားလုံးကို တစ်ခုတည်းသော embedding အတွင်း encode လုပ်ထားသည်။ ၎င်းသည် downstream မော်ဒယ်များတွင် ပြဿနာများ ဖြစ်စေနိုင်သည်၊ အကြောင်းမှာ စကားလုံးများ (ဥပမာ 'play') သည် အသုံးပြုသော context အပေါ်မူတည်၍ အဓိပ္ပါယ်ကွဲပြားမှုများ ရှိနိုင်သည်။ + +ဥပမာအားဖြင့် 'play' စကားလုံးသည် အောက်ပါ စာကြောင်းနှစ်ခုတွင် အဓိပ္ပါယ်ကွဲပြားမှုများ ရှိသည်- + +- I went to a **play** at the theatre. +- John wants to **play** with his friends. + +အထက်ပါ pretrained embeddings များသည် 'play' စကားလုံး၏ အဓိပ္ပါယ်နှစ်ခုလုံးကို တစ်ခုတည်းသော embedding အတွင်း ကိုယ်စားပြုထားသည်။ ဤကန့်သတ်ချက်ကို ကျော်လွှားရန်၊ စကားလုံးများကို အခြား context များတွင် ဘယ်လိုပေါင်းစပ်နိုင်သည်ကို *သိသော* **language model** အပေါ် အခြေခံထားသော embeddings များကို ဖန်တီးရန် လိုအပ်သည်။ Contextual embeddings များကို ဆွေးနွေးခြင်းသည် ဤသင်ခန်းစာ၏ အကျုံးအတွင်းမရှိသော်လည်း၊ သင်ခန်းစာ၏ နောက်ပိုင်းတွင် language models များကို ဆွေးနွေးသောအခါ ပြန်လည်ဆွေးနွေးမည်ဖြစ်သည်။ + +## အနှိပ်ချုပ် + +ဤသင်ခန်းစာတွင်၊ TensorFlow နှင့် Pytorch တွင် embedding layers များကို ဖန်တီးခြင်းနှင့် အသုံးပြုခြင်းဖြင့် စကားလုံးများ၏ semantic အဓိပ္ပါယ်များကို ပိုမိုကောင်းမွန်စွာ ဖော်ပြနိုင်သည်ကို ရှာဖွေတွေ့ရှိခဲ့သည်။ + +## 🚀 စိန်ခေါ်မှု + +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 မှ ရရှိနိုင်သော သင့်ကိုယ်ပိုင် စာသား corpus အပေါ်တွင် ဤနည်းလမ်းများကို လက်တွေ့အသုံးပြုကြည့်ပါ။ + +## [Post-lecture quiz](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: Notebooks](assignment.md) + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/14-Embeddings/assignment.md b/translations/my/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..d386b54c --- /dev/null +++ b/translations/my/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# အလုပ်အမိန့်: နိုတ်ဘွတ်များ + +ဒီသင်ခန်းစာနှင့်ဆက်စပ်နေသော နိုတ်ဘွတ်များ (PyTorch version သို့မဟုတ် TensorFlow version) ကို သင့်ရဲ့ dataset ကို အသုံးပြုပြီး ပြန်လည်ရိုက်ပါ။ Kaggle က dataset တစ်ခုကို attribution ဖြင့် အသုံးပြုနိုင်ပါတယ်။ သင့်ရဲ့ ရလဒ်များကို အထောက်အထားပြရန် နိုတ်ဘွတ်ကို ပြန်ရေးပါ။ အခြား dataset အမျိုးအစားတစ်ခုကို စမ်းသပ်ပြီး သင့်ရဲ့ ရလဒ်များကို documentation ဖြင့် ဖော်ပြပါ။ ဥပမာ [ဒီ 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/my/lessons/5-NLP/15-LanguageModeling/README.md b/translations/my/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..50502713 --- /dev/null +++ b/translations/my/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# ဘာသာစကား မော်ဒယ်ဖွဲ့စည်းခြင်း + +Semantic embeddings (ဥပမာ - Word2Vec နှင့် GloVe) ဆိုသည်မှာ **ဘာသာစကား မော်ဒယ်ဖွဲ့စည်းခြင်း** (language modeling) သို့ ရောက်ရှိရန် ပထမအဆင့်ဖြစ်သည်။ ၎င်းသည် ဘာသာစကား၏ သဘာဝကို *နားလည်* (သို့မဟုတ် *တင်ပြ*) နိုင်သော မော်ဒယ်များ ဖန်တီးရန် ရည်ရွယ်သည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +ဘာသာစကား မော်ဒယ်ဖွဲ့စည်းခြင်း၏ အဓိက အကြောင်းအရာမှာ အမှတ်အသားမပါသော ဒေတာများကို unsupervised နည်းလမ်းဖြင့် လေ့ကျင့်ခြင်းဖြစ်သည်။ ၎င်းသည် အရေးကြီးသည်မှာ အမှတ်အသားမပါသော စာသားများမှာ အလွန်များပြားစွာ ရရှိနိုင်သော်လည်း အမှတ်အသားပါသော စာသားများမှာ အမှတ်အသားပေးရန် လိုအပ်သော ကြိုးစားမှုကြောင့် အကန့်အသတ်ရှိလိမ့်မည်ဖြစ်သည်။ အများအားဖြင့်, စာသားအတွင်း **ပျောက်နေသော စကားလုံးများကို ခန့်မှန်းနိုင်သော** ဘာသာစကား မော်ဒယ်များကို ဖန်တီးနိုင်သည်။ ၎င်းသည် စာသားအတွင်းရှိ စကားလုံးတစ်လုံးကို မည်သည့်အချိန်မဆို ဖျောက်ထားပြီး ၎င်းကို လေ့ကျင့်မှု နမူနာအဖြစ် အသုံးပြုနိုင်သောကြောင့် လွယ်ကူသည်။ + +## Embeddings များကို လေ့ကျင့်ခြင်း + +ယခင် ဥပမာများတွင်, pre-trained semantic embeddings များကို အသုံးပြုခဲ့သည်။ သို့သော်, ၎င်းတို့ကို မည်သို့ လေ့ကျင့်နိုင်သည်ကို ကြည့်ရှုခြင်းမှာ စိတ်ဝင်စားဖွယ် ဖြစ်သည်။ အောက်ပါ အကြံဉာဏ်အချို့ကို အသုံးပြုနိုင်သည် - + +* **N-Gram** ဘာသာစကား မော်ဒယ်ဖွဲ့စည်းခြင်း - N-gram အရ, ယခင် N စကားလုံးများကို ကြည့်ပြီး token တစ်ခုကို ခန့်မှန်းခြင်း။ +* **Continuous Bag-of-Words** (CBoW) - စကားလုံးအစုအနယ် $W_{-N}$, ..., $W_N$ အတွင်းမှ အလယ်တန်း token $W_0$ ကို ခန့်မှန်းခြင်း။ +* **Skip-gram** - အလယ်တန်း token $W_0$ မှ စတင်ကာ အနီးအနားရှိ စကားလုံးများ {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} ကို ခန့်မှန်းခြင်း။ + +![စကားလုံးများကို ဗက်တာများသို့ ပြောင်းလဲခြင်းအတွက် algorithm များ](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.my.png) + +> [ဤစာတမ်း](https://arxiv.org/pdf/1301.3781.pdf) မှ ရယူထားသော ပုံ။ + +## ✍️ နမူနာ Notebooks: CBoW မော်ဒယ်ကို လေ့ကျင့်ခြင်း + +အောက်ပါ notebooks များတွင် သင့်လေ့လာမှုကို ဆက်လက်လုပ်ဆောင်ပါ - + +* [TensorFlow ဖြင့် CBoW Word2Vec ကို လေ့ကျင့်ခြင်း](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [PyTorch ဖြင့် CBoW Word2Vec ကို လေ့ကျင့်ခြင်း](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## နိဂုံးချုပ် + +ယခင် သင်ခန်းစာတွင်, စကားလုံး embeddings များသည် မျက်လှည့်ကဲ့သို့ အလုပ်လုပ်သည်ကို မြင်ခဲ့ပါသည်။ ယခု, စကားလုံး embeddings များကို လေ့ကျင့်ခြင်းသည် အလွန်ရှုပ်ထွေးသော အလုပ်မဟုတ်ကြောင်း သိရှိပြီး, လိုအပ်ပါက domain-specific စာသားများအတွက် ကိုယ်ပိုင် စကားလုံး embeddings များကို လေ့ကျင့်နိုင်မည်ဖြစ်သည်။ + +## [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** framework ကို အသုံးပြု၍ အများဆုံး အသုံးပြုသော embeddings များကို အချို့သော ကုဒ်လိုင်းများဖြင့် လေ့ကျင့်ခြင်းကို [ဤစာတမ်း](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html) တွင် ဖော်ပြထားသည်။ + +## 🚀 [တာဝန်: Skip-Gram မော်ဒယ်ကို လေ့ကျင့်ပါ](lab/README.md) + +ဤသင်ခန်းစာမှ ကုဒ်ကို ပြင်ဆင်ပြီး Skip-Gram မော်ဒယ်ကို လေ့ကျင့်ရန် စိန်ခေါ်မှုကို lab တွင် ပြုလုပ်ပါ။ [အသေးစိတ်ဖတ်ရှုရန်](lab/README.md) + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာရှိသောအရင်းအမြစ်အဖြစ် ရှုလေ့လာသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/my/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..c06f0ef1 --- /dev/null +++ b/translations/my/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) မှ လက်တွေ့လေ့ကျင့်ရေးအလုပ်များ။ + +## တာဝန် + +ဒီလက်တွေ့လေ့ကျင့်ရေးမှာ Word2Vec မော်ဒယ်ကို Skip-Gram နည်းလမ်းကို အသုံးပြုပြီး လေ့ကျင့်ရန် စိန်ခေါ်ပါသည်။ $N$-tokens-အကျယ်ရှိသော Skip-Gram window အတွင်း အနီးအနားရှိ စကားလုံးများကို ခန့်မှန်းရန် embedding ပါသော network ကို လေ့ကျင့်ပါ။ [ဒီသင်ခန်းစာမှ ကုဒ်](../../../../../../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)) (Lewis Carroll ရေးသားသည်) ကို ဒီနေရာတွင် ရနိုင်ပါသည်။ သို့မဟုတ်, Shakespeare ၏ ပြဇာတ်များကို အောက်ပါကုဒ်ကို အသုံးပြု၍ ရယူနိုင်ပါသည်- + +```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') +``` + +## စမ်းသပ်ပါ! + +အချိန်ရှိပြီး အကြောင်းအရာကို နက်ရှိုင်းစွာ လေ့လာလိုပါက အောက်ပါအရာများကို စမ်းသပ်ကြည့်ပါ- + +* Embedding အရွယ်အစားက ရလဒ်ကို ဘယ်လို သက်ရောက်မှုရှိသလဲ? +* စာသားပုံစံအမျိုးမျိုးက ရလဒ်ကို ဘယ်လို သက်ရောက်မှုရှိသလဲ? +* အလွန်ကွဲပြားသော စကားလုံးအမျိုးအစားများနှင့် ၎င်းတို့၏ အနီးစပ်ဆုံး စကားလုံးများကို ရွေးချယ်ပြီး, ၎င်းတို့၏ ဗက်တာကိုယ်စားပြုမှုများကို ရယူပါ။ PCA ကို အသုံးပြု၍ အတိုင်းအတာကို ၂ အတိုင်းအတာသို့ လျှော့ချပြီး, 2D နေရာတွင် ပုံဖော်ပါ။ မည်သည့် ပုံစံများကို မြင်ရသလဲ? + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွဲအချော်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/16-RNN/README.md b/translations/my/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..2cca8ae4 --- /dev/null +++ b/translations/my/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,97 @@ + +# ပြန်လည်ထပ်မံလုပ်ဆောင်သော နယူးရယ်နက်ဝက်များ + +## [မစခင် စစ်ဆေးမေးခွန်း](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +ယခင်ပိုင်းတွင် ကျွန်ုပ်တို့သည် စာသားများ၏ အဓိပ္ပာယ်ကို ဖော်ပြနိုင်သော အထူးသက်ရောက်မှုရှိသော ကိုယ်စားပြုမှုများနှင့် အထက်တွင် ရိုးရှင်းသော လိုင်းနီယာ ခွဲခြားစနစ်ကို အသုံးပြုခဲ့ပါသည်။ ဤစနစ်သည် စာကြောင်းတစ်ကြောင်းအတွင်းရှိ စကားလုံးများ၏ စုပေါင်းအဓိပ္ပာယ်ကို ဖမ်းယူနိုင်သော်လည်း စကားလုံးများ၏ **အစီအစဉ်** ကို မထည့်သွင်းစဉ်းစားပါ၊ အကြောင်းမှာ ကိုယ်စားပြုမှုများအပေါ် စုပေါင်းလုပ်ဆောင်မှုသည် မူလစာသားမှ ဤအချက်အလက်ကို ဖယ်ရှားလိုက်သောကြောင့် ဖြစ်သည်။ ထို့ကြောင့် ဤမော်ဒယ်များသည် စကားလုံးအစီအစဉ်ကို မဖော်ပြနိုင်သဖြင့် စာသားထုတ်လုပ်ခြင်း သို့မဟုတ် မေးခွန်းဖြေဆိုခြင်းကဲ့သို့သော ရှုပ်ထွေးသော အလုပ်များကို မဖြေရှင်းနိုင်ပါ။ + +စာသားအစီအစဉ်၏ အဓိပ္ပာယ်ကို ဖမ်းယူရန် ကျွန်ုပ်တို့သည် **ပြန်လည်ထပ်မံလုပ်ဆောင်သော နယူးရယ်နက်ဝက်** (Recurrent Neural Network) ဟုခေါ်သော နောက်ထပ် နယူးရယ်နက်ဝက် စနစ်ကို အသုံးပြုရမည်ဖြစ်သည်။ RNN တွင် ကျွန်ုပ်တို့၏ စာကြောင်းကို နက်ဝက်မှတစ်ဆင့် သင်္ကေတတစ်ခုစီဖြင့် ဖြတ်သွားပြီး နက်ဝက်သည် **အခြေအနေ** တစ်ခုကို ထုတ်လုပ်သည်၊ ထို့နောက် နောက်ထပ် သင်္ကေတနှင့်အတူ ထိုအခြေအနေကို နက်ဝက်ထဲသို့ ပြန်လည်ထည့်သွင်းသည်။ + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.my.png) + +> ပုံ - စာရေးသူမှ + +အထက်ပါအတိုင်း အထောက်အထားအဖြစ် X0,...,Xn သင်္ကေတများ၏ အစီအစဉ်ကို ပေးထားပါက RNN သည် နယူးရယ်နက်ဝက် ဘလော့များ၏ အစီအစဉ်ကို ဖန်တီးပြီး backpropagation ဖြင့် အဆုံးမှ အစအထိ သင်ကြားပေးသည်။ နက်ဝက်ဘလော့တစ်ခုစီသည် (Xi,Si) ကို အထောက်အထားအဖြစ်ယူပြီး Si+1 ကို ရလဒ်အဖြစ် ထုတ်ပေးသည်။ နောက်ဆုံးအခြေအနေ Sn သို့မဟုတ် (ထွက်ရလဒ် Yn) ကို လိုင်းနီယာ ခွဲခြားစနစ်ထဲသို့ ထည့်သွင်းပြီး ရလဒ်ကို ထုတ်ပေးသည်။ နက်ဝက်ဘလော့များအားလုံးသည် တူညီသော အလေးချိန်များကို မျှဝေထားပြီး backpropagation တစ်ကြိမ်ဖြင့် အဆုံးမှ အစအထိ သင်ကြားပေးသည်။ + +အခြေအနေဗက်တာများ S0,...,Sn ကို နက်ဝက်မှတစ်ဆင့် ဖြတ်သွားသောကြောင့် စကားလုံးများအကြား အစီအစဉ်ဆိုင်ရာ အချင်းချင်းပေါ်မူတည်မှုများကို သင်ယူနိုင်သည်။ ဥပမာအားဖြင့် *not* စကားလုံးသည် အစီအစဉ်တစ်ခုတွင် တစ်နေရာရာတွင် ပေါ်လာသောအခါ၊ အခြေအနေဗက်တာအတွင်းရှိ အချို့သော အချက်အလက်များကို ငြင်းဆိုရန် သင်ယူနိုင်သည်။ + +> ✅ အထက်ပါပုံတွင် RNN ဘလော့အားလုံး၏ အလေးချိန်များသည် မျှဝေထားသောကြောင့် ပုံတစ်ခုကို တစ်ခုတည်းသော ဘလော့ (ညာဘက်တွင်) အဖြစ် ကိုယ်စားပြုနိုင်ပြီး နက်ဝက်၏ ထွက်အခြေအနေကို နက်ဝက်ထဲသို့ ပြန်လည်ထည့်သွင်းသည့် ပြန်လည်တုံ့ပြန်မှု လှိမ့်ကြိုးဖြင့် ဖော်ပြနိုင်သည်။ + +## RNN ဆဲလ်၏ ဖွဲ့စည်းပုံ + +ရိုးရှင်းသော RNN ဆဲလ်တစ်ခုသည် အခြေအနေ Si-1 နှင့် လက်ရှိသင်္ကေတ Xi ကို အထောက်အထားအဖြစ် လက်ခံပြီး ထွက်အခြေအနေ Si (တစ်ခါတစ်ရံတွင် ထွက်ရလဒ် Yi ကိုလည်း စိတ်ဝင်စားနိုင်သည်၊ ဥပမာအားဖြင့် ထုတ်လုပ်မှုနက်ဝက်များတွင်) ကို ထုတ်ပေးရမည်ဖြစ်သည်။ + +ရိုးရှင်းသော RNN ဆဲလ်တွင် အတွင်းပိုင်းတွင် အလေးချိန် မက်ထရစ်နှစ်ခုပါရှိသည် - တစ်ခုသည် အထောက်အထားသင်္ကေတကို ပြောင်းလဲရန် (W ဟုခေါ်မည်) နှင့် နောက်တစ်ခုသည် အထောက်အထားအခြေအနေကို ပြောင်းလဲရန် (H) ဖြစ်သည်။ ဤအခြေအနေတွင် နက်ဝက်၏ ထွက်ရလဒ်ကို σ(W×Xi+H×Si-1+b) အဖြစ်တွက်ချက်သည်၊ ဤတွင် σ သည် activation function ဖြစ်ပြီး b သည် ထပ်ဆင့် bias ဖြစ်သည်။ + +RNN Cell Anatomy + +> ပုံ - စာရေးသူမှ + +အများအားဖြင့် အထောက်အထားသင်္ကေတများကို RNN ထဲသို့ ဝင်ရောက်မည့်အခါ dimensionality ကို လျှော့ချရန် embedding layer မှတစ်ဆင့် ဖြတ်သွားသည်။ ဤအခြေအနေတွင် အထောက်အထားဗက်တာ၏ dimension ကို *emb_size* ဟုခေါ်ပြီး အခြေအနေဗက်တာကို *hid_size* ဟုခေါ်ပါက W ၏ အရွယ်အစားသည် *emb_size*×*hid_size* ဖြစ်ပြီး H ၏ အရွယ်အစားသည် *hid_size*×*hid_size* ဖြစ်သည်။ + +## Long Short Term Memory (LSTM) + +ရိုးရှင်းသော RNN များ၏ အဓိကပြဿနာတစ်ခုမှာ **vanishing gradients** ပြဿနာဖြစ်သည်။ RNN များသည် backpropagation တစ်ကြိမ်ဖြင့် အဆုံးမှ အစအထိ သင်ကြားသောကြောင့် error ကို နက်ဝက်၏ ပထမဆုံးအလွှာများသို့ ပြန်လည်ပို့ရန် အခက်အခဲရှိပြီး အကွာအဝေးရှိသော သင်္ကေတများအကြား ဆက်နွယ်မှုများကို သင်ယူ၍ မရနိုင်ပါ။ ဤပြဿနာကို ရှောင်ရှားရန် နည်းလမ်းတစ်ခုမှာ **explicit state management** ကို **gates** ဟုခေါ်သော နည်းလမ်းဖြင့် အသုံးပြုခြင်းဖြစ်သည်။ ဤအမျိုးအစားတွင် နာမည်ကြီးသော architecture နှစ်ခုရှိသည် - **Long Short Term Memory** (LSTM) နှင့် **Gated Relay Unit** (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 နှင့် ဆင်တူစီစဉ်ထားသော်လည်း အလွှာတစ်ခုမှ အလွှာတစ်ခုသို့ **state C** နှင့် **hidden vector H** ဟူသော အခြေအနေနှစ်ခုကို ပေးပို့သည်။ Unit တစ်ခုစီတွင် hidden vector Hi ကို input Xi နှင့် ပေါင်းစပ်ပြီး **gates** များမှတစ်ဆင့် state C တွင် ဖြစ်ပေါ်သည့်အရာများကို ထိန်းချုပ်သည်။ Gate တစ်ခုစီသည် sigmoid activation (output [0,1] အတွင်းရှိ) ပါသော နယူးရယ်နက်ဖြစ်ပြီး state vector နှင့် များစွာသော bitwise mask အဖြစ် သတ်မှတ်နိုင်သည်။ + +Gate များမှာ (ပုံတွင် ဘယ်မှညာသို့) - + +* **Forget gate** သည် hidden vector ကိုယူပြီး state C ၏ အချို့သော components ကို မေ့ရန်နှင့် ဖြတ်သွားရန် ဆုံးဖြတ်သည်။ +* **Input gate** သည် input နှင့် hidden vector များမှ အချက်အလက်အချို့ကို state ထဲသို့ ထည့်သွင်းသည်။ +* **Output gate** သည် state ကို linear layer နှင့် *tanh* activation ဖြင့် ပြောင်းလဲပြီး hidden vector Hi ကို အသုံးပြု၍ state အသစ် Ci+1 ကို ထုတ်ပေးသည်။ + +State C ၏ components များကို flag များအဖြစ် သတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့် *Alice* ဟူသော နာမည်ကို စာကြောင်းတွင် တွေ့သောအခါ၊ ထိုနာမည်သည် အမျိုးသမီးကို ကိုယ်စားပြုသည်ဟု သတ်မှတ်ပြီး state တွင် အမျိုးသမီးနာမဝိသေသနရှိကြောင်း flag ကို မြှင့်တင်နိုင်သည်။ + +> ✅ LSTM ၏ အတွင်းပိုင်းကို နားလည်ရန် Christopher Olah ၏ [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) သည် အလွန်ကောင်းမွန်သော အရင်းအမြစ်တစ်ခုဖြစ်သည်။ + +## Bidirectional နှင့် Multilayer RNN များ + +ကျွန်ုပ်တို့သည် အစီအစဉ်၏ အစမှ အဆုံးသို့ တစ်ဦးတည်းသော ဦးတည်ချက်ဖြင့် လည်ပတ်သော RNN များကို ဆွေးနွေးခဲ့ပါသည်။ ၎င်းသည် ကျွန်ုပ်တို့ စာဖတ်ခြင်းနှင့် စကားနားထောင်ခြင်း၏ သဘာဝနှင့် ဆင်တူသောကြောင့် သဘာဝကျသည်။ သို့သော် အများအပြား လက်တွေ့အခြေအနေများတွင် input အစီအစဉ်ကို အလွတ်ရယူနိုင်သောကြောင့် အစီအစဉ်၏ နှစ်ဦးတည်းသော ဦးတည်ချက်များဖြင့် လည်ပတ်သော RNN များကို အသုံးပြုရန် make sense ဖြစ်သည်။ ၎င်းတို့ကို **bidirectional RNNs** ဟုခေါ်သည်။ Bidirectional network ကို ကိုင်တွယ်သောအခါ ဦးတည်ချက်တစ်ခုစီအတွက် hidden state vector နှစ်ခုလိုအပ်မည်ဖြစ်သည်။ + +Recurrent network တစ်ခုသည် အစီအစဉ်အတွင်းရှိ အချို့သော ပုံစံများကို ဖမ်းယူပြီး state vector သို့မဟုတ် output သို့ ပေးပို့နိုင်သည်။ Convolutional network များနှင့်တူပင်၊ ပထမဆုံးအလွှာမှ ထုတ်ယူထားသော အနိမ့်အဆင့်ပုံစံများကို အသုံးပြု၍ အဆင့်မြင့်ပုံစံများကို ဖမ်းယူရန် ပထမအလွှာအပေါ်တွင် နောက်ထပ် recurrent layer တစ်ခုတည်ဆောက်နိုင်သည်။ ၎င်းသည် **multi-layer RNN** ၏ အယူအဆသို့ ဦးတည်စေပြီး ၎င်းသည် recurrent networks နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော networks ဖြင့် ဖွဲ့စည်းထားပြီး ယခင်အလွှာ၏ output ကို နောက်တစ်လွှာ၏ input အဖြစ် ပေးပို့သည်။ + +![Image showing a Multilayer long-short-term-memory- RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.my.jpg) + +*ပုံ - Fernando López ၏ [ဤအံ့သြဖွယ် post](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) မှ* + +## ✍️ လေ့ကျင့်မှုများ: Embeddings + +အောက်ပါ notebooks များတွင် သင်ကြားမှုကို ဆက်လက်လုပ်ဆောင်ပါ - + +* [RNNs with PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs with TensorFlow](../../../../../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/) + +## [အလုပ်ပေးစာ: Notebooks](assignment.md) + +**ဝက်ဘ်ဆိုက်မှတ်ချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်ကြောင်း သတိပြုပါ။ မူလဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/16-RNN/assignment.md b/translations/my/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..9ec32987 --- /dev/null +++ b/translations/my/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# အလုပ်ပေးချက်: နိုတ်ဘွတ်များ + +ဒီသင်ခန်းစာနှင့်ဆက်စပ်နေသော နိုတ်ဘွတ်များ (PyTorch version သို့မဟုတ် TensorFlow version) ကို သင့်ရဲ့ dataset ကို အသုံးပြုပြီး ပြန်လည်ရိုက်ပါ။ Kaggle မှ dataset တစ်ခုကို attribution ဖြင့် အသုံးပြုနိုင်ပါသည်။ သင့်ရဲ့ ရလဒ်များကို အထောက်အထားပြရန် နိုတ်ဘွတ်ကို ပြန်ရေးပါ။ အခြား dataset အမျိုးအစားတစ်ခုကို စမ်းသပ်ပြီး သင့်ရဲ့ ရလဒ်များကို documentation ဖြင့် မှတ်တမ်းတင်ပါ။ ဥပမာအားဖြင့် [ဒီ Kaggle ပြိုင်ပွဲ dataset (ရာသီဥတုနှင့်ပတ်သက်သော Twitter)](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/my/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/my/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..bbf7fae7 --- /dev/null +++ b/translations/my/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generative networks + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Recurrent Neural Networks (RNNs) နှင့် Long Short Term Memory Cells (LSTMs)၊ Gated Recurrent Units (GRUs) ကဲ့သို့သော gated cell မျိုးကွဲများသည် စကားလုံးများ၏ အစီအစဉ်ကို သင်ယူနိုင်ပြီး အစီအစဉ်အတွင်း နောက်တစ်ခုလာမည့် စကားလုံးကို ခန့်မှန်းပေးနိုင်သောကြောင့် ဘာသာစကားမော်ဒယ်ဖန်တီးရာတွင် အထောက်အကူဖြစ်စေပါသည်။ ၎င်းတို့ကို အသုံးပြု၍ RNNs ကို **ဖန်တီးမှုဆိုင်ရာ အလုပ်များ** (ဥပမာ- ပုံမှန်စာသားဖန်တီးခြင်း၊ စက်ဖြင့်ဘာသာပြန်ခြင်း၊ ပုံအကြောင်းဖော်ပြချက်ရေးခြင်း) အတွက် အသုံးပြုနိုင်ပါသည်။ + +> ✅ သင်ရိုက်နေစဉ် စာသားဖြည့်စွက်မှုကဲ့သို့သော ဖန်တီးမှုဆိုင်ရာ အလုပ်များမှ သင်ရရှိခဲ့သော အကျိုးကျေးဇူးများကို စဉ်းစားကြည့်ပါ။ သင်နှစ်သက်သော အက်ပ်လီကေးရှင်းများတွင် RNNs ကို အသုံးပြုထားမရှိစစ်ဆေးရန် သုတေသနပြုပါ။ + +ယခင်ယူနစ်တွင် ဆွေးနွေးခဲ့သော RNN အဆောက်အအုံတွင် RNN unit တစ်ခုစီသည် နောက်ထပ် hidden state ကို output အဖြစ် ထုတ်ပေးပါသည်။ သို့သော်လည်း RNN unit တစ်ခုစီတွင် ထပ်မံ output တစ်ခု ထည့်သွင်းနိုင်ပြီး ၎င်းသည် **sequence** (မူလ sequence နှင့် အရှည်တူညီသော) ကို ထုတ်ပေးနိုင်ပါသည်။ ထို့အပြင် RNN units များကို အဆင့်တိုင်းတွင် input မလိုအပ်ဘဲ အစအနေအနေအထား vector တစ်ခုသာ လက်ခံပြီး output sequence များကို ထုတ်ပေးနိုင်ပါသည်။ + +ဤအရာသည် အောက်ပါပုံတွင် ဖော်ပြထားသည့် မတူကွဲပြားသော နယူးရယ်အဆောက်အအုံများကို ဖန်တီးနိုင်စေပါသည်- + +![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.my.jpg) + +> ပုံကို [Andrej Karpaty](http://karpathy.github.io/) ၏ [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) ဆိုသော ဘလော့ဂ်မှ ယူဆောင်ထားပါသည်။ + +* **One-to-one** သည် input တစ်ခုနှင့် output တစ်ခုသာရှိသော ရိုးရိုးနယူးရယ်ကွန်ရက်ဖြစ်သည်။ +* **One-to-many** သည် input တန်ဖိုးတစ်ခုကို လက်ခံပြီး output တန်ဖိုးများ၏ အစီအစဉ်တစ်ခုကို ဖန်တီးပေးသော ဖန်တီးမှုဆိုင်ရာ အဆောက်အအုံဖြစ်သည်။ ဥပမာအားဖြင့် **ပုံအကြောင်းဖော်ပြချက်ရေးခြင်း** network ကို သင်ယူလိုပါက ပုံတစ်ပုံကို input အဖြစ်ထည့်သွင်းပြီး CNN မှ hidden state ကို ရယူကာ RNN chain မှ စကားလုံးတစ်လုံးချင်းစီဖြင့် ဖော်ပြချက်ကို ဖန်တီးနိုင်ပါသည်။ +* **Many-to-one** သည် ယခင်ယူနစ်တွင် ဖော်ပြခဲ့သော RNN အဆောက်အအုံများ (ဥပမာ- စာသားအမျိုးအစားခွဲခြားခြင်း) ကို ကိုယ်စားပြုသည်။ +* **Many-to-many** သို့မဟုတ် **sequence-to-sequence** သည် **စက်ဖြင့်ဘာသာပြန်ခြင်း** ကဲ့သို့သော အလုပ်များကို ကိုယ်စားပြုသည်။ ဤတွင် ပထမ RNN သည် input sequence မှ hidden state ကို စုဆောင်းပြီး နောက်ထပ် RNN chain မှ hidden state ကို output sequence အဖြစ် ပြန်လည်ဖော်ထုတ်သည်။ + +ဤယူနစ်တွင် စာသားဖန်တီးရန် အထောက်အကူပြုသော ရိုးရှင်းသော ဖန်တီးမှုမော်ဒယ်များကို အဓိကထားလေ့လာမည်ဖြစ်သည်။ ရိုးရှင်းစွာဖော်ပြရန် character-level tokenization ကို အသုံးပြုမည်ဖြစ်သည်။ + +ဤ RNN ကို စာသားကို အဆင့်ဆင့်ဖန်တီးရန် သင်ကြားမည်ဖြစ်သည်။ အဆင့်တစ်ခုစီတွင် `nchars` အရှည်ရှိသော စာလုံးများ၏ အစီအစဉ်ကို ယူပြီး input character တစ်ခုစီအတွက် နောက်တစ်ခုလာမည့် output character ကို ဖန်တီးရန် network ကို မေးမြန်းမည်ဖြစ်သည်- + +![Image showing an example RNN generation of the word 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.my.png) + +စာသားဖန်တီးရာတွင် (inference အဆင့်တွင်) **prompt** တစ်ခုကို RNN cells မှတဆင့် hidden state ကို ဖန်တီးပြီး ထို state မှ စတင်ဖန်တီးသည်။ စာလုံးတစ်လုံးစီကို အဆင့်ဆင့်ဖန်တီးကာ state နှင့် ဖန်တီးထားသော စာလုံးကို နောက်ထပ် RNN cell သို့ ပေးပို့ပြီး နောက်တစ်လုံးကို ဖန်တီးသည်။ ဤလုပ်ငန်းစဉ်ကို လိုအပ်သလောက် စာလုံးများ ဖန်တီးသည်အထိ ဆက်လက်လုပ်ဆောင်သည်။ + + + +> ပုံကို စာရေးသူမှ ဖန်တီးထားပါသည်။ + +## ✍️ Exercises: Generative Networks + +အောက်ပါ notebooks များတွင် သင်ကြားမှုကို ဆက်လက်လေ့လာပါ- + +* [Generative Networks with PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generative Networks with TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Soft text generation and temperature + +RNN cell တစ်ခုစီ၏ output သည် စာလုံးများ၏ probability distribution ဖြစ်သည်။ generated text တွင် နောက်တစ်လုံးလာမည့် စာလုံးအဖြစ် အမြင့်ဆုံး probability ရှိသော စာလုံးကိုသာ အမြဲရွေးချယ်ပါက စာသားသည် အချို့သော စာလုံးအစီအစဉ်များကို ထပ်ခါထပ်ခါ ပြန်လည်ဖန်တီးသည့် "cycled" ဖြစ်နိုင်ပါသည်။ ဥပမာအားဖြင့်- + +``` +today of the second the company and a second the company ... +``` + +သို့သော် probability distribution ကို ကြည့်ပါက အမြင့်ဆုံး probability ရှိသော စာလုံးနှင့် ဒုတိယမြင့်ဆုံး probability ရှိသော စာလုံးကြားကွာဟချက်သည် များစွာမရှိနိုင်ပါ။ ဥပမာအားဖြင့် '*play*' sequence တွင် နောက်တစ်လုံးလာမည့် စာလုံးသည် space သို့မဟုတ် **e** (ဥပမာ- *player*) ဖြစ်နိုင်ပါသည်။ + +ထို့ကြောင့် အမြင့်ဆုံး probability ရှိသော စာလုံးကိုသာ ရွေးချယ်ခြင်းသည် အမြဲတမ်း "တရားမျှတ" မဖြစ်နိုင်ပါ။ ဒုတိယမြင့်ဆုံး probability ရှိသော စာလုံးကို ရွေးချယ်ခြင်းသည်လည်း အဓိပ္ပာယ်ရှိသော စာသားကို ဖန်တီးနိုင်ပါသည်။ ထို့ကြောင့် network output မှ probability distribution ကို အသုံးပြု၍ စာလုံးများကို **sample** လုပ်ခြင်းသည် ပိုမိုလျှောက်လွှာဖြစ်သည်။ ထို့အပြင် **temperature** ဟုခေါ်သော parameter ကို အသုံးပြု၍ probability distribution ကို ပိုမို random ဖြစ်စေခြင်း (သို့မဟုတ်) အမြင့်ဆုံး probability ရှိသော စာလုံးများကို ပိုမိုရွေးချယ်စေခြင်းတို့ကို ပြုလုပ်နိုင်ပါသည်။ + +ဤ soft text generation ကို အထက်ပါ notebooks များတွင် လေ့လာပါ။ + +## Conclusion + +စာသားဖန်တီးခြင်းသည် ကိုယ်တိုင်အသုံးဝင်နိုင်သော်လည်း RNNs ကို အသုံးပြု၍ အစအနေအနေအထား vector တစ်ခုမှ စာသားဖန်တီးနိုင်စွမ်းသည် အဓိကအားသာချက်ဖြစ်သည်။ ဥပမာအားဖြင့် စာသားဖန်တီးခြင်းကို စက်ဖြင့်ဘာသာပြန်ခြင်း (sequence-to-sequence, ဤတွင် *encoder* မှ state vector ကို အသုံးပြု၍ *decode* ပြုလုပ်သည်) သို့မဟုတ် ပုံ၏ စာသားဖော်ပြချက်ဖန်တီးခြင်း (ဤတွင် feature vector ကို CNN extractor မှ ရယူသည်) အတွက် အသုံးပြုနိုင်ပါသည်။ + +## 🚀 Challenge + +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) ဖြင့် စာသားဖန်တီးခြင်း + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Review & Self Study + +သင့်ရဲ့ အသိပညာကို တိုးချဲ့ရန် အောက်ပါဆောင်းပါးများကို ဖတ်ရှုပါ- + +* Markov Chain, LSTM နှင့် GPT-2 ဖြင့် စာသားဖန်တီးခြင်းအတွက် မတူကွဲပြားသော နည်းလမ်းများ: [blog post](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* [Keras documentation](https://keras.io/examples/generative/lstm_character_level_text_generation/) တွင် စာသားဖန်တီးမှုနမူနာ + +## [Assignment](lab/README.md) + +စာလုံးတစ်လုံးချင်းစီဖြင့် စာသားဖန်တီးပုံကို ကြည့်ရှုခဲ့ပါသည်။ lab တွင် စကားလုံးအဆင့်စာသားဖန်တီးမှုကို လေ့လာပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/my/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..b0aa5383 --- /dev/null +++ b/translations/my/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# RNN များကို အသုံးပြု၍ စကားလုံးအဆင့် စာသားထုတ်လုပ်ခြင်း + +[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/my/lessons/5-NLP/18-Transformers/README.md b/translations/my/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..dccc4cb0 --- /dev/null +++ b/translations/my/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# အာရုံစိုက်မှု Mechanisms နှင့် Transformers + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +NLP နယ်ပယ်တွင် အရေးကြီးဆုံးပြဿနာများထဲမှ တစ်ခုက **စက်ဖြင့်ဘာသာပြန်ခြင်း** ဖြစ်ပြီး၊ Google Translate ကဲ့သို့သော tools များ၏ အခြေခံအလုပ်ဖြစ်သည်။ ဒီအပိုင်းမှာ ကျွန်တော်တို့ **စက်ဖြင့်ဘာသာပြန်ခြင်း** (သို့မဟုတ် **sequence-to-sequence** task) ကို အဓိကထားပြီး လေ့လာပါမည်။ + +RNNs အသုံးပြု၍ sequence-to-sequence ကို **encoder** နှင့် **decoder** ဆိုသော recurrent networks နှစ်ခုဖြင့် အကောင်အထည်ဖော်သည်။ Encoder က input sequence ကို hidden state အဖြစ်သို့ ပြောင်းလဲပြီး၊ Decoder က hidden state ကို ပြန်လည်ဖော်ထုတ်ကာ ဘာသာပြန်ရလဒ်ကို ထုတ်ပေးသည်။ ဒီနည်းလမ်းမှာ အချို့ပြဿနာများရှိသည်- + +* Encoder network ၏ နောက်ဆုံး state က စာကြောင်းအစကို မှတ်မိရန် အခက်အခဲရှိပြီး၊ အရှည်ကြီးသော စာကြောင်းများအတွက် မော်ဒယ်အရည်အသွေးကို ကျဆင်းစေသည်။ +* Sequence ထဲရှိ စကားလုံးအားလုံးသည် ရလဒ်အပေါ် တူညီသော သက်ရောက်မှုရှိသည်။ သို့သော် အမှန်တကယ်မှာ input sequence ထဲရှိ အချို့သော စကားလုံးများသည် အခြားစကားလုံးများထက် output အပေါ် သက်ရောက်မှုပိုရှိသည်။ + +**Attention Mechanisms** သည် RNN ၏ output prediction တစ်ခုစီအပေါ် input vector တစ်ခုစီ၏ context သက်ရောက်မှုကို အလေးပေးနိုင်စေသော နည်းလမ်းတစ်ခုဖြစ်သည်။ ဒီနည်းလမ်းကို input RNN ၏ intermediate states နှင့် output RNN အကြား shortcut များဖန်တီးခြင်းဖြင့် အကောင်အထည်ဖော်သည်။ ထို့ကြောင့် output symbol yt ကို ဖန်တီးသောအခါ input hidden states hi အားလုံးကို အလေးပေး coefficient များ αt,i ဖြင့် ထည့်သွင်းစဉ်းစားမည်။ + +![Image showing an encoder/decoder model with an additive attention layer](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.my.png) + +> Encoder-decoder model with additive attention mechanism in [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), cited from [this blog post](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Attention matrix {αi,j} သည် output sequence ထဲရှိ စကားလုံးတစ်ခုကို ဖန်တီးရာတွင် input စကားလုံးတစ်ခု၏ သက်ရောက်မှုကို ကိုယ်စားပြုသည်။ အောက်တွင် matrix ၏ ဥပမာတစ်ခုကို ဖော်ပြထားသည်- + +![Image showing a sample alignment found by RNNsearch-50, taken from Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.my.png) + +> Figure from [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Attention mechanisms သည် NLP တွင် လက်ရှိ state-of-the-art မော်ဒယ်များ၏ အခြေခံဖြစ်သည်။ သို့သော် attention ကို ထည့်သွင်းခြင်းသည် မော်ဒယ် parameters အရေအတွက်ကို တိုးစေပြီး RNNs တွင် scaling ပြဿနာများကို ဖြစ်စေသည်။ RNNs ၏ key constraint တစ်ခုမှာ recurrent nature ဖြစ်ပြီး training ကို batch နှင့် parallelize လုပ်ရန် အခက်အခဲဖြစ်စေသည်။ Sequence ထဲရှိ element တစ်ခုစီကို အစဉ်လိုက် process လုပ်ရမည်ဖြစ်သောကြောင့် parallelize လုပ်ရန် မလွယ်ကူပါ။ + +![Encoder Decoder with Attention](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figure from [Google's Blog](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Attention mechanisms ကို အသုံးပြုခြင်းနှင့် အထက်ပါ constraint တစ်ခုကြောင့် ယနေ့ကျွန်တော်တို့အသုံးပြုနေသော BERT နှင့် Open-GPT3 ကဲ့သို့သော state-of-the-art Transformer Models များကို ဖန်တီးခဲ့သည်။ + +## Transformer models + +Transformers ၏ အဓိကအယူအဆတစ်ခုမှာ RNNs ၏ sequential nature ကို ရှောင်ရှားပြီး training အတွင်း parallelize လုပ်နိုင်သော မော်ဒယ်တစ်ခုကို ဖန်တီးရန်ဖြစ်သည်။ ဒါကို အောက်ပါအယူအဆနှစ်ခုကို အသုံးပြုခြင်းဖြင့် အကောင်အထည်ဖော်သည်- + +* positional encoding +* RNNs (သို့မဟုတ် CNNs) အစား pattern များကို ဖမ်းဆီးရန် self-attention mechanism ကို အသုံးပြုခြင်း (ထို့ကြောင့် transformers ကို ဖော်ပြသော စာတမ်းကို *[Attention is all you need](https://arxiv.org/abs/1706.03762)* ဟုခေါ်သည်) + +### Positional Encoding/Embedding + +Positional encoding ၏ အယူအဆမှာ အောက်ပါအတိုင်းဖြစ်သည်- +1. RNNs အသုံးပြုသောအခါ token များ၏ relative position ကို steps အရေအတွက်ဖြင့် ကိုယ်စားပြုပြီး၊ ထို့ကြောင့် explicit representation မလိုအပ်ပါ။ +2. သို့သော် attention ကို အသုံးပြုသောအခါ sequence အတွင်း token များ၏ relative positions ကို သိရန်လိုအပ်သည်။ +3. Positional encoding ရရန် token sequence ကို sequence အတွင်း token positions (ဥပမာ- 0,1,...) sequence ဖြင့် ထပ်တိုးပါမည်။ +4. ထို့နောက် token position ကို token embedding vector နှင့် ရောနှောပါမည်။ Position (integer) ကို vector အဖြစ်ပြောင်းရန် အမျိုးမျိုးသောနည်းလမ်းများကို အသုံးပြုနိုင်သည်- + +* Token embedding ကဲ့သို့ trainable embedding ကို အသုံးပြုခြင်း။ ဒီနည်းလမ်းကို ဒီမှာ စဉ်းစားပါမည်။ Token နှင့် position နှစ်ခုစလုံးအပေါ် embedding layers ကို အသုံးပြုကာ၊ အတိုင်းအတာတူညီသော embedding vectors ကို ရရှိပြီး၊ ထို့နောက် vectors နှစ်ခုကို ပေါင်းစပ်ပါမည်။ +* Original paper တွင် အဆိုပါ fixed position encoding function ကို အသုံးပြုခြင်း။ + + + +> Image by the author + +Positional embedding ရလဒ်မှာ original token နှင့် sequence အတွင်း position နှစ်ခုစလုံးကို embed လုပ်ထားသည်။ + +### Multi-Head Self-Attention + +နောက်တစ်ခုမှာ sequence အတွင်း pattern များကို ဖမ်းဆီးရန်လိုအပ်သည်။ Transformers တွင် **self-attention** mechanism ကို အသုံးပြုသည်။ Self-attention သည် input နှင့် output အဖြစ် တူညီသော sequence အပေါ် attention ကို အသုံးပြုခြင်းဖြစ်သည်။ Self-attention ကို အသုံးပြုခြင်းဖြင့် **context** ကို စဉ်းစားနိုင်ပြီး၊ စကားလုံးများအကြား inter-related ဖြစ်မှုကို တွေ့နိုင်သည်။ ဥပမာ- *it* ကဲ့သို့သော coreferences ကို ရည်ညွှန်းသော စကားလုံးများကို တွေ့နိုင်ပြီး၊ context ကိုလည်း စဉ်းစားနိုင်သည်- + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.my.png) + +> Image from the [Google Blog](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Transformers တွင် **Multi-Head Attention** ကို အသုံးပြုကာ network ကို အမျိုးမျိုးသော dependencies (ဥပမာ- long-term vs. short-term word relations, co-reference vs. အခြား) ကို ဖမ်းဆီးနိုင်စွမ်းရှိစေသည်။ + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) တွင် transformer layers ကို အကောင်အထည်ဖော်ခြင်းအပေါ် အသေးစိတ်ဖော်ပြထားသည်။ + +### Encoder-Decoder Attention + +Transformers တွင် attention ကို အောက်ပါနေရာများတွင် အသုံးပြုသည်- + +* Input text အတွင်း pattern များကို self-attention ဖြင့် ဖမ်းဆီးရန် +* Sequence translation ကို ပြုလုပ်ရန် - encoder နှင့် decoder အကြား attention layer ဖြစ်သည်။ + +Encoder-decoder attention သည် RNNs တွင် အသုံးပြုသော attention mechanism နှင့် အလွန်ဆင်တူသည်။ ဒီ animated diagram သည် encoder-decoder attention ၏ အခန်းကဏ္ဍကို ရှင်းပြထားသည်။ + +![Animated GIF showing how the evaluations are performed in transformer models.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Input position တစ်ခုစီကို output position တစ်ခုစီနှင့် လွတ်လပ်စွာ mapping လုပ်နိုင်သောကြောင့် transformers သည် RNNs ထက် parallelize လုပ်နိုင်စွမ်းပိုရှိသည်။ Attention head တစ်ခုစီကို စကားလုံးများအကြား ဆက်နွယ်မှုများကို သင်ယူရန် အသုံးပြုနိုင်ပြီး၊ Natural Language Processing tasks များကို တိုးတက်စေသည်။ + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) သည် *BERT-base* အတွက် 12 layers နှင့် *BERT-large* အတွက် 24 layers ပါဝင်သော အလွန်ကြီးမားသော multi-layer transformer network ဖြစ်သည်။ မော်ဒယ်ကို unsupervised training (sentence အတွင်း masked words ကို ခန့်မှန်းခြင်း) အသုံးပြုကာ WikiPedia နှင့် books ကဲ့သို့သော text data အကြီးအကျယ် corpus အပေါ် pre-trained လုပ်သည်။ Pre-training အတွင်း မော်ဒယ်သည် language understanding အဆင့်များကို သိမ်းဆည်းပြီး၊ အခြား datasets များနှင့် fine-tuning ဖြင့် အသုံးပြုနိုင်သည်။ ဒီ process ကို **transfer learning** ဟုခေါ်သည်။ + +![picture from http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.my.png) + +> Image [source](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exercises: Transformers + +အောက်ပါ notebooks များတွင် သင့်လေ့လာမှုကို ဆက်လက်လုပ်ဆောင်ပါ- + +* [Transformers in PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers in TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Conclusion + +ဒီသင်ခန်းစာတွင် Transformers နှင့် Attention Mechanisms အကြောင်းကို လေ့လာခဲ့ပြီး၊ NLP toolbox အတွက် အရေးကြီးသော tools များဖြစ်သည်။ Transformer architectures များတွင် BERT, DistilBERT, BigBird, OpenGPT3 စသည်တို့ပါဝင်ပြီး၊ fine-tuning လုပ်နိုင်သည်။ [HuggingFace package](https://github.com/huggingface/) သည် PyTorch နှင့် TensorFlow နှစ်ခုစလုံးဖြင့် architectures များ training လုပ်ရန် repository ကို ပေးထားသည်။ + +## 🚀 Challenge + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Review & Self Study + +* [Blog post](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), explaining the classical [Attention is all you need](https://arxiv.org/abs/1706.03762) paper on transformers. +* [A series of blog posts](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) on transformers, explaining the architecture in detail. + +## [Assignment](assignment.md) + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/18-Transformers/assignment.md b/translations/my/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..2aaafb9e --- /dev/null +++ b/translations/my/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# တာဝန်: Transformers + +HuggingFace တွင် Transformers ကို စမ်းသပ်ကြည့်ပါ! သူတို့၏ ဝက်ဘ်ဆိုဒ် https://huggingface.co/docs/transformers/run_scripts တွင် ရရှိနိုင်သော မော်ဒယ်များနှင့် အလုပ်လုပ်ရန် ပံ့ပိုးထားသော စာတမ်းများကို စမ်းသပ်ကြည့်ပါ။ သူတို့၏ ဒေတာစနစ်တစ်ခုကို စမ်းသပ်ပြီး၊ ထို့နောက် သင်၏ သင်ရိုးညွှန်းတစ်ခုမှ သို့မဟုတ် Kaggle မှ သင်၏ကိုယ်ပိုင် ဒေတာစနစ်တစ်ခုကို တင်သွင်းပြီး စိတ်ဝင်စားဖွယ် စာသားများကို ထုတ်လုပ်နိုင်မလား ကြည့်ပါ။ သင်၏ ရလဒ်များနှင့်အတူ notebook တစ်ခု ထုတ်လုပ်ပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/19-NER/README.md b/translations/my/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..e0d0674b --- /dev/null +++ b/translations/my/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# Named Entity Recognition + +ယနေ့အထိ ကျွန်ုပ်တို့သည် အဓိကအားဖြင့် NLP အလုပ်တစ်ခုဖြစ်သည့် အမျိုးအစားသတ်မှတ်ခြင်း (classification) ကိုသာ အာရုံစိုက်ခဲ့ပါသည်။ သို့သော်၊ နယူးရယ်နက်ဝက် (neural networks) များကို အသုံးပြု၍ ပြုလုပ်နိုင်သည့် အခြားသော NLP အလုပ်များလည်း ရှိပါသည်။ ထိုအလုပ်များထဲမှ တစ်ခုမှာ **[Named Entity Recognition](https://wikipedia.org/wiki/Named-entity_recognition)** (NER) ဖြစ်ပြီး၊ ၎င်းသည် စာသားအတွင်းရှိ အထူးသတ်မှတ်ထားသော အရာများကို (ဥပမာ - နေရာများ၊ လူအမည်များ၊ ရက်စွဲ-အချိန်ကာလများ၊ ဓာတုဖော်မြူလာများ စသည်) ရှာဖွေသိရှိရန် အသုံးပြုသည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## NER ကို အသုံးပြုသော ဥပမာ + +သင်သည် Amazon Alexa သို့မဟုတ် Google Assistant ကဲ့သို့သော သဘာဝဘာသာစကား စကားပြောဘော့တစ်ခု ဖွံ့ဖြိုးလိုကြောင်း ယူဆပါစို့။ စိတ်တော်မူသော စကားပြောဘော့များသည် အသုံးပြုသူ၏ ရည်ရွယ်ချက်ကို နားလည်ရန် စာသားအမျိုးအစားသတ်မှတ်ခြင်း (text classification) ကို အသုံးပြုပါသည်။ ထိုသတ်မှတ်မှု၏ ရလဒ်ကို **intent** ဟုခေါ်ပြီး၊ ၎င်းသည် စကားပြောဘော့က ဘာလုပ်ရမည်ကို သတ်မှတ်ပေးပါသည်။ + +Bot NER + +> ပုံ - စာရေးသူမှ + +သို့သော်၊ အသုံးပြုသူသည် စကားစုတစ်ခုအတွင်းတွင် အချို့သော parameters များကို ထည့်သွင်းပေးနိုင်ပါသည်။ ဥပမာအားဖြင့် မိုးလေဝသကို မေးမြန်းသောအခါ၊ သူမသည် နေရာ သို့မဟုတ် ရက်စွဲကို သတ်မှတ်ပေးနိုင်ပါသည်။ ဘော့တစ်ခုသည် ထိုအရာများကို နားလည်နိုင်ရမည်ဖြစ်ပြီး၊ လုပ်ဆောင်မှုမပြုမီ parameter slots များကို သင့်တင့်စွာ ဖြည့်စွက်ပေးရမည်ဖြစ်သည်။ ၎င်းသည် NER ၏ အဓိကလုပ်ဆောင်မှုဖြစ်သည်။ + +> ✅ အခြားဥပမာတစ်ခုမှာ [သိပ္ပံဆိုင်ရာ ဆေးဘက်ဆိုင်ရာစာတမ်းများကို ခွဲခြမ်းစိတ်ဖြာခြင်း](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) ဖြစ်သည်။ ကျွန်ုပ်တို့ရှာဖွေရမည့် အဓိကအရာများမှာ ရောဂါများနှင့် ဆေးဝါးပစ္စည်းများကဲ့သို့သော အထူးသတ်မှတ်ထားသော ဆေးဘက်ဆိုင်ရာစကားလုံးများဖြစ်သည်။ ရောဂါအနည်းငယ်ကို substring ရှာဖွေမှုဖြင့် ရှာဖွေနိုင်သော်လည်း၊ ဓာတုဖွဲ့စည်းမှုများနှင့် ဆေးဝါးအမည်များကဲ့သို့သော ရှုပ်ထွေးသော အရာများအတွက် ပိုမိုရှုပ်ထွေးသော နည်းလမ်းတစ်ခု လိုအပ်ပါသည်။ + +## NER ကို Token Classification အဖြစ် + +NER မော်ဒယ်များသည် အဓိကအားဖြင့် **token classification မော်ဒယ်များ** ဖြစ်သည်။ အကြောင်းမှာ၊ အဝင် token တစ်ခုစီအတွက် ၎င်းသည် entity တစ်ခုနှင့် ဆက်စပ်နေသည့်အခြေအနေကို သတ်မှတ်ရမည်ဖြစ်ပြီး၊ ဆက်စပ်နေပါက entity class မည်သို့ဖြစ်သည်ကို သတ်မှတ်ရမည်ဖြစ်သည်။ + +အောက်ပါ စာတမ်းခေါင်းစဉ်ကို စဉ်းစားကြည့်ပါ- + +**Tricuspid valve regurgitation** နှင့် **lithium carbonate** **toxicity** in a newborn infant. + +ဤနေရာတွင် entity များမှာ- + +* Tricuspid valve regurgitation သည် ရောဂါတစ်ခုဖြစ်သည် (`DIS`) +* Lithium carbonate သည် ဓာတုပစ္စည်းတစ်ခုဖြစ်သည် (`CHEM`) +* Toxicity သည်လည်း ရောဂါတစ်ခုဖြစ်သည် (`DIS`) + +တစ်ခု entity သည် token အတော်များများကို ဖုံးလွှမ်းနိုင်သည်ကို သတိပြုပါ။ ထို့အပြင်၊ ဤအခါတွင်ကဲ့သို့ အနီးကပ်ရှိသော entity နှစ်ခုကို ခွဲခြားနိုင်ရမည်ဖြစ်သည်။ ထို့ကြောင့် entity တစ်ခုစီအတွက် အတန်းနှစ်ခုကို အသုံးပြုခြင်းသည် ရိုးရိုးဖြစ်သည် - entity ၏ ပထမဆုံး token ကို သတ်မှတ်သည့်အတန်း (အများအားဖြင့် `B-` prefix ကို အသုံးပြုသည်၊ **b**eginning အတွက်) နှင့် entity ၏ ဆက်လက်မှုကို သတ်မှတ်သည့်အတန်း (`I-`၊ **i**nner token အတွက်) ဖြစ်သည်။ ထို့အပြင် `O` ကို **o**ther token များကို ကိုယ်စားပြုရန် အတန်းအဖြစ် အသုံးပြုသည်။ ထိုသို့ token tagging ကို [BIO tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (သို့မဟုတ် IOB) ဟုခေါ်သည်။ Tag လုပ်ပြီးနောက်၊ ကျွန်ုပ်တို့၏ ခေါင်းစဉ်သည် အောက်ပါအတိုင်း ဖြစ်လာမည်- + +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 + +Token များနှင့် အတန်းများအကြား တစ်ဦးချင်းဆက်စပ်မှုကို တည်ဆောက်ရန် လိုအပ်သဖြင့်၊ ဤပုံမှန် **many-to-many** နယူးရယ်နက်ဝက် မော်ဒယ်ကို သင်ကြားနိုင်ပါသည်- + +![Image showing common recurrent neural network patterns.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.my.jpg) + +> *ဤပုံသည် [Andrej Karpathy](http://karpathy.github.io/) ၏ [ဤဘလော့](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) မှရရှိသည်။ NER token classification မော်ဒယ်များသည် ဤပုံ၏ အညာဘက်ဆုံး နက်ဝက်ဖွဲ့စည်းမှုနှင့် ကိုက်ညီသည်။* + +## NER မော်ဒယ်များကို လေ့ကျင့်ခြင်း + +NER မော်ဒယ်သည် အဓိကအားဖြင့် token classification မော်ဒယ်ဖြစ်သဖြင့်၊ ဤအလုပ်အတွက် ကျွန်ုပ်တို့ရင်းနှီးပြီးသား RNN များကို အသုံးပြုနိုင်ပါသည်။ ဤအခါတွင်၊ recurrent network ၏ block တစ်ခုစီသည် token ID ကို ပြန်ပေးမည်ဖြစ်သည်။ အောက်ပါ notebook သည် token classification အတွက် LSTM ကို လေ့ကျင့်ပုံကို ပြသပါသည်။ + +## ✍️ Example Notebooks: NER + +အောက်ပါ notebook တွင် သင်ကြားမှုကို ဆက်လက်လေ့လာပါ- + +* [NER with TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## အနှိပ်ချုပ် + +NER မော်ဒယ်သည် **token classification မော်ဒယ်** ဖြစ်ပြီး၊ ၎င်းကို token classification ပြုလုပ်ရန် အသုံးပြုနိုင်သည်။ ၎င်းသည် NLP တွင် အလွန်ရိုးရှင်းသော အလုပ်တစ်ခုဖြစ်ပြီး၊ စာသားအတွင်းရှိ နေရာများ၊ အမည်များ၊ ရက်စွဲများနှင့် အခြားအရာများကို ရှာဖွေသိရှိရန် အထောက်အကူပြုသည်။ + +## 🚀 စိန်ခေါ်မှု + +ဆေးဘက်ဆိုင်ရာ စကားလုံးများအတွက် named entity recognition မော်ဒယ်တစ်ခုကို လေ့ကျင့်ရန် အောက်ပါ လုပ်ငန်းကို ပြီးမြောက်ပါ၊ ထို့နောက် အခြား dataset တစ်ခုတွင် စမ်းသပ်ကြည့်ပါ။ + +## [Post-lecture quiz](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 အပိုင်းကို လိုက်နာ၍ သင်၏ အသိပညာကို တိုးချဲ့ပါ။ + +## [Assignment](lab/README.md) + +ဤသင်ခန်းစာအတွက် လုပ်ငန်းတွင်၊ သင်သည် ဆေးဘက်ဆိုင်ရာ entity recognition မော်ဒယ်တစ်ခုကို လေ့ကျင့်ရမည်ဖြစ်သည်။ ဤသင်ခန်းစာတွင် ဖော်ပြထားသည့်အတိုင်း LSTM မော်ဒယ်ကို လေ့ကျင့်ခြင်းဖြင့် စတင်ပြီး၊ BERT transformer မော်ဒယ်ကို ဆက်လက်အသုံးပြုပါ။ [လမ်းညွှန်ချက်များ](lab/README.md) ကို ဖတ်ရှု၍ အသေးစိတ်ကို သိရှိပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရ အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအမှားများ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/5-NLP/19-NER/lab/README.md b/translations/my/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..856749c5 --- /dev/null +++ b/translations/my/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +လေ့လာရေးအတွက် [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners) မှ Lab Assignment။ + +## တာဝန် + +ဒီ Lab မှာ သင့်အနေနဲ့ ဆေးဘက်ဆိုင်ရာအမည်ပြုမူအသိအမှတ်ပြုမှု (NER) မော်ဒယ်ကို လေ့ကျင့်ရမည်ဖြစ်သည်။ + +## ဒေတာဆက်စုစည်းမှု + +NER မော်ဒယ်ကို လေ့ကျင့်ရန်အတွက် ဆေးဘက်ဆိုင်ရာအဖွဲ့အစည်းများကို မှန်ကန်စွာတပ်ဆင်ထားသော ဒေတာဆက်စုစည်းမှုလိုအပ်သည်။ [BC5CDR dataset](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) တွင် 1500 ကျော်သော စာတမ်းများမှ ရောဂါများနှင့် ဓာတုဗေဒဆိုင်ရာအဖွဲ့အစည်းများကို တပ်ဆင်ထားသည်။ ၎င်းဒေတာကို ၎င်းတို့၏ဝဘ်ဆိုဒ်တွင် မှတ်ပုံတင်ပြီးနောက် ဒေါင်းလုဒ်လုပ်နိုင်သည်။ + +BC5CDR Dataset သည် အောက်ပါအတိုင်းဖြစ်သည်- + +``` +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 +... +``` + +ဒီဒေတာတွင် ပထမနှစ်ကြောင်းမှာ စာတမ်းခေါင်းစဉ်နှင့် အကျဉ်းချုပ်ဖြစ်ပြီး၊ ထို့နောက် title+abstract block အတွင်းရှိ အဖွဲ့အစည်းတစ်ခုစီ၏ စတင်နှင့် အဆုံးနေရာများပါရှိသည်။ အဖွဲ့အစည်းအမျိုးအစားအပြင်၊ ၎င်းအဖွဲ့အစည်း၏ ဆေးဘက်ဆိုင်ရာ ontology အတွင်းရှိ ontology ID ကိုလည်း ရရှိနိုင်သည်။ + +ဤဒေတာကို BIO encoding သို့ ပြောင်းရန် Python ကုဒ်အချို့ရေးရန် လိုအပ်မည်ဖြစ်သည်။ + +## ကွန်ယက် + +NER အတွက် ပထမဆုံးကြိုးစားမှုကို သင်ခန်းစာအတွင်း တွေ့ရှိခဲ့သည့် ဥပမာအတိုင်း LSTM ကွန်ယက်ကို အသုံးပြု၍ ပြုလုပ်နိုင်သည်။ သို့သော် NLP လုပ်ငန်းများတွင် [transformer architecture](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) နှင့် အထူးသဖြင့် [BERT language models](https://en.wikipedia.org/wiki/BERT_(language_model)) သည် ပိုမိုကောင်းမွန်သောရလဒ်များကို ပြသသည်။ Pre-trained BERT မော်ဒယ်များသည် ဘာသာစကားတစ်ခု၏ အခြေခံဖွဲ့စည်းမှုကို နားလည်ပြီး၊ သေးငယ်သော ဒေတာဆက်စုစည်းမှုများနှင့် တွက်ချက်မှုကုန်ကျစရိတ်နည်းသော အထူးလုပ်ငန်းများအတွက် ပြန်လည်လေ့ကျင့်နိုင်သည်။ + +NER ကို ဆေးဘက်ဆိုင်ရာအခြေအနေတွင် အသုံးပြုရန် စီစဉ်နေသောကြောင့် ဆေးဘက်ဆိုင်ရာစာသားများပေါ်တွင် လေ့ကျင့်ထားသော BERT မော်ဒယ်ကို အသုံးပြုခြင်းမှာ make sense ဖြစ်သည်။ Microsoft Research သည် [PubMed](https://pubmed.ncbi.nlm.nih.gov/) repository မှ စာသားများကို အသုံးပြု၍ လေ့ကျင့်ထားသော [PubMedBERT][PubMedBERT] ([publication][PubMedBERT-Pub]) ဟုခေါ်သော pre-trained မော်ဒယ်ကို ထုတ်ဝေထားသည်။ + +Transformer မော်ဒယ်များကို လေ့ကျင့်ရန် *de facto* စံဖြစ်သော [Hugging Face Transformers](https://huggingface.co/) library ကို အသုံးပြုနိုင်သည်။ ၎င်းတွင် PubMedBERT အပါအဝင် community-maintained pre-trained မော်ဒယ်များကိုလည်း ပါဝင်သည်။ ဤမော်ဒယ်ကို load လုပ်ပြီး အသုံးပြုရန်အတွက် ကုဒ်အကြောင်းအရာအနည်းငယ်သာ လိုအပ်သည်- + +```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) +``` + +ဤကုဒ်သည် `classes` အရေအတွက်အလိုက် token classification လုပ်ငန်းအတွက် တည်ဆောက်ထားသော `model` ကိုပေးပြီး၊ input text ကို token များအဖြစ် ခွဲခြားနိုင်သော `tokenizer` object ကိုလည်း ပေးသည်။ PubMedBERT tokenization ကို ထည့်သွင်းစဉ်းစားပြီး ဒေတာကို BIO format သို့ ပြောင်းရန် လိုအပ်မည်။ [ဒီ Python ကုဒ်](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) ကို အကြံဉာဏ်အဖြစ် အသုံးပြုနိုင်သည်။ + +## အဓိကအချက် + +ဤတာဝန်သည် သင့်အနေနဲ့ သဘာဝဘာသာစကားစာသားများ၏ အကြီးအကျယ်ကို နက်နက်ရှိုင်းရှိုင်း နားလည်လိုပါက ရှိနိုင်သော အမှန်တကယ်လုပ်ငန်းနှင့် အလွန်နီးစပ်သည်။ ကျွန်ုပ်တို့၏အမှုတွင်၊ လေ့ကျင့်ထားသောမော်ဒယ်ကို [COVID-19 ဆိုင်ရာစာတမ်းများ၏ ဒေတာဆက်စုစည်းမှု](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/my/lessons/5-NLP/20-LangModels/README.md b/translations/my/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..8c62be32 --- /dev/null +++ b/translations/my/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# ကြိုတင်လေ့ကျင့်ထားသော အကြီးစားဘာသာစကားမော်ဒယ်များ + +ယခင်အလုပ်များအားလုံးတွင် ကျွန်ုပ်တို့သည် တိကျသောအလုပ်တစ်ခုကို ဆောင်ရွက်ရန်အတွက် အမှတ်အသားပြုထားသောဒေတာအစုတစ်ခုကို အသုံးပြု၍ နယူးရယ်နက်ဝက်ကို လေ့ကျင့်နေခဲ့သည်။ သို့သော် BERT ကဲ့သို့သော အကြီးစား Transformer မော်ဒယ်များတွင် ဘာသာစကားမော်ဒယ်တစ်ခုကို တည်ဆောက်ရန် Language Modelling ကို Self-Supervised နည်းလမ်းဖြင့် အသုံးပြုသည်။ ထို့နောက် အထူးပြုလေ့ကျင့်မှုများဖြင့် အထူးပြုလုပ်ထားသော Downstream Task များအတွက် အသုံးပြုသည်။ သို့သော်လည်း အကြီးစားဘာသာစကားမော်ဒယ်များသည် Domain-Specific Training မလိုဘဲ အလုပ်အမျိုးမျိုးကို ဖြေရှင်းနိုင်ကြောင်း သက်သေပြထားသည်။ ထိုသို့လုပ်ဆောင်နိုင်သော မော်ဒယ်များကို **GPT** (Generative Pre-Trained Transformer) ဟုခေါ်သည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## စာသားထုတ်လုပ်ခြင်းနှင့် Perplexity + +Downstream Training မလိုဘဲ အလုပ်များကို အထွေထွေကျကျ ဆောင်ရွက်နိုင်သော နယူးရယ်နက်ဝက်၏ အယူအဆကို [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) စာတမ်းတွင် ဖော်ပြထားသည်။ အဓိကအယူအဆမှာ အခြားသောအလုပ်များစွာကို **စာသားထုတ်လုပ်ခြင်း** ဖြင့် မော်ဒယ်လုပ်နိုင်သည်ဟု ဆိုသည်။ အကြောင်းမှာ စာသားကို နားလည်ခြင်းသည် စာသားကို ထုတ်လုပ်နိုင်ခြင်းနှင့် ဆက်စပ်နေသည်။ မော်ဒယ်သည် လူ့အသိပညာပါဝင်သော စာသားအကြီးစားအစုအဝေးကို လေ့ကျင့်ထားသောကြောင့် အကြောင်းအရာအမျိုးမျိုးကိုလည်း သိရှိလာသည်။ + +> စာသားကို နားလည်ပြီး ထုတ်လုပ်နိုင်ခြင်းသည် ပတ်ဝန်းကျင်အကြောင်းကို သိရှိထားရမည်ဟု ဆိုလိုသည်။ လူများသည်လည်း စာဖတ်ခြင်းမှတစ်ဆင့် သိမြင်လာကြသည်။ GPT နက်ဝက်သည်လည်း ထိုနည်းတူပင်ဖြစ်သည်။ + +စာသားထုတ်လုပ်မော်ဒယ်များသည် နောက်တစ်လုံးသော စကားလုံး၏ ဖြစ်နိုင်ခြေကို ခန့်မှန်းခြင်းဖြင့် အလုပ်လုပ်သည် $$P(w_N)$$ သို့သော် စကားလုံးတစ်လုံး၏ Unconditional ဖြစ်နိုင်ခြေသည် စာသားအစုအဝေးတွင် စကားလုံး၏ မကြာခဏဖြစ်ပေါ်မှုနှုန်းနှင့် ညီမျှသည်။ GPT သည် ယခင်စကားလုံးများကို အခြေခံ၍ နောက်တစ်လုံးသော စကားလုံး၏ **Conditional ဖြစ်နိုင်ခြေ** ကို ပေးနိုင်သည် $$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) တွင် ပိုမိုလေ့လာနိုင်ပါသည်။ + +ဘာသာစကားထုတ်လုပ်မော်ဒယ်၏ အရည်အသွေးကို **Perplexity** ဖြင့် သတ်မှတ်နိုင်သည်။ ၎င်းသည် Task-Specific Dataset မလိုဘဲ မော်ဒယ်အရည်အသွေးကို တိုင်းတာနိုင်သော Intrinsic Metric တစ်ခုဖြစ်သည်။ ၎င်းသည် *စာကြောင်းတစ်ကြောင်း၏ ဖြစ်နိုင်ခြေ* အယူအဆအပေါ် အခြေခံထားသည်။ မော်ဒယ်သည် ဖြစ်နိုင်ခြေမြင့်သော စာကြောင်းများကို (ဥပမာ- အမှန်တကယ်ဖြစ်နိုင်သော စာကြောင်းများ) မြင့်မားသော ဖြစ်နိုင်ခြေ ပေးပြီး Perplexity နည်းသော စာကြောင်းများကို (ဥပမာ- *Can it does what?* ကဲ့သို့သော စာကြောင်းများ) နိမ့်သော ဖြစ်နိုင်ခြေ ပေးသည်။ စာသားအစုအဝေးမှ စာကြောင်းများကို မော်ဒယ်ထံပေးသောအခါ ၎င်းတို့သည် မြင့်မားသော ဖြစ်နိုင်ခြေနှင့် နိမ့်သော **Perplexity** ရှိရမည်ဟု မျှော်လင့်ရသည်။ သင်္ချာပိုင်းဆိုင်ရာအားဖြင့် ၎င်းကို စမ်းသပ်မှုအစုအဝေး၏ Normalized Inverse Probability အဖြစ် သတ်မှတ်ထားသည်။ +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**[Hugging Face မှ GPT-powered စာသားတည်းဖြတ်ရေးကိရိယာ](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) | +| -- | -- | -- | +|Language model with upto 1.5 billion parameters. | Language model with up to 175 billion parameters | 100T parameters and accepts both image and text inputs and outputs text. | + +GPT-3 နှင့် GPT-4 မော်ဒယ်များကို [Microsoft Azure မှ Cognitive Service](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) အဖြစ်နှင့် [OpenAI API](https://openai.com/api/) အဖြစ် ရရှိနိုင်ပါသည်။ + +## Prompt Engineering + +GPT သည် ဘာသာစကားနှင့် ကုဒ်ကို နားလည်ရန် အကြီးစားဒေတာများကို လေ့ကျင့်ထားသောကြောင့် Input (Prompt) များအပေါ် Output များကို ပေးသည်။ Prompt များသည် GPT Input သို့မဟုတ် Query များဖြစ်ပြီး မော်ဒယ်များကို အလုပ်များကို ဆောင်ရွက်ရန် ညွှန်ကြားချက်များပေးသည်။ လိုအပ်သောရလဒ်ကို ရရှိရန် အကျိုးရှိဆုံး Prompt ကို ရွေးချယ်ရမည်ဖြစ်ပြီး ၎င်းတွင် စကားလုံးများ၊ ပုံစံများ၊ စကားစုများ သို့မဟုတ် သင်္ကေတများကို ရွေးချယ်ခြင်းပါဝင်သည်။ ဤနည်းလမ်းကို [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) သည် Prompt Engineering အကြောင်း ပိုမိုသိရှိစေရန် အချက်အလက်များကို ပေးသည်။ + +## ✍️ နမူနာ Notebook: [Playing with OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +အောက်ပါ Notebook များတွင် သင်၏ သင်ကြားမှုကို ဆက်လက်လုပ်ဆောင်ပါ- + +* [Generating text with OpenAI-GPT and Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## နိဂုံးချုပ် + +အသစ်သော အထွေထွေကြိုတင်လေ့ကျင့်ထားသော ဘာသာစကားမော်ဒယ်များသည် ဘာသာစကားဖွဲ့စည်းမှုကိုသာမက သဘာဝဘာသာစကား၏ အကြီးစားပမာဏကိုလည်း မော်ဒယ်လုပ်ထားသည်။ ထို့ကြောင့် Zero-shot သို့မဟုတ် Few-shot Settings များတွင် NLP အလုပ်အချို့ကို ထိရောက်စွာ ဖြေရှင်းနိုင်သည်။ + +## [Post-lecture quiz](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/my/lessons/5-NLP/README.md b/translations/my/lessons/5-NLP/README.md new file mode 100644 index 00000000..55d5ae5e --- /dev/null +++ b/translations/my/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# သဘာဝဘာသာစကားလုပ်ငန်းဆောင်တာ + +![NLP လုပ်ငန်းဆောင်တာများကို ရေးဆွဲထားသော ပုံ](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.my.png) + +ဤအပိုင်းတွင် **သဘာဝဘာသာစကားလုပ်ငန်းဆောင်တာ (NLP)** နှင့်ဆက်စပ်သောအလုပ်များကို Neural Networks အသုံးပြု၍ ဖြေရှင်းပုံကို အဓိကထားဆွေးနွေးသွားမည်ဖြစ်သည်။ ကွန်ပျူတာများကို ဖြေရှင်းစေလိုသော NLP ပြဿနာများစွာရှိသည်။ + +* **စာသားအမျိုးအစားခွဲခြားခြင်း** သည် စာသားအတိုင်းအတာများနှင့်ဆက်စပ်သော အမျိုးအစားခွဲခြားမှုပြဿနာတစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့် အီးမေးလ်များကို spam နှင့် non-spam အဖြစ်ခွဲခြားခြင်း၊ သို့မဟုတ် ဆောင်းပါးများကို အားကစား၊ စီးပွားရေး၊ နိုင်ငံရေး စသည်ဖြင့် အမျိုးအစားခွဲခြားခြင်းတို့ ပါဝင်သည်။ ထို့အပြင် chat bots ဖွံ့ဖြိုးရေးတွင် အသုံးပြုသူ၏ ရည်ရွယ်ချက်ကို နားလည်ရန်လိုအပ်သည်။ ဤကိစ္စတွင် **ရည်ရွယ်ချက်ခွဲခြားခြင်း** (intent classification) ကို ဖြေရှင်းရမည်ဖြစ်သည်။ ရည်ရွယ်ချက်ခွဲခြားမှုတွင် အမျိုးအစားများစွာနှင့် ရင်ဆိုင်ရတတ်သည်။ +* **ခံစားချက်ခွဲခြားခြင်း** သည် regression ပြဿနာတစ်ခုဖြစ်ပြီး စာကြောင်း၏ အဓိပ္ပါယ်သည် အပေါင်း/အပြားဘယ်လောက်ရှိသည်ကို သတ်မှတ်ရန် နံပါတ် (ခံစားချက်) တစ်ခုကို သတ်မှတ်ရမည်ဖြစ်သည်။ ခံစားချက်ခွဲခြားမှု၏ အဆင့်မြင့်ဗားရှင်းတစ်ခုမှာ **အပိုင်းအခြေခံခံစားချက်ခွဲခြားခြင်း** (ABSA) ဖြစ်ပြီး စာကြောင်းတစ်ခုလုံးကို မဟုတ်ဘဲ အပိုင်းအခြေများ (aspects) ကို ခံစားချက်သတ်မှတ်ရမည်ဖြစ်သည်။ ဥပမာအားဖြင့် *ဤစားသောက်ဆိုင်တွင် အစားအစာကို ကြိုက်ခဲ့ပေမယ့် ပတ်ဝန်းကျင်က ဆိုးရွားခဲ့သည်*။ +* **နာမည်ရရှိထားသောအရာများကို မှတ်သားခြင်း** (NER) သည် စာသားမှ အချို့သောအရာများကို ထုတ်ယူရန် ပြဿနာဖြစ်သည်။ ဥပမာအားဖြင့် *မနက်ဖြန် ပဲရစ်ကို ပျံသန်းရန်လိုအပ်သည်* ဆိုသော စာကြောင်းတွင် *မနက်ဖြန်* သည် DATE ကို ရည်ညွှန်းပြီး *ပဲရစ်* သည် LOCATION ဖြစ်သည်ကို နားလည်ရန်လိုအပ်သည်။ +* **အဓိကချက်များထုတ်ယူခြင်း** သည် NER နှင့် ဆင်တူပြီး စာကြောင်း၏ အဓိပ္ပါယ်အတွက် အရေးပါသော စကားလုံးများကို အလိုအလျောက်ထုတ်ယူရန်လိုအပ်သည်။ သတ်မှတ်ထားသောအရာအမျိုးအစားများအတွက် ကြိုတင်လေ့ကျင့်မှုမလိုအပ်ပါ။ +* **စာသားစုစည်းခြင်း** သည် နည်းပညာပံ့ပိုးမှုစကားဝိုင်းများတွင် တူညီသောတောင်းဆိုမှုများကို အုပ်စုဖွဲ့လိုသောအခါ အသုံးဝင်သည်။ +* **မေးခွန်းဖြေဆိုခြင်း** သည် မေးခွန်းတစ်ခုကို ဖြေဆိုနိုင်စွမ်းကို ရည်ညွှန်းသည်။ မော်ဒယ်သည် စာသားအပိုင်းနှင့် မေးခွန်းကို input အဖြစ်ရရှိပြီး မေးခွန်း၏ အဖြေပါဝင်သောနေရာကို စာသားတွင် ရှာဖွေရန် (တခါတလေ အဖြေစာသားကို ဖန်တီးရန်) လိုအပ်သည်။ +* **စာသားဖန်တီးခြင်း** သည် စာသားအသစ်ကို ဖန်တီးနိုင်စွမ်းဖြစ်သည်။ ၎င်းကို *text prompt* အပေါ်အခြေခံပြီး နောက်ထပ်အက္ခရာ/စကားလုံးကို ခန့်မှန်းသော အမျိုးအစားခွဲခြားမှုအလုပ်တစ်ခုအဖြစ် သတ်မှတ်နိုင်သည်။ GPT-3 ကဲ့သို့သော အဆင့်မြင့်စာသားဖန်တီးမော်ဒယ်များသည် [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) သို့မဟုတ် [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29) ဆိုသောနည်းလမ်းများကို အသုံးပြု၍ အခြားသော NLP အလုပ်များကို ဖြေရှင်းနိုင်သည်။ +* **စာသားအကျဉ်းချုပ်ရေးခြင်း** သည် ရှည်လျားသောစာသားကို "ဖတ်"၍ အနည်းငယ်သောစာကြောင်းများဖြင့် အကျဉ်းချုပ်ရေးရန်လိုအပ်သောနည်းလမ်းဖြစ်သည်။ +* **စက်ဖြင့်ဘာသာပြန်ခြင်း** သည် ဘာသာစကားတစ်ခုတွင် စာသားနားလည်ခြင်းနှင့် အခြားဘာသာစကားတွင် စာသားဖန်တီးခြင်းတို့၏ ပေါင်းစပ်အဖြစ်မြင်နိုင်သည်။ + +အစပိုင်းတွင် NLP အလုပ်များအများစုကို ဓလေ့ကျင့်နည်းများဖြင့် ဖြေရှင်းခဲ့သည်။ ဥပမာအားဖြင့် စက်ဖြင့်ဘာသာပြန်ခြင်းတွင် စာကြောင်းကို syntax tree အဖြစ်ပြောင်းလဲရန် parsers ကို အသုံးပြုခဲ့ပြီး sentence ၏ အဓိပ္ပါယ်ကို ကိုယ်စားပြုသော semantic structures များကို ထုတ်ယူခဲ့သည်။ ထို့နောက် target ဘာသာစကား၏ grammar အပေါ်အခြေခံ၍ ရလဒ်ကို ဖန်တီးခဲ့သည်။ ယနေ့တွင် Neural Networks ကို အသုံးပြု၍ NLP အလုပ်များစွာကို ပိုမိုထိရောက်စွာ ဖြေရှင်းနိုင်သည်။ + +> [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python library တွင် classical NLP နည်းလမ်းများစွာကို အကောင်အထည်ဖော်ထားသည်။ [NLTK Book](https://www.nltk.org/book/) သည် NLTK ကို အသုံးပြု၍ NLP အလုပ်များကို ဖြေရှင်းပုံကို ဖော်ပြထားသော အွန်လိုင်းစာအုပ်တစ်ခုဖြစ်သည်။ + +ဤသင်ခန်းစာတွင် Neural Networks ကို အသုံးပြု၍ NLP ကို အဓိကထားမည်ဖြစ်ပြီး NLTK ကို လိုအပ်သည့်နေရာတွင် အသုံးပြုမည်ဖြစ်သည်။ + +ကျွန်ုပ်တို့သည် tabular data နှင့် images ကို Neural Networks အသုံးပြု၍ ဖြေရှင်းပုံကို ရှင်းလင်းခဲ့ပြီးဖြစ်သည်။ data အမျိုးအစားများနှင့် စာသားအကြား အဓိကကွာခြားချက်မှာ စာသားသည် အရွယ်အစားမတူညီသော အတိုင်းအတာဖြစ်ပြီး images ၏ input size ကို ကြိုတင်သိနိုင်သည်။ Convolutional networks သည် input data မှ pattern များကို ထုတ်ယူနိုင်သော်လည်း စာသားတွင် pattern များသည် ပိုမိုရှုပ်ထွေးသည်။ ဥပမာအားဖြင့် negation သည် subject နှင့် အကွာအဝေးရှိသော စကားလုံးများဖြင့် ခွဲထားနိုင်သည် (*I do not like oranges* နှင့် *I do not like those big colorful tasty oranges*)၊ ၎င်းကို pattern တစ်ခုအဖြစ် သတ်မှတ်နိုင်ရမည်ဖြစ်သည်။ ထို့ကြောင့် ဘာသာစကားကို ကိုင်တွယ်ရန် *recurrent networks* နှင့် *transformers* ကဲ့သို့သော Neural Network အမျိုးအစားအသစ်များကို မိတ်ဆက်ရန်လိုအပ်သည်။ + +## Libraries ကို Install လုပ်ခြင်း + +ဤသင်ခန်းစာကို local Python installation တွင် run လုပ်မည်ဆိုပါက NLP အတွက်လိုအပ်သော libraries များကို အောက်ပါ command များဖြင့် install လုပ်ရန်လိုအပ်နိုင်သည်။ + +**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 သတိပေးချက် + +ဤအပိုင်းတွင် မော်ဒယ်များကို training လုပ်ရန် အချို့သော ဥပမာများတွင် ကြီးမားသော မော်ဒယ်များကို training လုပ်မည်ဖြစ်သည်။ +* **GPU-enabled ကွန်ပျူတာကို အသုံးပြုပါ**: ကြီးမားသောမော်ဒယ်များနှင့်အလုပ်လုပ်သောအခါ စောင့်ဆိုင်းချိန်များကို လျှော့ချရန် GPU-enabled ကွန်ပျူတာတွင် notebooks များကို run လုပ်ရန် အကြံပြုပါသည်။ +* **GPU memory အကန့်အသတ်များ**: GPU တွင် run လုပ်ခြင်းသည် ကြီးမားသောမော်ဒယ်များကို training လုပ်သောအခါ GPU memory ကုန်ဆုံးမှုဖြစ်နိုင်သည်။ +* **GPU memory သုံးစွဲမှု**: Training လုပ်စဉ် GPU memory သုံးစွဲမှုသည် minibatch size အပါအဝင် အမျိုးမျိုးသောအချက်များပေါ်မူတည်သည်။ +* **Minibatch size ကို လျှော့ချပါ**: GPU memory ပြဿနာများနှင့် ရင်ဆိုင်ပါက minibatch size ကို လျှော့ချရန် code တွင် ပြင်ဆင်ပါ။ +* **TensorFlow GPU memory ဖြန့်ချိမှု**: TensorFlow ၏ အဟောင်းဗားရှင်းများသည် Python kernel တစ်ခုတွင် မော်ဒယ်များစွာကို training လုပ်သောအခါ GPU memory ကို မှန်ကန်စွာ ဖြန့်ချိမထားနိုင်ပါ။ GPU memory သုံးစွဲမှုကို ထိန်းချုပ်ရန် TensorFlow ကိုလိုအပ်သည့်အခါ GPU memory ကိုသာ allocate လုပ်ရန် configure လုပ်နိုင်သည်။ +* **Code ထည့်သွင်းခြင်း**: TensorFlow ကိုလိုအပ်သည့်အခါ GPU memory allocation ကိုသာ ကြီးထွားစေရန် notebooks တွင် အောက်ပါ code ကို ထည့်သွင်းပါ: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Classic ML အမြင်မှ NLP ကို လေ့လာလိုပါက [ဤသင်ခန်းစာများ](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) ကို သွားရောက်ကြည့်ရှုပါ။ + +## ဤအပိုင်းတွင် +ဤအပိုင်းတွင် ကျွန်ုပ်တို့သည် အောက်ပါအကြောင်းအရာများကို လေ့လာမည်ဖြစ်သည်- + +* [စာသားကို tensors အဖြစ် ကိုယ်စားပြုခြင်း](13-TextRep/README.md) +* [Word Embeddings](14-Emdeddings/README.md) +* [ဘာသာစကားမော်ဒယ်ရေးခြင်း](15-LanguageModeling/README.md) +* [Recurrent Neural Networks](16-RNN/README.md) +* [Generative Networks](17-GenerativeNetworks/README.md) +* [Transformers](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/my/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/my/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..214276c1 --- /dev/null +++ b/translations/my/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များ** (GA) သည် **အဆင့်ဆင့်တိုးတက်မှုနည်းလမ်း** အပေါ် အခြေခံထားပြီး၊ လူ့အဖွဲ့အစည်း၏ တိုးတက်မှုနည်းလမ်းများကို အသုံးပြုကာ ပေးထားသော ပြဿနာတစ်ခုအတွက် အကောင်းဆုံးဖြေရှင်းချက်ကို ရယူရန် အသုံးပြုသည်။ ၎င်းကို 1975 ခုနှစ်တွင် [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland) မှ တင်ပြခဲ့သည်။ + +ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များသည် အောက်ပါ အတွေးအခေါ်များအပေါ် အခြေခံထားသည်- + +* ပြဿနာ၏ မှန်ကန်သော ဖြေရှင်းချက်များကို **ဂျင်းများ** အဖြစ် ကိုယ်စားပြုနိုင်သည်။ +* **Crossover** သည် ဖြေရှင်းချက်နှစ်ခုကို ပေါင်းစပ်ကာ အသစ်သော မှန်ကန်သော ဖြေရှင်းချက်တစ်ခုကို ရယူနိုင်စေသည်။ +* **Selection** သည် **fitness function** တစ်ခုကို အသုံးပြုကာ ပိုမိုကောင်းမွန်သော ဖြေရှင်းချက်များကို ရွေးချယ်ရန် အသုံးပြုသည်။ +* **Mutations** သည် အကောင်းဆုံးဖြေရှင်းချက်ကို ရှာဖွေရာတွင် တည်ငြိမ်မှုကို ဖျက်သိမ်းပြီး **local minimum** မှ ထွက်နိုင်စေသည်။ + +ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်တစ်ခုကို အကောင်အထည်ဖော်လိုပါက အောက်ပါအရာများလိုအပ်သည်- + + * ပြဿနာဖြေရှင်းချက်များကို **ဂျင်းများ** g∈Γ အဖြစ် ကုဒ်ရေးသားနိုင်သော နည်းလမ်းတစ်ခု ရှာဖွေရန် + * ဂျင်းများ၏စုစုပေါင်း Γ အပေါ် **fitness function** fit: Γ→**R** ကို သတ်မှတ်ရန်။ function တန်ဖိုး ပိုငယ်လျှင် ဖြေရှင်းချက် ပိုကောင်းသည်ဟု ဆိုလိုသည်။ + * **Crossover** နည်းလမ်းကို သတ်မှတ်ရန်၊ ဂျင်းနှစ်ခုကို ပေါင်းစပ်ကာ အသစ်သော မှန်ကန်သော ဖြေရှင်းချက်တစ်ခုရရန် crossover: Γ2→Γ။ + * **Mutation** နည်းလမ်းကို သတ်မှတ်ရန် mutate: Γ→Γ။ + +အများအားဖြင့် crossover နှင့် mutation သည် ဂျင်းများကို နံပါတ်လိုက် အစီအစဉ်များ သို့မဟုတ် bit vectors အဖြစ် ပြောင်းလဲရန် လွယ်ကူသော အယ်လ်ဂိုရီသမ်များဖြစ်သည်။ + +ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်၏ အထူးအကောင်အထည်ဖော်မှုသည် အခြေအနေအလိုက် ကွဲပြားနိုင်သော်လည်း၊ အခြေခံဖွဲ့စည်းမှုမှာ အောက်ပါအတိုင်းဖြစ်သည်- + +1. မူလ လူဦးရေ G⊂Γ ကို ရွေးချယ်ပါ။ +2. ဒီအဆင့်တွင် ပြုလုပ်မည့် လုပ်ဆောင်ချက်ကို ရွေးချယ်ပါ- crossover သို့မဟုတ် mutation +3. **Crossover**: + * ဂျင်းနှစ်ခု g1, g2 ∈ G ကို ရွေးချယ်ပါ။ + * crossover g=crossover(g1,g2) ကို တွက်ချက်ပါ။ + * fit(g)1) သို့မဟုတ် fit(g)2) ဖြစ်ပါက- လူဦးရေထဲမှ သက်ဆိုင်ရာ ဂျင်းကို g ဖြင့် အစားထိုးပါ။ +4. **Mutation** - လူဦးရေထဲမှ random ဂျင်း g∈G ကို ရွေးချယ်ပြီး mutate(g) ဖြင့် အစားထိုးပါ။ +5. fit တန်ဖိုးလုံလောက်စွာငယ်သွားသည်အထိ သို့မဟုတ် လုပ်ဆောင်မှုအဆင့်အရေအတွက်ကန့်သတ်ချက်ကို ရောက်သည်အထိ အဆင့် 2 မှ ပြန်လုပ်ဆောင်ပါ။ + +## ပုံမှန်လုပ်ငန်းများ + +ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များဖြင့် ပုံမှန်အားဖြင့် ဖြေရှင်းသော လုပ်ငန်းများမှာ- + +1. အချိန်ဇယား အကောင်းဆုံးဖြစ်စေရန် +1. အကောင်းဆုံး ထည့်သွင်းမှု +1. အကောင်းဆုံး ဖြတ်တောက်မှု +1. စုံစမ်းရှာဖွေမှုကို မြန်ဆန်စေရန် + +## ✍️ လေ့ကျင့်မှုများ: ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များ + +အောက်ပါ notebook များတွင် သင်ကြားမှုကို ဆက်လက်လုပ်ဆောင်ပါ- + +[ဒီ notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) သို့ သွားပြီး ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များကို အသုံးပြုသော နမူနာနှစ်ခုကို ကြည့်ပါ- + +1. အခန်းကျိန်းသုံးမှု +1. 8 မိဖုရား ပြဿနာ + +## နိဂုံးချုပ် + +ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များကို လောဂျစ်တစ်စ်နှင့် ရှာဖွေမှု ပြဿနာများအတွက် အသုံးပြုသည်။ ၎င်းနယ်ပယ်သည် စိတ်ပညာနှင့် ကွန်ပျူတာသိပ္ပံကို ပေါင်းစပ်သည့် သုတေသနမှ ရင်းမြစ်ရရှိသည်။ + +## 🚀 စိန်ခေါ်မှု + +"ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များကို အကောင်အထည်ဖော်ရန် လွယ်ကူသော်လည်း၊ ၎င်း၏ အပြုအမူကို နားလည်ရန် ခက်ခဲသည်။" [ရင်းမြစ်](https://wikipedia.org/wiki/Genetic_algorithm) ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်တစ်ခု (ဥပမာ- Sudoku ပြဿနာကို ဖြေရှင်းခြင်း) ကို ရှာဖွေပြီး၊ ၎င်း၏ လုပ်ဆောင်ပုံကို အကြမ်းဖျဉ်း သို့မဟုတ် flowchart အဖြစ် ရှင်းပြပါ။ + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +[ဒီအလွန်ကောင်းမွန်သော ဗီဒီယို](https://www.youtube.com/watch?v=qv6UVOQ0F44) ကို ကြည့်ပါ၊ ၎င်းတွင် ကွန်ပျူတာသည် ဂျင်နက်တစ် အယ်လ်ဂိုရီသမ်များဖြင့် သင်ကြားထားသော နယူးရယ်နက်ဝက်များကို အသုံးပြုကာ Super Mario ကို ကစားနိုင်ပုံကို ရှင်းပြထားသည်။ ဂိမ်းကစားရန် သင်ကြားမှုအကြောင်းကို [နောက်အပိုင်းတွင်](../22-DeepRL/README.md) ပိုမိုလေ့လာမည်ဖြစ်သည်။ + +## [Assignment: Diophantine Equation](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +သင့်ရည်မှန်းချက်မှာ **Diophantine equation** ဟုခေါ်သော အနိမ့်အမြင့်တန်ဖိုးများပါဝင်သော ဆာလ်ဗ်ရှင်းကို ရှာဖွေရန်ဖြစ်သည်။ ဥပမာအားဖြင့် 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/my/lessons/6-Other/22-DeepRL/README.md b/translations/my/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..d1c81aa1 --- /dev/null +++ b/translations/my/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,124 @@ + +# အနက်ရှိုင်းသော အတိုးအကျိုးသင်ယူမှု + +အတိုးအကျိုးသင်ယူမှု (Reinforcement Learning - RL) သည် စောင့်ကြည့်သင်ယူမှု (Supervised Learning) နှင့် မစောင့်ကြည့်သင်ယူမှု (Unsupervised Learning) တို့နှင့်အတူ အခြေခံစက်လေ့လာမှု ပုံစံများထဲမှ တစ်ခုအဖြစ် သတ်မှတ်နိုင်သည်။ စောင့်ကြည့်သင်ယူမှုတွင် ကျွန်ုပ်တို့သည် ရလဒ်များကို ကြိုတင်သိထားသော ဒေတာအစုအဖွဲ့ကို အခြေခံသည်။ သို့သော် RL တွင် **လုပ်ဆောင်ခြင်းမှ သင်ယူခြင်း** ကို အခြေခံသည်။ ဥပမာအားဖြင့် ပထမဆုံးအကြိမ် ကွန်ပျူတာဂိမ်းကို မြင်သောအခါ၊ စည်းမျဉ်းများကို မသိဘဲဖြစ်စေ ကစားရန် စတင်ပြီး၊ ကစားနေစဉ်တွင် ကျွန်ုပ်တို့၏ အတတ်ပညာများကို တိုးတက်အောင် ပြုလုပ်နိုင်သည်။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +RL ကို လုပ်ဆောင်ရန် ကျွန်ုပ်တို့အတွက် လိုအပ်သည်မှာ - + +* **ပတ်ဝန်းကျင်** သို့မဟုတ် **အတုအယောင်စက်** တစ်ခုဖြစ်ပြီး၊ ဂိမ်း၏ စည်းမျဉ်းများကို သတ်မှတ်ပေးရမည်။ ကျွန်ုပ်တို့သည် အတုအယောင်စက်တွင် စမ်းသပ်မှုများကို ပြုလုပ်ပြီး ရလဒ်များကို ကြည့်ရှုနိုင်ရမည်။ +* **ဆုချီးမြှင့်မှုအလုပ်ဆောင်မှု (Reward function)** တစ်ခုလိုအပ်ပြီး၊ ကျွန်ုပ်တို့၏ စမ်းသပ်မှုအောင်မြင်မှုကို ပြသပေးရမည်။ ဥပမာအားဖြင့် ကွန်ပျူတာဂိမ်းကစားခြင်းကို သင်ယူနေစဉ်၊ ဆုချီးမြှင့်မှုမှာ ကျွန်ုပ်တို့ရရှိသော နောက်ဆုံးအမှတ်ဖြစ်နိုင်သည်။ + +ဆုချီးမြှင့်မှုအလုပ်ဆောင်မှုကို အခြေခံ၍ ကျွန်ုပ်တို့၏ အပြုအမူကို ပြင်ဆင်ပြီး အတတ်ပညာများကို တိုးတက်အောင် ပြုလုပ်နိုင်ရမည်။ ဒါကြောင့် နောက်တစ်ကြိမ်ကစားသောအခါ ပိုမိုကောင်းမွန်စွာ ပြုလုပ်နိုင်မည်။ အခြားစက်လေ့လာမှုအမျိုးအစားများနှင့် RL အကြား အဓိကကွာခြားချက်မှာ RL တွင် ဂိမ်းပြီးဆုံးသည်အထိ ကျွန်ုပ်တို့ အနိုင်ရမလား အရှုံးပေးမလား မသိနိုင်ခြင်းဖြစ်သည်။ ထို့ကြောင့် တစ်ခုချင်းစီသော လှုပ်ရှားမှုသည် ကောင်းမွန်သလား မကောင်းသလား မသိနိုင်ပါ - ကျွန်ုပ်တို့သည် ဆုချီးမြှင့်မှုကို ဂိမ်းပြီးဆုံးချိန်တွင်သာ ရရှိမည်ဖြစ်သည်။ + +RL လုပ်ဆောင်စဉ်တွင် ကျွန်ုပ်တို့သည် စမ်းသပ်မှုများစွာ ပြုလုပ်ရမည်။ စမ်းသပ်မှုတစ်ခုစီတွင် ကျွန်ုပ်တို့သည် ယခင်တစ်ခါက သင်ယူထားသော အကောင်းဆုံးမဟာဗျူဟာကို လိုက်နာခြင်း (**exploitation**) နှင့် အသစ်သော အခြေအနေများကို စူးစမ်းခြင်း (**exploration**) အကြား ကိုက်ညီမှုရှိစေရန် လိုအပ်သည်။ + +## 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* တို့ကို သင်တွေ့ဖူးကြမည်ဟု ထင်ပါသည်။ ၎င်းတို့သည် accelerometer သို့မဟုတ် gyroscope မှ လက္ခဏာကို ဖြေရှင်းရန် ၎င်းတို့၏ ဘီးများကို ချိန်ညှိခြင်းဖြင့် အလိုအလျောက် တိုင်တည်နိုင်သည်။ ဤအပိုင်းတွင် ကျွန်ုပ်တို့သည် တိုင်တည်မှုဆိုင်ရာ ပြဿနာတစ်ခုကို ဖြေရှင်းရန် သင်ယူမည် - တိုင်တည်မှုတိုင်တည်မှုဖြစ်သည်။ ၎င်းသည် စက်ကွင်းပညာရှင်တစ်ဦးသည် ၎င်း၏လက်ပေါ်တွင် တိုင်တည်ရန် လိုအပ်သည့် အခြေအနေနှင့် ဆင်တူသည် - သို့သော် ဤတိုင်တည်မှုသည် 1D တွင်သာ ဖြစ်ပေါ်သည်။ + +တိုင်တည်မှု၏ ရိုးရှင်းသောဗားရှင်းကို **CartPole** ပြဿနာဟု သိရှိကြသည်။ CartPole ကမ္ဘာတွင် ကျွန်ုပ်တို့တွင် ဘယ်ဘက် သို့မဟုတ် ညာဘက်သို့ ရွေ့နိုင်သည့် အလျားလိုက် slider တစ်ခုရှိပြီး၊ ရည်မှန်းချက်မှာ slider အပေါ်တွင် တိုင်တည်နေသော တိုင်တစ်ခုကို တိုင်တည်စေရန် ဖြစ်သည်။ + +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** π ဟု ခေါ်သည် - ၎င်းသည် အခြေအနေတစ်ခုအတွက် လိုက်နာရန် လှုပ်ရှားမှုကို ပြန်ပေးမည်။ policy ကို သတ်မှတ်ချက်တစ်ခုအဖြစ်လည်း သတ်မှတ်နိုင်သည်၊ ဥပမာအားဖြင့် အခြေအနေ *s* နှင့် လှုပ်ရှားမှု *a* တို့အတွက် ၎င်းသည် *s* အခြေအနေတွင် *a* ကို လုပ်ဆောင်သင့်ကြောင်း ပြသသည့် probability π(*a*|*s*) ကို ပြန်ပေးမည်။ + +## Policy Gradients Algorithm + +policy ကို မော်ဒယ်ဖော်ဆောင်ရန် အလွယ်ဆုံးနည်းလမ်းမှာ အခြေအနေများကို input အဖြစ် လက်ခံပြီး၊ ဆက်စပ်သော လှုပ်ရှားမှုများ (သို့မဟုတ် လှုပ်ရှားမှုအားလုံး၏ probability များ) ကို ပြန်ပေးမည့် နယူးရယ်နက်ဝက်တစ်ခုကို ဖန်တီးခြင်းဖြစ်သည်။ ၎င်းသည် ပုံမှန် အမျိုးအစားခွဲခြားမှုလုပ်ငန်းနှင့် ဆင်တူဖြစ်မည်၊ သို့သော် အဓိကကွာခြားချက်မှာ - ကျွန်ုပ်တို့သည် အဆင့်တစ်ခုစီတွင် ဘယ်လှုပ်ရှားမှုကို ပြုလုပ်သင့်ကြောင်း ကြိုတင်မသိနိုင်ခြင်းဖြစ်သည်။ + +ဤနေရာတွင် အဓိကအကြံဉာဏ်မှာ ၎င်းတို့၏ probability များကို ခန့်မှန်းခြင်းဖြစ်သည်။ ကျွန်ုပ်တို့သည် စမ်းသပ်မှု၏ အဆင့်တစ်ခုစီတွင် ရရှိသော စုစုပေါင်းဆုချီးမြှင့်မှုများကို ပြသသည့် **cumulative rewards** ဗက်တာတစ်ခုကို တည်ဆောက်သည်။ ထို့နောက် **reward discounting** ကို အသုံးပြု၍ ယခင်ဆုချီးမြှင့်မှုများကို γ=0.99 ဟု သတ်မှတ်ထားသော ကိန်းဂဏန်းဖြင့် မျှတစွာ လျော့နည်းစေရန် ပြုလုပ်သည်။ ထို့နောက်၊ ပိုမိုကြီးမားသော ဆုချီးမြှင့်မှုများကို ရရှိစေသည့် အဆင့်များကို အားဖြည့်ပေးသည်။ + +> Policy Gradient အယ်လဂိုရီသမ်နှင့် ၎င်း၏ လုပ်ဆောင်မှုကို [ဥပမာ notebook](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) တွင် ပိုမိုလေ့လာပါ။ + +## Actor-Critic Algorithm + +Policy Gradients နည်းလမ်း၏ တိုးတက်သောဗားရှင်းကို **Actor-Critic** ဟု ခေါ်သည်။ ၎င်း၏ အဓိကအကြံဉာဏ်မှာ နယူးရယ်နက်ဝက်ကို အောက်ပါအရာနှစ်ခုကို ပြန်ပေးရန် လေ့ကျင့်ခြင်းဖြစ်သည် - + +* policy, ၎င်းသည် ဘယ်လှုပ်ရှားမှုကို ပြုလုပ်ရမည်ကို သတ်မှတ်သည်။ ၎င်းကို **actor** ဟု ခေါ်သည်။ +* အခြေအနေတစ်ခုတွင် ရရှိနိုင်မည့် စုစုပေါင်းဆုချီးမြှင့်မှုကို ခန့်မှန်းခြင်း - ၎င်းကို **critic** ဟု ခေါ်သည်။ + +ဤ architecture သည် [GAN](../../4-ComputerVision/10-GANs/README.md) နှင့် ဆင်တူသည်၊ ၎င်းတွင် နက်ဝက်နှစ်ခုကို တစ်ဦးနှင့်တစ်ဦး အပြိုင်လေ့ကျင့်သည်။ Actor-Critic မော်ဒယ်တွင် actor သည် ကျွန်ုပ်တို့ လုပ်ဆောင်ရမည့် လှုပ်ရှားမှုကို အကြံပြုသည်၊ Critic သည် အကဲဖြတ်ပြီး ရလဒ်ကို ခန့်မှန်းသည်။ သို့သော် ကျွန်ုပ်တို့၏ ရည်မှန်းချက်မှာ ၎င်းတို့ကို တစ်ပြိုင်တည်း လေ့ကျင့်ခြင်းဖြစ်သည်။ + +စမ်းသပ်မှုအတွင်းတွင် ကျွန်ုပ်တို့သည် စုစုပေါင်းဆုချီးမြှင့်မှုများနှင့် 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 + +အောက်ပါ notebook များတွင် သင်ကြားမှုကို ဆက်လက်လုပ်ဆောင်ပါ - + +* [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 လုပ်ငန်းများ + +ယနေ့အခါ Reinforcement Learning သည် အလွန်မြန်ဆန်စွာ တိုးတက်နေသည့် သုတေသနနယ်ပယ်တစ်ခုဖြစ်သည်။ Reinforcement Learning ၏ စိတ်ဝင်စားဖွယ် ဥပမာအချို့မှာ - + +* **Atari Games** ကစားရန် ကွန်ပျူတာကို သင်ကြားခြင်း။ ဤပြဿနာ၏ စိန်ခေါ်မှုမှာ အခြေအနေကို ဗက်တာအဖြစ် ရိုးရှင်းစွာ ကိုယ်စားပြုထားခြင်းမဟုတ်ဘဲ၊ screenshot တစ်ခုဖြစ်ပြီး - CNN ကို အသုံးပြု၍ ဤ screen ပုံရိပ်ကို အင်္ဂါရပ်ဗက်တာသို့ ပြောင်းရန် သို့မဟုတ် ဆုချီးမြှင့်မှုအချက်အလက်ကို ထုတ်ယူရန် လိုအပ်သည်။ Atari ဂိမ်းများကို Gym တွင် ရရှိနိုင်သည်။ +* Chess နှင့် Go ကဲ့သို့သော စားပွဲပေါ်ဂိမ်းများကို ကွန်ပျူတာကို သင်ကြားခြင်း။ မကြာသေးမီက **Alpha Zero** ကဲ့သို့သော နည်းလမ်းများကို စတင်ကတည်းက အေးဂျင့်နှစ်ဦး တစ်ဦးနှင့်တစ်ဦး အပြိုင်ကစားခြင်းဖြင့် လေ့ကျင့်ခဲ့ပြီး၊ အဆင့်တစ်ခုစီတွင် တိုးတက်မှုရရှိခဲ့သည်။ +* စက်မှုလုပ်ငန်းတွင် RL ကို အတုအယောင်မှ ထိန်းချုပ်မှုစနစ်များ ဖန်တီးရန် အသုံးပြုသည်။ [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) ဟုခေါ်သော ဝန်ဆောင်မှုတစ်ခုသည် အထူးသဖြင့် ဤအတွက် ဖန်တီးထားသည်။ + +## နိဂုံး + +ကျွန်ုပ်တို့သည် ယခုအခါ ဂိမ်း၏ ရည်မှန်းထားသော အခြေအနေကို သတ်မှတ်ပေးသည့် ဆုချီးမြှင့်မှုအလုပ်ဆောင်မှုတစ်ခုသာ ပေးခြင်းဖြင့်၊ ၎င်းတို့ကို ရှာဖွေမှုအကျိုးရှိစွာ ပြုလုပ်ရန် အခွင့်အရေးပေးခြင်းဖြင့်၊ အေးဂျင့်များကို ကောင်းမွန်သောရလဒ်ရရှိရန် လေ့ကျင့်ပေးနိုင်သည်ကို သင်ယူခဲ့ပါသည်။ ကျွန်ုပ်တို့သည် အယ်လဂိုရီနှစ်ခုကို အောင်မြင်စွာ စမ်းသပ်ခဲ့ပြီး၊ အချိန်တိုအတွင်း ကောင်းမွန်သောရလဒ်ရရှိခဲ့သည်။ သို့သော် RL သို့ ခရီးစဉ်၏ စတင်ခြင်းသာဖြစ်ပြီး၊ ပိုမိုနက်ရှိုင်းစွာ လေ့လာလိုပါက သီးခြားသင်တန်းတစ်ခုကို စဉ်းစားသင့်သည်။ + +## 🚀 စိန်ခေါ်မှု + +'အခြား RL လုပ်ငန်းများ' အပိုင်းတွင် ဖော်ပြထားသော လျှောက်လွှာများကို စူးစမ်းပြီး၊ တစ်ခုကို အကောင်အထည်ဖော်ကြည့်ပါ။ + +## [Post-lecture quiz](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) ကို ကြည့်ပါ။ + +## လုပ်ငန်းစဉ်: [တောင်တက်မော်တင် + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာရှိသောအရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/6-Other/22-DeepRL/lab/README.md b/translations/my/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..3c60c46b --- /dev/null +++ b/translations/my/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## ပတ်ဝန်းကျင် + +Mountain Car ပတ်ဝန်းကျင်သည် ကားတစ်စီးကို တောင်ကြားထဲတွင် ပိတ်မိနေသောအခြေအနေကို ဖော်ပြထားသည်။ သင့်ရည်မှန်းချက်မှာ တောင်ကြားထဲကနေ ခုန်ထွက်ပြီး အလံကို ရောက်ရှိရန်ဖြစ်သည်။ သင့်အနေဖြင့် လုပ်ဆောင်နိုင်သော လှုပ်ရှားမှုများမှာ ဘယ်ဘက်သို့ အရှိန်မြှင့်ခြင်း၊ ညာဘက်သို့ အရှိန်မြှင့်ခြင်း၊ သို့မဟုတ် ဘာမှ မလုပ်ခြင်းဖြစ်သည်။ သင်သည် ကား၏ x-ဦးတည်ချက်တလျှောက်ရှိနေသော တည်နေရာနှင့် အရှိန်ကို ကြည့်ရှုနိုင်သည်။ + +## စတင်ရန် Notebook + +ဤလက်တွေ့လေ့ကျင့်ခန်းကို [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) ဖိုင်ကို ဖွင့်ခြင်းဖြင့် စတင်ပါ။ + +## အဓိကအချက် + +ဤလက်တွေ့လေ့ကျင့်ခန်းတစ်ခုလုံးအတွင်း သင်သည် RL အယ်လဂိုရီသမ်များကို ပတ်ဝန်းကျင်အသစ်တစ်ခုတွင် လွယ်ကူစွာ လိုက်လျောညီထွေဖြစ်စေခြင်းသည် မကြာခဏ ရိုးရှင်းသောအရာဖြစ်ကြောင်း သင်ယူနိုင်ပါမည်။ OpenAI Gym သည် ပတ်ဝန်းကျင်အားလုံးအတွက် တူညီသော အင်တာဖေ့စ်ကို ပေးထားပြီး၊ အယ်လဂိုရီသမ်များသည် ပတ်ဝန်းကျင်၏ သဘာဝအပေါ် များစွာ မူတည်ထားခြင်း မရှိကြောင်းကို သင်တွေ့ရှိနိုင်ပါမည်။ သင်သည် Python ကုဒ်ကို ပြန်လည်ဖွဲ့စည်းပြီး RL အယ်လဂိုရီသမ်သို့ မည်သည့်ပတ်ဝန်းကျင်ကိုမဆို parameter အဖြစ် ပေးပို့နိုင်သည့် နည်းလမ်းဖြင့် ပြုလုပ်နိုင်ပါသည်။ + +**ဝက်ဘ်ဆိုက်မှတ်ချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူလဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/6-Other/23-MultiagentSystems/README.md b/translations/my/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..7d3e47f8 --- /dev/null +++ b/translations/my/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,124 @@ + +# Multi-Agent Systems + +**ဉာဏ်ရည်ရှိမှု** ကိုရရှိစေမည့်နည်းလမ်းများထဲမှတစ်ခုမှာ **ပေါ်ထွက်လာသော** (သို့မဟုတ် **synergetic**) နည်းလမ်းဖြစ်ပြီး၊ ၎င်းသည် အလွန်ရိုးရှင်းသော အေးဂျင့်များစွာ၏ပေါင်းစည်းလှုပ်ရှားမှုမှ စနစ်တစ်ခုလုံး၏ ပိုမိုရှုပ်ထွေးသော (သို့မဟုတ် ဉာဏ်ရည်ရှိသော) လှုပ်ရှားမှုကို ဖြစ်ပေါ်စေသည်ဆိုသည့် အခြေခံအယူအဆပေါ်တွင် တည်ရှိသည်။ သီအိုရီအရ၊ ၎င်းသည် [Collective Intelligence](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentism](https://en.wikipedia.org/wiki/Global_brain) နှင့် [Evolutionary Cybernetics](https://en.wikipedia.org/wiki/Global_brain) တို့၏ အခြေခံအယူအဆများအပေါ်တွင် တည်ရှိပြီး၊ အဆင့်အနိမ့်စနစ်များမှ သင့်တင့်စွာပေါင်းစည်းခြင်းဖြင့် အဆင့်မြင့်စနစ်များသည် တန်ဖိုးတစ်ခုခုကို ထပ်မံရရှိနိုင်သည်ဟုဆိုသည် (*metasystem transition အခြေခံအယူအဆ* ဟုခေါ်သည်)။ + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +**Multi-Agent Systems** ဆိုသော ဥာဏ်ရည်တုနည်းလမ်းသည် 1990 ခုနှစ်များတွင် အင်တာနက်နှင့် ဖြန့်ဖြူးစနစ်များ၏ တိုးတက်မှုအဖြစ်အပေါ် တုံ့ပြန်မှုအနေဖြင့် ပေါ်ထွက်လာခဲ့သည်။ ဥာဏ်ရည်တုဆိုင်ရာ ရိုးရာ 교과서တစ်ခုဖြစ်သည့် [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach) သည် Multi-agent systems ၏ ရှုထောင့်မှ ရိုးရာ AI ကို အဓိကထားဆွေးနွေးထားသည်။ + +Multi-agent နည်းလမ်း၏ အဓိကအချက်မှာ **Agent** ဆိုသော အယူအဆဖြစ်ပြီး၊ ၎င်းသည် **ပတ်ဝန်းကျင်** တစ်ခုတွင် ရှိနေပြီး၊ ၎င်းကို သိမြင်နိုင်ပြီး လှုပ်ရှားနိုင်သည်။ ၎င်းသည် အလွန်ကျယ်ပြန့်သော အဓိပ္ပာယ်တစ်ခုဖြစ်ပြီး၊ အေးဂျင့်များကို အမျိုးအစားအလိုက် ခွဲခြားနိုင်သည်- + +* ၎င်းတို့၏ အကြောင်းအရာစဉ်းစားနိုင်စွမ်းအလိုက်- + - **Reactive** အေးဂျင့်များသည် ရိုးရှင်းသော တုံ့ပြန်မှုအမျိုးအစား လှုပ်ရှားမှုများကိုသာ ပြုလုပ်သည်။ + - **Deliberative** အေးဂျင့်များသည် တစ်စုံတစ်ရာ အကြောင်းအရာစဉ်းစားမှု သို့မဟုတ် အစီအစဉ်ရေးဆွဲမှုစွမ်းရည်များကို အသုံးပြုသည်။ +* ၎င်းတို့၏ ကုဒ်ကို အကောင်အထည်ဖော်ရာနေရာအလိုက်- + - **Static** အေးဂျင့်များသည် သီးသန့်ကွန်ယက်နက်ဝက်တွင် လုပ်ဆောင်သည်။ + - **Mobile** အေးဂျင့်များသည် ၎င်းတို့၏ ကုဒ်ကို ကွန်ယက်နက်ဝက်များအကြား ရွှေ့ပြောင်းနိုင်သည်။ +* ၎င်းတို့၏ လှုပ်ရှားမှုအလိုက်- + - **Passive agents** တွင် သီးသန့်ရည်မှန်းချက်များမရှိပါ။ ၎င်းတို့သည် ပြင်ပအတုအယောင်များကို တုံ့ပြန်နိုင်သော်လည်း၊ ကိုယ်တိုင် လှုပ်ရှားမှုများကို စတင်မပြုလုပ်ပါ။ + - **Active agents** တွင် ရည်မှန်းချက်တစ်ခုခုရှိပြီး၊ ၎င်းတို့ကို အောင်မြင်ရန် ကြိုးစားသည်။ + - **Cognitive agents** တွင် ရှုပ်ထွေးသော အစီအစဉ်ရေးဆွဲမှုနှင့် အကြောင်းအရာစဉ်းစားမှု ပါဝင်သည်။ + +ယနေ့ခေတ်တွင် Multi-agent systems များကို အမျိုးမျိုးသော လျှောက်လွှာများတွင် အသုံးပြုနေကြသည်- + +* ဂိမ်းများတွင်၊ အများအပြားသော non-player characters (NPCs) များသည် AI တစ်ခုခုကို အသုံးပြုပြီး၊ ဉာဏ်ရည်ရှိသော အေးဂျင့်များအဖြစ် သတ်မှတ်နိုင်သည်။ +* ဗီဒီယိုထုတ်လုပ်မှုတွင်၊ လူအုပ်များပါဝင်သော ရှုပ်ထွေးသော 3D ရုပ်ရှင်များကို ပုံဖော်ရန် multi-agent simulation ကို အသုံးပြုသည်။ +* စနစ်မော်ဒယ်တစ်ခုတွင်၊ multi-agent နည်းလမ်းကို ရှုပ်ထွေးသော မော်ဒယ်တစ်ခု၏ လှုပ်ရှားမှုကို သရုပ်ဆောင်ရန် အသုံးပြုသည်။ ဥပမာအားဖြင့်၊ multi-agent နည်းလမ်းကို COVID-19 ရောဂါကူးစက်မှုကို ကမ္ဘာတစ်ဝှမ်းတွင် ခန့်မှန်းရန် အောင်မြင်စွာ အသုံးပြုခဲ့သည်။ ထိုနည်းလမ်းကို မြို့တွင်း ယာဉ်အသွားအလာကို မော်ဒယ်ဖော်ရန်နှင့် ယာဉ်အသွားအလာစည်းမျဉ်းများပြောင်းလဲမှုအပေါ် ၎င်း၏ တုံ့ပြန်မှုကို ကြည့်ရန်လည်း အသုံးပြုနိုင်သည်။ +* ရှုပ်ထွေးသော အော်တိုမေးရှင်းစနစ်များတွင်၊ စက်တစ်ခုစီသည် လွတ်လပ်သော အေးဂျင့်တစ်ခုအဖြစ် လှုပ်ရှားနိုင်ပြီး၊ စနစ်တစ်ခုလုံးကို ပိုမိုခိုင်မာစေသည်။ + +ကျွန်ုပ်တို့သည် multi-agent systems များကို အလွန်နက်ရှိုင်းစွာ လေ့လာရန် အချိန်မကုန်ပေ။ သို့သော် **Multi-Agent Modeling** ၏ ဥပမာတစ်ခုကို သုံးသပ်ကြည့်မည်။ + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) သည် [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) ပရိုဂရမ်းမင်းဘာသာစကား၏ ပြင်ဆင်ထားသော ဗားရှင်းအပေါ် အခြေခံထားသော multi-agent မော်ဒယ်ဖော်စနစ်ဖြစ်သည်။ ၎င်းဘာသာစကားကို ကလေးများအား ပရိုဂရမ်းမင်းအယူအဆများ သင်ကြားရန် ဖန်တီးခဲ့ပြီး၊ **turtle** ဟုခေါ်သော အေးဂျင့်တစ်ခုကို ထိန်းချုပ်ရန် ခွင့်ပြုသည်။ turtle သည် ရွေ့လျားနိုင်ပြီး၊ ၎င်း၏နောက်တွင် လမ်းကြောင်းတစ်ခုကို ချန်ထားနိုင်သည်။ ၎င်းသည် အေးဂျင့်၏ လှုပ်ရှားမှုကို နားလည်ရန် အလွန်မြင်သာသော နည်းလမ်းဖြစ်သည်။ + +NetLogo တွင် `create-turtles` command ကို အသုံးပြု၍ turtle များစွာကို ဖန်တီးနိုင်သည်။ ထို့နောက် turtle များအားလုံးကို လှုပ်ရှားရန် အမိန့်ပေးနိုင်သည် (အောက်ပါဥပမာတွင် - 10 ပွင့်ရှေ့သို့ ရွေ့ရန်): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +တစ်ဖက်သတ်လှုပ်ရှားမှုသည် စိတ်ဝင်စားဖွယ်မရှိသည့်အတွက်၊ turtle အုပ်စုများကို `ask` command ဖြင့် အမိန့်ပေးနိုင်သည်။ ဥပမာအားဖြင့်၊ တစ်စုံတစ်ရာအချက်အချာအနီးရှိသူများကိုသာ ရွေးချယ်နိုင်သည်။ ထို့အပြင်၊ `breed [cats cat]` command ကို အသုံးပြု၍ turtle များကို အမျိုးအစားအလိုက် ဖန်တီးနိုင်သည်။ ဤတွင် `cat` သည် အမျိုးအစားအမည်ဖြစ်ပြီး၊ တိကျမှုအတွက် တစ်ဝေါဟာရနှင့် အများကိန်းနှစ်မျိုးစလုံးကို သတ်မှတ်ရမည်။ + +> ✅ NetLogo ဘာသာစကားကို သင်ကြားရန် မလိုအပ်ပါ - သင်ပိုမိုလေ့လာလိုပါက [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) ကို သွားရောက်ကြည့်ရှုနိုင်သည်။ + +NetLogo ကို [ဒေါင်းလုပ်](https://ccl.northwestern.edu/netlogo/download.shtml) လုပ်ပြီး စမ်းသပ်ကြည့်နိုင်သည်။ + +### Models Library + +NetLogo ၏ အထူးကောင်းမွန်မှုတစ်ခုမှာ၊ ၎င်းတွင် စမ်းသပ်နိုင်သော မော်ဒယ်များစာကြည့်တိုက်ပါဝင်ခြင်းဖြစ်သည်။ **File → Models Library** သို့သွားပြီး၊ မော်ဒယ်အမျိုးအစားများစွာကို ရွေးချယ်နိုင်သည်။ + +NetLogo Models Library + +> Dmitry Soshnikov ၏ မော်ဒယ်စာကြည့်တိုက်၏ screenshot + +မော်ဒယ်တစ်ခုကို ဖွင့်နိုင်သည်၊ ဥပမာအားဖြင့် **Biology → Flocking** ကို ရွေးချယ်ပါ။ + +### Main Principles + +မော်ဒယ်ကို ဖွင့်ပြီးနောက်၊ သင်သည် NetLogo ၏ အဓိကမျက်နှာပြင်သို့ ရောက်ရှိမည်။ ဤသည်မှာ သားကျွဲနှင့် သိုးများ၏ လူဦးရေကို ဖော်ပြသည့် မော်ဒယ်တစ်ခုဖြစ်သည်၊ ၎င်းတွင် အရင်းအမြစ် (မြက်) သက်တမ်းရှိသည်။ + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.my.png) + +> Dmitry Soshnikov ၏ screenshot + +ဤမျက်နှာပြင်တွင် သင်ကြည့်နိုင်သည်- + +* **Interface** အပိုင်းတွင် ပါဝင်သည်- + - အေးဂျင့်များအားလုံးနေထိုင်သော အဓိကကွင်း + - ခလုတ်များ၊ slider များစသည့် ထိန်းချုပ်မှုများ + - သင် simulation ၏ parameters များကို ဖော်ပြရန် အသုံးပြုနိုင်သော ဂရပ်များ +* **Code** tab တွင် NetLogo ပရိုဂရမ်းရေးသားရန် editor ပါဝင်သည် + +အများအားဖြင့်၊ interface တွင် simulation အခြေအနေကို စတင်ရန် **Setup** ခလုတ်နှင့် လုပ်ဆောင်မှုကို စတင်ရန် **Go** ခလုတ်ပါဝင်သည်။ ၎င်းတို့ကို code တွင် အောက်ပါအတိုင်း handler များဖြင့် ကိုင်တွယ်သည်- + +``` +to go [ +... +] +``` + +NetLogo ၏ ကမ္ဘာသည် အောက်ပါ အရာဝတ္ထုများဖြင့် ဖွဲ့စည်းထားသည်- + +* **Agents** (turtles) သည် ကွင်းအနှံ့ ရွေ့လျားပြီး တစ်စုံတစ်ရာ လုပ်ဆောင်နိုင်သည်။ `ask turtles [...]` syntax ကို အသုံးပြု၍ အေးဂျင့်များအားလုံးကို command ပေးနိုင်သည်၊ [...] အတွင်းရှိကုဒ်ကို turtle mode တွင် အေးဂျင့်အားလုံးမှ တစ်ပြိုင်နက်တည်း အကောင်အထည်ဖော်သည်။ +* **Patches** သည် အေးဂျင့်များနေထိုင်သော ကွင်း၏ စတုရန်းဧရိယာများဖြစ်သည်။ သင်သည် တစ်စုံတစ်ရာ patch တွင်ရှိသော အေးဂျင့်အားလုံးကို ရည်ညွှန်းနိုင်သည်၊ သို့မဟုတ် patch အရောင်များနှင့် အခြား properties များကို ပြောင်းလဲနိုင်သည်။ `ask patches` ကို အသုံးပြု၍ patch များကို တစ်စုံတစ်ရာ လုပ်ဆောင်ရန် command ပေးနိုင်သည်။ +* **Observer** သည် ကမ္ဘာကို ထိန်းချုပ်သော အေးဂျင့်တစ်ခုဖြစ်သည်။ ခလုတ် handler များအားလုံးကို observer mode တွင် အကောင်အထည်ဖော်သည်။ + +> ✅ Multi-agent ပတ်ဝန်းကျင်၏ အလှတရားမှာ၊ turtle mode သို့မဟုတ် patch mode တွင် လုပ်ဆောင်သောကုဒ်ကို အေးဂျင့်အားလုံးမှ တစ်ပြိုင်နက်တည်း အကောင်အထည်ဖော်ခြင်းဖြစ်သည်။ ထို့ကြောင့်၊ အေးဂျင့်တစ်ဦးချင်းစီ၏ လှုပ်ရှားမှုကို ပရိုဂရမ်းရေးသားခြင်းဖြင့် simulation စနစ်တစ်ခုလုံး၏ ရှုပ်ထွေးသော လှုပ်ရှားမှုကို ဖန်တီးနိုင်သည်။ + +### Flocking + +Multi-agent လှုပ်ရှားမှု၏ ဥပမာအနေဖြင့် **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))** ကို သုံးသပ်ကြည့်မည်။ Flocking သည် ဦးတည်ချက်တစ်ခုရှိသော ငှက်အုပ်များ၏ ပျံသန်းမှုနှင့် ဆင်တူသော ရှုပ်ထွေးသော ပုံစံတစ်ခုဖြစ်သည်။ ၎င်းတို့၏ ပျံသန်းမှုကို ကြည့်ရှုသောအခါ၊ ၎င်းတို့သည် စုပေါင်းအယ်လဂိုရီသို့မဟုတ် *collective intelligence* တစ်ခုခုကို လိုက်နာနေသည်ဟု ထင်ရနိုင်သည်။ သို့သော်၊ ဤရှုပ်ထွေးသော လှုပ်ရှားမှုသည် အေးဂျင့်တစ်ဦးချင်းစီ (ဤအခါတွင် *ငှက်*) သည် ၎င်းတို့၏ အနီးအနားရှိ အေးဂျင့်များကိုသာ ကြည့်ရှုပြီး၊ အောက်ပါ စည်းမျဉ်း ၃ ခုကို လိုက်နာသောအခါ ပေါ်ထွက်လာသည်- + +* **Alignment** - အနီးအနားရှိ အေးဂျင့်များ၏ ပျံသန်းမှုဦးတည်ချက်ကို လိုက်နာသည်။ +* **Cohesion** - အနီးအနားရှိ အေးဂျင့်များ၏ ပျံသန်းမှုနေရာသို့ ရွေ့လျားရန် ကြိုးစားသည် (*အဝေးမှ ဆွဲဆောင်မှု*) +* **Separation** - အခြားငှက်များနှင့် အလွန်နီးကပ်လာသောအခါ၊ ၎င်းတို့မှ ဝေးရန် ကြိုးစားသည် (*အနီးကပ်မှ တွန်းလှန်မှု*) + +Flocking ဥပမာကို လုပ်ဆောင်ပြီး၊ ၎င်း၏ လှုပ်ရှားမှုကို ကြည့်ရှုနိုင်သည်။ Separation အတိုင်းအတာ သို့မဟုတ် Viewing Range (ငှက်တစ်ကောင်၏ မြင်နိုင်မှုအကွာအဝေး) စသည့် parameters များကိုလည်း ပြောင်းလဲနိုင်သည်။ Viewing Range ကို 0 သို့ လျှော့ချပါက၊ ငှက်အားလုံးသည် မျက်ကန်းဖြစ်ပြီး၊ flocking ရပ်တန့်သွားသည်ကို တွေ့ရမည်။ Separation ကို 0 သို့ လျှော့ချပါက၊ ငှက်အားလုံးသည် တန်းတစ်ခုအဖြစ် စုပေါင်းသွားသည်။ + +> ✅ **Code** tab သို့ ပြောင်းပြီး၊ flocking ၏ စည်းမျဉ်း ၃ ခု (alignment, cohesion, separation) ကို ကုဒ်တွင် ဘယ်နေရာတွင် အကောင်အထည်ဖော်ထားသည်ကို ကြည့်ပါ။ Sight အတွင်းရှိ အေးဂျင့်များကိုသာ ရည်ညွှန်းထားသည်ကို သတိပြုပါ။ + +### Other Models to see + +စမ်းသပ်နိုင်သော စိတ်ဝင်စားဖွယ် မော်ဒယ်အချို့မှာ- + +* **Art → Fireworks** သည် မီးပန်းတစ်ခုကို တစ်စင်းတစ်စင်းသော မီးစီးများ၏ စုပေါင်းလှုပ်ရှားမှုအဖြစ် သရုပ်ဖော်သည်။ +* **Social Science → Traffic Basic** နှင့် **Social Science → Traffic Grid** သည် မြို့တွင်း ယာဉ်အသွားအလာကို 1D နှင့် 2D Grid တွင် မော်ဒယ်ဖော်ထားသည်။ ယာဉ်တစ်စီးစီသည် အောက်ပါစည်းမျဉ်းများကို လိုက်နာသည်- + - ရှေ့တွင် နေရာလွတ်ရှိပါက - အရှိန်မြှင့် (အမြင့်ဆုံးအရှိန်အထိ) + - ရှေ့တွင် အတားအဆီးကို မြင်ပါက - အရှိန်လျှော့ (မောင်းသူ၏ မြင်နိုင်မှုအကွာအဝေးကို ပြောင်းလဲနိုင်သည်) +* **Social Science → Party** သည် cocktail party အတွင်း လူများအုပ်စုဖွဲ့မှုကို ဖ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရ အရင်းအမြစ်အဖြစ် ရှုလေ့လာသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/my/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..399dddab --- /dev/null +++ b/translations/my/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# NetLogo အလုပ်ပေးချက် + +NetLogo ရဲ့ စာကြည့်တိုက်ထဲမှာရှိတဲ့ မော်ဒယ်တစ်ခုကို ယူပြီး အမှန်တကယ်ဖြစ်ပျက်နေတဲ့ အခြေအနေတစ်ခုကို အနီးစပ်ဆုံး simulation လုပ်ပါ။ ကောင်းတဲ့ ဥပမာတစ်ခုက Alternative Visualizations ဖိုလ်ဒါထဲမှာရှိတဲ့ Virus မော်ဒယ်ကို COVID-19 ပျံ့နှံ့မှုကို မော်ဒယ်တစ်ခုအဖြစ် အသုံးပြုနိုင်ပုံကို ပြသဖို့ ပြင်ဆင်ခြင်းဖြစ်ပါတယ်။ အမှန်တကယ် ရောဂါပျံ့နှံ့မှုကို အတုယူတဲ့ မော်ဒယ်တစ်ခုကို တည်ဆောက်နိုင်ပါသလား? + +သင့်ရဲ့ အလုပ်ကို မော်ဒယ်ကို ကူးယူပြီး အမှန်တကယ်ဖြစ်ပျက်နေတဲ့ အခြေအနေနဲ့ မော်ဒယ်ရဲ့ ဆက်စပ်မှုကို ရှင်းပြတဲ့ ဗီဒီယို demo တစ်ခု တည်ဆောက်ခြင်းဖြင့် ပြသပါ။ + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/7-Ethics/README.md b/translations/my/lessons/7-Ethics/README.md new file mode 100644 index 00000000..17b9bd68 --- /dev/null +++ b/translations/my/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# အကျင့်သင့် AI နှင့် တာဝန်ရှိမှုရှိသော AI + +ဒီသင်တန်းကို အဆုံးသတ်လိုက်ဖို့နီးပါပြီ၊ အခုအချိန်မှာတော့ AI ဟာ ဒေတာထဲက ဆက်စပ်မှုတွေကို ရှာဖွေပြီး လူသားအပြုအမူတချို့ကို ပြန်လည်တူညီအောင် သင်ကြားပေးနိုင်တဲ့ သင်္ချာနည်းလမ်းတွေကို အခြေခံထားတဲ့ အရာတစ်ခုဖြစ်တယ်ဆိုတာ ရှင်းလင်းစွာနားလည်နိုင်ပြီလို့ မျှော်လင့်ပါတယ်။ ယနေ့ခေတ်မှာ AI ကို ဒေတာထဲက ပုံစံတွေကို ရှာဖွေပြီး ပြဿနာအသစ်တွေကို ဖြေရှင်းဖို့ အသုံးချနိုင်တဲ့ အလွန်အစွမ်းထက်တဲ့ ကိရိယာတစ်ခုအဖြစ် သတ်မှတ်ထားပါတယ်။ + +## [Pre-lecture quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +သို့သော်၊ သိပ္ပံစိတ်ကူးယဉ်ဇာတ်လမ်းတွေမှာတော့ AI ဟာ လူသားမျိုးနွယ်အတွက် အန္တရာယ်တစ်ခုအဖြစ် ပေါ်လာတတ်တဲ့ ဇာတ်လမ်းတွေကို မကြာခဏတွေ့ရပါတယ်။ အများအားဖြင့် ဒီဇာတ်လမ်းတွေဟာ AI က လူသားတွေနဲ့ ရင်ဆိုင်ဖို့ ဆုံးဖြတ်တဲ့ အချိန်မှာ ဖြစ်တတ်ပါတယ်။ ဒါက AI ဟာ စိတ်ခံစားမှုတစ်ခုခုရှိတယ်၊ ဒါမှမဟုတ် ဖွံ့ဖြိုးသူတွေ မမျှော်လင့်ထားတဲ့ ဆုံးဖြတ်ချက်တွေကို ချမှတ်နိုင်တယ်ဆိုတာကို အဓိပ္ပာယ်ဖွင့်ဆိုပါတယ်။ + +ဒီသင်တန်းမှာ သင်ယူခဲ့တဲ့ AI ဟာ အကြီးမားတဲ့ မက်ထရစ် သင်္ချာဆိုင်ရာ လုပ်ငန်းစဉ်တွေထက် မပိုပါဘူး။ ဒါဟာ ကျွန်တော်တို့ရဲ့ ပြဿနာတွေကို ဖြေရှင်းဖို့ အထောက်အကူဖြစ်စေတဲ့ အလွန်အစွမ်းထက်တဲ့ ကိရိယာတစ်ခုဖြစ်ပြီး၊ အခြားသော အစွမ်းထက်တဲ့ ကိရိယာတစ်ခုလိုပဲ - ကောင်းစွာအသုံးချနိုင်သလို၊ မကောင်းစွာအသုံးချနိုင်ပါတယ်။ အရေးကြီးတာကတော့ ဒါကို *မတော်တဆ* သို့မဟုတ် *ရည်ရွယ်ချက်ရှိရှိ* မတော်တဆအသုံးချမိနိုင်တာပါ။ + +## တာဝန်ရှိမှုရှိသော AI ရဲ့ မူဝါဒများ + +AI ကို မတော်တဆ သို့မဟုတ် ရည်ရွယ်ချက်ရှိရှိ မတော်တဆအသုံးမပြုမိစေရန် Microsoft က အရေးကြီးတဲ့ [တာဝန်ရှိမှုရှိသော AI ရဲ့ မူဝါဒများ](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste) ကို ဖော်ပြထားပါတယ်။ ဒီမူဝါဒတွေကို အောက်ပါ အယူအဆတွေက အခြေခံထားပါတယ် - + +* **တရားမျှတမှု** ဟာ *မော်ဒယ်အရိပ်အမြွက်* (model biases) ဆိုတဲ့ အရေးကြီးတဲ့ ပြဿနာနဲ့ ဆက်စပ်ပါတယ်။ ဒါဟာ သင်ကြားမှုအတွက် အရိပ်အမြွက်ပါဝင်တဲ့ ဒေတာကို အသုံးပြုခြင်းကြောင့် ဖြစ်တတ်ပါတယ်။ ဥပမာအားဖြင့်၊ လူတစ်ဦးအတွက် ဆော့ဖ်ဝဲဒီဗလော့ပါအလုပ်ရရှိနိုင်မှု အလားအလာကို ခန့်မှန်းတဲ့အခါ၊ သင်ကြားမှုဒေတာဟာ အမျိုးသားတွေကို ပိုမိုအားထားထားတဲ့ ဒေတာဖြစ်နိုင်တဲ့အတွက် မော်ဒယ်ဟာ အမျိုးသားတွေကို ပိုမိုနှစ်သက်တတ်ပါတယ်။ ဒေတာသင်ကြားမှုကို သေချာစွာ ချိန်ခွင့်ညှိပြီး မော်ဒယ်ကို စစ်ဆေးကာ အရိပ်အမြွက်တွေကို ရှောင်ရှားဖို့ လိုအပ်ပါတယ်၊ မော်ဒယ်ဟာ ပိုမိုသက်ဆိုင်တဲ့ အချက်အလက်တွေကို ထည့်သွင်းစဉ်းစားထားတာကို သေချာစေဖို့ လိုအပ်ပါတယ်။ +* **ယုံကြည်စိတ်ချမှုနှင့် လုံခြုံမှု**။ AI မော်ဒယ်တွေဟာ သဘာဝအရ အမှားတွေကို ပြုလုပ်နိုင်ပါတယ်။ နယူးရယ်နက်ဝက်က အလားအလာတွေကို ပြန်ပေးတတ်ပြီး၊ ဆုံးဖြတ်ချက်ချတဲ့အခါမှာ ဒီအချက်ကို ထည့်သွင်းစဉ်းစားဖို့ လိုအပ်ပါတယ်။ မော်ဒယ်တိုင်းမှာ တိကျမှုနဲ့ ပြန်လည်ခေါ်ဆောင်မှုရှိပြီး၊ အမှားအကြံပေးမှုကြောင့် ဖြစ်နိုင်တဲ့ နစ်နာမှုကို ကာကွယ်ဖို့ ဒီအချက်တွေကို နားလည်ဖို့ လိုအပ်ပါတယ်။ +* **ကိုယ်ရေးကိုယ်တာနှင့် လုံခြုံရေး** ဟာ AI-ဆိုင်ရာ အထူးသက်ဆိုင်မှုတွေ ရှိပါတယ်။ ဥပမာအားဖြင့်၊ မော်ဒယ်တစ်ခုကို သင်ကြားဖို့ ဒေတာတစ်ခုခုကို အသုံးပြုတဲ့အခါ၊ ဒီဒေတာဟာ မော်ဒယ်ထဲမှာ တစ်နည်းနည်းနဲ့ "ပေါင်းစည်း" သွားပါတယ်။ တစ်ဖက်မှာတော့ ဒါဟာ လုံခြုံရေးနဲ့ ကိုယ်ရေးကိုယ်တာကို တိုးတက်စေပါတယ်၊ ဒါပေမယ့် မော်ဒယ်ကို သင်ကြားခဲ့တဲ့ ဒေတာကို မှတ်ထားဖို့ လိုအပ်ပါတယ်။ +* **ပါဝင်မှု** ဆိုတာ AI ကို လူတွေကို အစားထိုးဖို့ မလုပ်ဘဲ၊ လူတွေကို ပိုမိုဖန်တီးနိုင်စေဖို့ အထောက်အကူဖြစ်စေဖို့ တည်ဆောက်တာကို ဆိုလိုပါတယ်။ ဒါဟာ တရားမျှတမှုနဲ့လည်း ဆက်စပ်ပါတယ်၊ အထူးသဖြင့် လူနည်းစုအဖွဲ့အစည်းတွေနဲ့ ဆက်စပ်တဲ့အခါ၊ ကျွန်တော်တို့ စုဆောင်းတဲ့ ဒေတာအများစုဟာ အရိပ်အမြွက်ပါဝင်နိုင်ပါတယ်၊ ဒီအဖွဲ့အစည်းတွေကို ထည့်သွင်းပြီး AI ကောင်းစွာကိုင်တွယ်နိုင်ဖို့ သေချာစေဖို့ လိုအပ်ပါတယ်။ +* **ပွင့်လင်းမြင်သာမှု**။ AI ကို အသုံးပြုနေတယ်ဆိုတာကို အမြဲရှင်းလင်းစွာ ဖော်ပြထားတာကို သေချာစေဖို့ လိုအပ်ပါတယ်။ ထို့အပြင်၊ အလားအလာရှိသလောက် AI စနစ်တွေဟာ *ဖွင့်ဟနိုင်* ဖြစ်စေရန် ကြိုးစားလိုက်စားရမယ်။ +* **တာဝန်ယူမှု**။ AI မော်ဒယ်တွေက ဆုံးဖြတ်ချက်တစ်ခုခုကို ထုတ်ပေးတဲ့အခါ၊ ဒီဆုံးဖြတ်ချက်တွေအပေါ် တာဝန်ယူမှုဟာ ဘယ်သူ့မှာရှိတယ်ဆိုတာ အမြဲရှင်းလင်းမဖြစ်နိုင်ပါဘူး။ AI ဆုံးဖြတ်ချက်တွေရဲ့ တာဝန်ယူမှုဟာ ဘယ်မှာရှိတယ်ဆိုတာ နားလည်နိုင်ဖို့ လိုအပ်ပါတယ်။ အရေးကြီးတဲ့ ဆုံးဖြတ်ချက်တွေကို ချမှတ်တဲ့အခါ လူသားတွေကို ထည့်သွင်းဖို့လိုအပ်ပါတယ်၊ ဒါကြောင့် တာဝန်ယူမှုဟာ လူသားတွေအပေါ်မှာရှိနေစေဖို့ လိုအပ်ပါတယ်။ + +## တာဝန်ရှိမှုရှိသော AI အတွက် ကိရိယာများ + +Microsoft က [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) ကို ဖန်တီးထားပြီး၊ အောက်ပါ ကိရိယာတွေပါဝင်ပါတယ် - + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, အောက်ပါအရာတွေပါဝင်ပါတယ် - + + - EconML - Causal Analysis အတွက် ကိရိယာ၊ which focuses on what-if questions + - DiCE - Counterfactual Analysis အတွက် ကိရိယာ၊ မော်ဒယ်ရဲ့ ဆုံးဖြတ်ချက်ကို အကျိုးသက်ရောက်စေဖို့ ဘယ်လိုအချက်တွေကို ပြောင်းလဲဖို့ လိုအပ်တယ်ဆိုတာကို ကြည့်နိုင်စေပါတယ် + +AI Ethics အကြောင်း ပိုမိုသိရှိလိုပါက၊ [ဒီသင်ခန်းစာ](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) ကို သွားရောက်လေ့လာပါ၊ Machine Learning Curriculum ထဲမှာ လုပ်ငန်းတာဝန်တွေပါဝင်ပါတယ်။ + +## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +တာဝန်ရှိမှုရှိသော AI အကြောင်း ပိုမိုလေ့လာရန် ဒီ [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/my/lessons/README.md b/translations/my/lessons/README.md new file mode 100644 index 00000000..b87c39f4 --- /dev/null +++ b/translations/my/lessons/README.md @@ -0,0 +1,17 @@ + +# အကျဉ်းချုပ် + +![အကျဉ်းချုပ်ကို ရေးဆွဲထားသော ပုံ](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.my.png) + +> [Tomomi Imura](https://twitter.com/girlie_mac) မှ ရေးဆွဲထားသော Sketchnote + +**အကြောင်းကြားချက်**: +ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။ \ No newline at end of file diff --git a/translations/my/lessons/X-Extras/X1-MultiModal/README.md b/translations/my/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..574d5a1a --- /dev/null +++ b/translations/my/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,90 @@ + +# Multi-Modal Networks + +NLP အလုပ်များကို ဖြေရှင်းရန် transformer models အောင်မြင်ပြီးနောက်၊ အတူတူ သို့မဟုတ် ဆင်တူသော architecture များကို computer vision အလုပ်များတွင်လည်း အသုံးပြုလာကြသည်။ Vision နှင့် သဘာဝဘာသာစကားစွမ်းရည်များကို *ပေါင်းစပ်* လုပ်နိုင်မည့် မော်ဒယ်များကို တည်ဆောက်ရန် စိတ်ဝင်စားမှုများလာသည်။ OpenAI မှ CLIP နှင့် DALL.E ဟုခေါ်သော ကြိုးစားမှုတစ်ခုကို ပြုလုပ်ခဲ့သည်။ + +## Contrastive Image Pre-Training (CLIP) + +CLIP ၏ အဓိကအကြောင်းအရာမှာ စာသား prompt များနှင့် ပုံတစ်ပုံကို နှိုင်းယှဉ်ပြီး ပုံသည် prompt နှင့် ဘယ်လောက်တိကျမှုရှိသည်ကို သတ်မှတ်နိုင်ရန်ဖြစ်သည်။ + +![CLIP Architecture](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.my.png) + +> *ဤ blog post မှ ပုံ [ဒီမှာ](https://openai.com/blog/clip/)* + +မော်ဒယ်ကို အင်တာနက်မှ ရရှိသော ပုံများနှင့် ၎င်းတို့၏ caption များဖြင့် သင်ကြားသည်။ Batch တစ်ခုစီအတွက် (image, text) N စုံကို ယူပြီး၊ ၎င်းတို့ကို vector ကိုယ်စားပြုချက်တစ်ခုဖြင့် ပြောင်းလဲသည်။ + +၎င်း representation များကို ပြန်လည် တွဲဖက်သည်။ Loss function ကို တစ်စုံတစ်တွဲ (ဥပမာ I နှင့် T) နှင့် ကိုက်ညီသော vector များအကြား cosine similarity ကို အများဆုံးဖြစ်အောင်လုပ်ရန်၊ အခြားစုံတွဲများအားလုံးအကြား cosine similarity ကို အနည်းဆုံးဖြစ်အောင်လုပ်ရန် သတ်မှတ်သည်။ ထို့ကြောင့် ဤနည်းလမ်းကို **contrastive** ဟုခေါ်သည်။ + +CLIP မော်ဒယ်/စာကြည့်တိုက်ကို [OpenAI GitHub](https://github.com/openai/CLIP) မှ ရယူနိုင်သည်။ ဤနည်းလမ်းကို [ဒီ blog post](https://openai.com/blog/clip/) တွင် ဖော်ပြထားပြီး၊ အသေးစိတ်ကို [ဤစာတမ်း](https://arxiv.org/pdf/2103.00020.pdf) တွင် ဖော်ပြထားသည်။ + +မော်ဒယ်ကို pre-trained ပြီးနောက်၊ ပုံများနှင့် စာသား prompt များကို batch အဖြစ်ပေးပြီး၊ tensor with probabilities ကို ပြန်လည်ရရှိမည်ဖြစ်သည်။ CLIP ကို အောက်ပါအလုပ်များအတွက် အသုံးပြုနိုင်သည်- + +**Image Classification** + +ဥပမာအားဖြင့် ပုံများကို ကြောင်၊ ခွေး၊ လူတို့အကြား ခွဲခြားရန် လိုအပ်သည်ဟု ယူဆပါစို့။ ဤအခါတွင် မော်ဒယ်ကို ပုံတစ်ပုံနှင့် စာသား prompt များ "*a picture of a cat*", "*a picture of a dog*", "*a picture of a human*" တို့ကို ပေးပါ။ 3 probabilities ရလဒ် vector တွင် အမြင့်ဆုံးတန်ဖိုးရှိသော index ကို ရွေးချယ်ရမည်ဖြစ်သည်။ + +![CLIP for Image Classification](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.my.png) + +> *ဤ blog post မှ ပုံ [ဒီမှာ](https://openai.com/blog/clip/)* + +**Text-Based Image Search** + +ထို့အပြင် ဆန့်ကျင်ဘက်လုပ်ဆောင်နိုင်သည်။ ပုံများစုတစ်ခုရှိပါက၊ ၎င်းကို မော်ဒယ်သို့ ပေးပို့ပြီး၊ စာသား prompt တစ်ခုကို ထည့်သွင်းပါ - ၎င်းသည် prompt နှင့် အနီးဆုံးပုံကို ပြန်ပေးမည်ဖြစ်သည်။ + +## ✍️ ဥပမာ: [CLIP ကို Image Classification နှင့် Image Search အတွက် အသုံးပြုခြင်း](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +CLIP ကို လက်တွေ့အသုံးပြုမှုကို ကြည့်ရန် [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook ကို ဖွင့်ပါ။ + +## Image Generation with VQGAN+ CLIP + +CLIP ကို **စာသား prompt မှ ပုံဖန်တီးခြင်း** အတွက်လည်း အသုံးပြုနိုင်သည်။ ဤအလုပ်ကို လုပ်ဆောင်ရန် **generator model** တစ်ခုလိုအပ်သည်။ ၎င်းသည် vector input တစ်ခုအပေါ် အခြေခံပြီး ပုံများကို ဖန်တီးနိုင်ရမည်ဖြစ်သည်။ ဤမော်ဒယ်များထဲမှ တစ်ခုမှာ [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN) ဖြစ်သည်။ + +VQGAN ၏ GAN (../../4-ComputerVision/10-GANs/README.md) ထက် ကွဲပြားသော အဓိကအချက်များမှာ- +* ပုံကို ဖွဲ့စည်းသော context-rich visual parts များ၏ အစဉ်လိုက်ကို ဖန်တီးရန် autoregressive transformer architecture ကို အသုံးပြုခြင်း။ ဤ visual parts များကို [CNN](../../4-ComputerVision/07-ConvNets/README.md) မှ သင်ယူသည်။ +* ပုံ၏ အစိတ်အပိုင်းများသည် "မှန်ကန်" သို့မဟုတ် "အတု" ဖြစ်ကြောင်း ရှာဖွေသော sub-image discriminator ကို အသုံးပြုခြင်း (ရိုးရာ GAN တွင် "all-or-nothing" နည်းလမ်းနှင့် ကွဲပြားသည်)။ + +VQGAN အကြောင်းကို [Taming Transformers](https://compvis.github.io/taming-transformers/) ဝဘ်ဆိုဒ်တွင် ပိုမိုလေ့လာပါ။ + +VQGAN နှင့် ရိုးရာ GAN အကြား အရေးကြီးသော ကွာခြားချက်တစ်ခုမှာ၊ နောက်ဆုံးပုံကို မည်သည့် input vector မှမဆို ရိုးရာ GAN သည် သင့်တော်သောပုံကို ဖန်တီးနိုင်သော်လည်း၊ VQGAN သည် coherence မရှိသောပုံကို ဖန်တီးနိုင်သည်။ ထို့ကြောင့် ပုံဖန်တီးမှုလုပ်ငန်းစဉ်ကို CLIP ကို အသုံးပြု၍ ထပ်မံလမ်းညွှန်ရန် လိုအပ်သည်။ + +![VQGAN+CLIP Architecture](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.my.png) + +စာသား prompt နှင့် ကိုက်ညီသော ပုံတစ်ပုံကို ဖန်တီးရန်၊ random encoding vector တစ်ခုဖြင့် စတင်ပြီး၊ ၎င်းကို VQGAN မှတဆင့် ပုံတစ်ပုံထုတ်လုပ်သည်။ ထို့နောက် CLIP ကို loss function တစ်ခုဖန်တီးရန် အသုံးပြုသည်။ ၎င်းသည် ပုံသည် စာသား prompt နှင့် ဘယ်လောက်ကိုက်ညီသည်ကို ပြသသည်။ ထို့နောက် loss ကို အနည်းဆုံးဖြစ်အောင်လုပ်ရန်၊ back propagation ကို အသုံးပြု၍ input vector parameters များကို ပြင်ဆင်သည်။ + +VQGAN+CLIP ကို အကောင်အထည်ဖော်ထားသော စာကြည့်တိုက်တစ်ခုမှာ [Pixray](http://github.com/pixray/pixray) ဖြစ်သည်။ + +![Picture produced by Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.my.png) | ![Picture produced by pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.my.png) | ![Picture produced by Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.my.png) +----|----|---- +Prompt *a closeup watercolor portrait of young male teacher of literature with a book* မှ ဖန်တီးထားသော ပုံ | Prompt *a closeup oil portrait of young female teacher of computer science with a computer* မှ ဖန်တီးထားသော ပုံ | Prompt *a closeup oil portrait of old male teacher of mathematics in front of blackboard* မှ ဖန်တီးထားသော ပုံ + +> **Artificial Teachers** စုစည်းမှုမှ ပုံများ [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E သည် GPT-3 ၏ ဗားရှင်းတစ်ခုဖြစ်ပြီး၊ prompt များမှ ပုံများကို ဖန်တီးရန် သင်ကြားထားသည်။ ၎င်းကို 12-billion parameters ဖြင့် သင်ကြားထားသည်။ + +CLIP နှင့် မတူကွဲပြားသည်မှာ၊ DALL-E သည် စာသားနှင့် ပုံကို token များ၏ single stream အဖြစ် လက်ခံသည်။ ထို့ကြောင့် prompt များစွာမှ စာသားအပေါ် အခြေခံပြီး ပုံများကို ဖန်တီးနိုင်သည်။ + +### [DALL-E 2](https://openai.com/dall-e-2) +DALL.E 1 နှင့် 2 အကြား အဓိကကွာခြားချက်မှာ၊ ၎င်းသည် ပိုမိုလက်တွေ့ကျသော ပုံများနှင့် အနုပညာကို ဖန်တီးနိုင်ခြင်းဖြစ်သည်။ + +DALL-E ဖြင့် ဖန်တီးထားသော ပုံများ၏ ဥပမာများ: +![Picture produced by 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.my.png) | ![Picture produced by 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.my.png) | ![Picture produced by 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.my.png) +----|----|---- +Prompt *a closeup watercolor portrait of young male teacher of literature with a book* မှ ဖန်တီးထားသော ပုံ | Prompt *a closeup oil portrait of young female teacher of computer science with a computer* မှ ဖန်တီးထားသော ပုံ | Prompt *a closeup oil portrait of old male teacher of mathematics in front of blackboard* မှ ဖန်တီးထားသော ပုံ + +## References + +* 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/my/lessons/sketchnotes/LICENSE.md b/translations/my/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..625306c6 --- /dev/null +++ b/translations/my/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,142 @@ + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") သည် ဥပဒေရေးရာဝန်ဆောင်မှုများ သို့မဟုတ် ဥပဒေရေးရာအကြံဉာဏ်များ ပေးသည့် အဖွဲ့အစည်းမဟုတ်ပါ။ Creative Commons ၏ အများပြည်သူလိုင်စင်များကို ဖြန့်ဝေခြင်းသည် ရှေ့နေ-ဖောက်သည်ဆက်ဆံရေး သို့မဟုတ် အခြားဆက်ဆံရေးတစ်ရပ်တည်းကို ဖန်တီးပေးခြင်းမဟုတ်ပါ။ Creative Commons သည် ၎င်း၏လိုင်စင်များနှင့် ဆက်စပ်သည့် အချက်အလက်များကို "အခြေအနေအတိုင်း" ဖြင့်သာ ရရှိနိုင်စေပါသည်။ Creative Commons သည် ၎င်း၏လိုင်စင်များ၊ ၎င်းတို့၏ စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် လိုင်စင်ရရှိထားသည့် ပစ္စည်းများ သို့မဟုတ် ဆက်စပ်သည့် အချက်အလက်များနှင့် ပတ်သက်၍ အာမခံချက်မပေးပါ။ Creative Commons သည် ၎င်းတို့ကို အသုံးပြုမှုမှ ဖြစ်ပေါ်လာသည့် နစ်နာမှုများအတွက် တာဝန်မရှိကြောင်း အပြည့်အဝ ထုတ်ဖော်ကြေညာပါသည်။ + +Creative Commons အများပြည်သူလိုင်စင်များကို အသုံးပြုခြင်း + +Creative Commons အများပြည်သူလိုင်စင်များသည် စာရေးသူများနှင့် အခြားအခွင့်အရေးပိုင်ရှင်များအတွက် မူပိုင်ခွင့်နှင့် အောက်တွင်ဖော်ပြထားသည့် အများပြည်သူလိုင်စင်အောက်တွင် သတ်မှတ်ထားသော အခြားအခွင့်အရေးများအောက်တွင် မူရင်းအလုပ်များနှင့် အခြားပစ္စည်းများကို မျှဝေရန် သတ်မှတ်ထားသော စည်းမျဉ်းနှင့် အခြေအနေများကို ပုံမှန်ပေးသည်။ အောက်ပါအချက်များသည် သတင်းအချက်အလက်ရည်ရွယ်ချက်များအတွက်သာဖြစ်ပြီး၊ ပြည့်စုံမှုမရှိသလို၊ ၎င်းတို့သည် ၎င်းတို့၏လိုင်စင်များ၏ အစိတ်အပိုင်းတစ်ခုအဖြစ် မပါဝင်ပါ။ + + လိုင်စင်ပေးသူများအတွက် အချက်အလက်များ: ၎င်းတို့၏ အများပြည်သူလိုင်စင်များကို မူပိုင်ခွင့်နှင့် အခြားအခွင့်အရေးများဖြင့် ကန့်သတ်ထားသော ပစ္စည်းများကို အသုံးပြုရန် အများပြည်သူအား ခွင့်ပြုရန် အခွင့်အာဏာရှိသူများအတွက် အသုံးပြုရန် ရည်ရွယ်ထားသည်။ ၎င်းတို့၏လိုင်စင်များသည် ပြန်လည်ရုပ်သိမ်း၍ မရပါ။ လိုင်စင်ပေးသူများသည် ၎င်းတို့ရွေးချယ်သည့် လိုင်စင်၏ စည်းမျဉ်းနှင့် အခြေအနေများကို လိုင်စင်ကို အသုံးပြုမည့်မူမီမီ သဘောတူညီမှုမရှိမီ ဖတ်ရှုနားလည်ထားရမည်။ လိုင်စင်ပေးသူများသည် လိုင်စင်ကို အသုံးပြုမည့်အခါ အများပြည်သူမှ မျှော်မှန်းထားသည့်အတိုင်း ပစ္စည်းကို ပြန်လည်အသုံးပြုနိုင်စေရန် လိုအပ်သော အခွင့်အရေးအားလုံးကို လုံခြုံစေရမည်။ လိုင်စင်မရောက်မီ ပစ္စည်းများကို သက်ဆိုင်ရာအမှတ်အသားဖြင့် ပေါ်လွင်စွာ သတ်မှတ်ထားရမည်။ ၎င်းတွင် အခြား CC-လိုင်စင်ရရှိထားသော ပစ္စည်းများ သို့မဟုတ် မူပိုင်ခွင့်အပေါ် ကန့်သတ်ချက် သို့မဟုတ် ကင်းလွတ်ခွင့်အောက်တွင် အသုံးပြုထားသော ပစ္စည်းများ ပါဝင်သည်။ လိုင်စင်ပေးသူများအတွက် အခြားအချက်အလက်များ: + wiki.creativecommons.org/Considerations_for_licensors + + အများပြည်သူအတွက် အချက်အလက်များ: ၎င်းတို့၏ အများပြည်သူလိုင်စင်တစ်ခုကို အသုံးပြုခြင်းဖြင့် လိုင်စင်ပေးသူသည် လိုင်စင်ရရှိထားသော ပစ္စည်းကို သတ်မှတ်ထားသော စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် အသုံးပြုရန် အများပြည်သူအား ခွင့်ပြုသည်။ လိုင်စင်ပေးသူ၏ ခွင့်ပြုချက်မလိုအပ်သည့် အကြောင်းတစ်စုံတစ်ရာရှိပါက—ဥပမာအားဖြင့် မူပိုင်ခွင့်အပေါ် သက်ဆိုင်ရာ ကင်းလွတ်ခွင့် သို့မဟုတ် ကန့်သတ်ချက်တစ်ခုကြောင့်—ထိုအသုံးပြုမှုသည် လိုင်စင်ဖြင့် စည်းမျဉ်းမထားပါ။ ၎င်းတို့၏လိုင်စင်များသည် မူပိုင်ခွင့်နှင့် လိုင်စင်ပေးသူ၏ အာဏာရှိသော အခြားအခွင့်အရေးများအောက်တွင်သာ ခွင့်ပြုချက်များကို ပေးသည်။ လိုင်စင်ရရှိထားသော ပစ္စည်းကို အသုံးပြုခြင်းသည် အခြားအကြောင်းတစ်စုံတစ်ရာကြောင့် အကန့်အသတ်ရှိနိုင်သည်၊ ၎င်းတွင် အခြားသူများသည် ထိုပစ္စည်းအပေါ် မူပိုင်ခွင့် သို့မဟုတ် အခြားအခွင့်အရေးများရှိကြောင်း ပါဝင်သည်။ လိုင်စင်ပေးသူသည် အထူးတောင်းဆိုမှုများကို ပြုလုပ်နိုင်သည်၊ ဥပမာအားဖြင့် အပြောင်းအလဲအားလုံးကို အမှတ်အသားပြုရန် သို့မဟုတ် ဖော်ပြရန် တောင်းဆိုခြင်းကဲ့သို့ဖြစ်သည်။ ၎င်းတို့၏လိုင်စင်များဖြင့် မလိုအပ်သော်လည်း၊ သင့်တောင်းဆိုမှုများကို သင့်လျော်သောနေရာတွင် လေးစားရန် အားပေးပါသည်။ အများပြည်သူအတွက် အခြားအချက်အလက်များ: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public License + +လိုင်စင်ရရှိထားသော အခွင့်အရေးများကို (အောက်တွင် ဖော်ပြထားသည်) အသုံးပြုခြင်းဖြင့်၊ သင်သည် Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License") ၏ စည်းမျဉ်းနှင့် အခြေအနေများကို လိုက်နာရန် သဘောတူညီပြီး၊ ၎င်းတို့ကို လိုက်နာရန် သဘောတူညီသည်။ Public License ကို သဘောတူညီချက်အဖြစ် အဓိပ္ပာယ်ဖွင့်ဆိုနိုင်သည့် အတိုင်း၊ ၎င်းစည်းမျဉ်းနှင့် အခြေအနေများကို လက်ခံခြင်းအတွက် သင့်အား လိုင်စင်ရရှိထားသော အခွင့်အရေးများကို ခွင့်ပြုသည်။ ၎င်းစည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် လိုင်စင်ပေးသူသည် လိုင်စင်ရရှိထားသော ပစ္စည်းကို ရရှိနိုင်စေရန် ရရှိသည့် အကျိုးကျေးဇူးများအတွက် သင့်အား ထိုအခွင့်အရေးများကို ခွင့်ပြုသည်။ + +Section 1 -- အဓိပ္ပာယ်ဖွင့်ဆိုချက်များ + + a. Adapted Material ဆိုသည်မှာ မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများအောက်တွင် လိုင်စင်ရရှိထားသော ပစ္စည်းကို ဘာသာပြန်ခြင်း၊ ပြောင်းလဲခြင်း၊ စီစဉ်ခြင်း၊ ပြောင်းလဲခြင်း သို့မဟုတ် မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများအောက်တွင် ခွင့်ပြုချက်လိုအပ်သည့် နည်းလမ်းဖြင့် ပြုပြင်ပြောင်းလဲထားသော ပစ္စည်းများကို ဆိုလိုသည်။ Public License ၏ ရည်ရွယ်ချက်အတွက်၊ လိုင်စင်ရရှိထားသော ပစ္စည်းသည် ဂီတအလုပ်၊ ဖျော်ဖြေမှု သို့မဟုတ် အသံဖမ်းခြင်းဖြစ်ပါက၊ လိုင်စင်ရရှိထားသော ပစ္စည်းကို ရုပ်ရှင်နှင့် အချိန်ညီစွာ တိုက်ဆိုင်စေခြင်းဖြင့် အမြဲတမ်း Adapted Material ကို ထုတ်လုပ်သည်။ + + b. Adapter's License ဆိုသည်မှာ Public License ၏ စည်းမျဉ်းနှင့် အခြေအနေများနှင့် ကိုက်ညီစွာ Adapted Material အတွက် သင့်ရဲ့ မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများကို သင့်အား သတ်မှတ်ပေးသည့် လိုင်စင်ကို ဆိုလိုသည်။ + + c. BY-SA Compatible License ဆိုသည်မှာ creativecommons.org/compatiblelicenses တွင် ဖော်ပြထားသည့် လိုင်စင်ဖြစ်ပြီး၊ Public License ၏ အဓိကအတိုင်း တူညီကြောင်း Creative Commons မှ အတည်ပြုထားသည့် လိုင်စင်ကို ဆိုလိုသည်။ + + d. Copyright and Similar Rights ဆိုသည်မှာ မူပိုင်ခွင့်နှင့်/သို့မဟုတ် မူပိုင်ခွင့်နှင့် နီးစပ်သော အခွင့်အရေးများကို ဆိုလိုသည်။ ၎င်းတွင် ဖျော်ဖြေမှု၊ ထုတ်လွှင့်မှု၊ အသံဖမ်းခြင်းနှင့် Sui Generis Database Rights အပါအဝင်ဖြစ်သည်။ ၎င်းတို့၏ အမည် သို့မဟုတ် အမျိုးအစားကို မည်သို့သတ်မှတ်ထားသည်ကို မထည့်သွင်းစဉ်းစားပါ။ Public License ၏ ရည်ရွယ်ချက်အတွက်၊ Section 2(b)(1)-(2) တွင် ဖော်ပြထားသည့် အခွင့်အရေးများသည် မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများ မဟုတ်ပါ။ + + e. Effective Technological Measures ဆိုသည်မှာ WIPO Copyright Treaty ၏ Article 11 အောက်တွင် ပြုလုပ်ထားသည့် တာဝန်များကို ဖြည့်ဆည်းသည့် ဥပဒေများအောက်တွင် သက်ဆိုင်ရာ အာဏာမရှိဘဲ ရှောင်ရှား၍ မရနိုင်သော နည်းလမ်းများကို ဆိုလိုသည်။ + + f. Exceptions and Limitations ဆိုသည်မှာ မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများအောက်တွင် သင့်အား လိုင်စင်ရရှိထားသော ပစ္စည်းကို အသုံးပြုခွင့်ပြုသည့် Fair Use, Fair Dealing သို့မဟုတ် အခြားကင်းလွတ်ခွင့် သို့မဟုတ် ကန့်သတ်ချက်များကို ဆိုလိုသည်။ + + g. License Elements ဆိုသည်မှာ Creative Commons Public License ၏ အမည်တွင် ဖော်ပြထားသည့် လိုင်စင်အင်္ဂါရပ်များကို ဆိုလိုသည်။ Public License ၏ License Elements တွင် Attribution နှင့် ShareAlike ပါဝင်သည်။ + + h. Licensed Material ဆိုသည်မှာ လိုင်စင်ပေးသူက Public License ကို သတ်မှတ်ထားသော အနုပညာ သို့မဟုတ် စာပေအလုပ်၊ ဒေတာဘေ့စ် သို့မဟုတ် အခြားပစ္စည်းများကို ဆိုလိုသည်။ + + i. Licensed Rights ဆိုသည်မှာ Public License ၏ စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် သင့်အား ခွင့်ပြုထားသည့် အခွင့်အရေးများကို ဆိုလိုသည်။ ၎င်းတွင် သင့်အား လိုင်စင်ရရှိထားသော ပစ္စည်းကို အသုံးပြုရန် သက်ဆိုင်ရာ အာဏာရှိသော မူပိုင်ခွင့်နှင့် ဆက်စပ်အခွင့်အရေးများ ပါဝင်သည်။ + + j. Licensor ဆိုသည်မှာ Public License အောက်တွင် အခွင့်အရေးများကို ခွင့်ပြုသည့် ပုဂ္ဂိုလ်(များ) သို့မဟုတ် အဖွဲ့အစည်း(များ) ကို ဆိုလိုသည်။ + + k. Share ဆိုသည်မှာ လိုင်စင်ရရှိထားသော အခွင့်အရေးများအောက်တွင် ခွင့်ပြုချက်လိုအပ်သည့် နည်းလမ်း သို့မဟုတ် လုပ်ငန်းစဉ်များဖြင့် ပစ္စည်းကို အများပြည်သူထံ ပေးပို့ခြင်းကို ဆိုလိုသည်။ ၎င်းတွင် မိတ္တူကူးခြင်း၊ အများပြည်သူရှေ့တွင် ပြသခြင်း၊ ဖျော်ဖြေခြင်း၊ ဖြန့်ဝေခြင်း၊ ဆက်သွယ်ခြင်း သို့မဟုတ် သွင်းကုန်လုပ်ခြင်းတို့ ပါဝင်သည်။ + + l. Sui Generis Database Rights ဆိုသည်မှာ Directive 96/9/EC (11 March 1996) အောက်တွင် ဒေတာဘေ့စ်များ၏ ဥပဒေရေးရာကာကွယ်မှုအတွက် သတ်မှတ်ထားသည့် မူပိုင်ခွင့်အပြင် အခြားအခွင့်အရေးများကို ဆိုလိုသည်။ + + m. You ဆိုသည်မှာ Public License အောက်တွင် Licensed Rights ကို အသုံးပြုသည့် ပုဂ္ဂိုလ် သို့မဟုတ် အဖွဲ့အစည်းကို ဆိုလိုသည်။ Your သည် ဆက်စပ်အဓိပ္ပာယ်ရှိသည်။ + +Section 2 -- လက်ဝင်မှု + +a. လိုင်စင်ပေးခြင်း + +1. Public License ၏ စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင်၊ Licensor သည် သင့်အား Licensed Material အပေါ် Licensed Rights ကို အောက်ပါအတိုင်း ခွင့်ပြုသည်: + +a. Licensed Material ကို အပိုင်းအစဖြစ်စေ၊ အပြည့်အစုံဖြစ်စေ မိတ္တူကူးခြင်းနှင့် မျှဝေခြင်း။ + +b. Adapted Material ကို ထုတ်လုပ်ခြင်း၊ မိတ္တူကူးခြင်းနှင့် မျှဝေခြင်း။ + +2. Exceptions and Limitations: Exceptions and Limitations သက်ဆိုင်ပါက၊ Public License သည် သင့်အသုံးပြုမှုအပေါ် မသက်ဆိုင်ပါ၊ သင့်အား ၎င်း၏ စည်းမျဉ်းနှင့် အခြေအနေများကို လိုက်နာရန် မလိုအပ်ပါ။ + +3. သက်တမ်း: Public License ၏ သက်တမ်းကို Section 6(a) တွင် ဖော်ပြထားသည်။ + +4. မီဒီယာနှင့် ပုံစံများ; နည်းပညာပြုပြင်မှုများ ခွင့်ပြုထားသည်: Licensor သည် သင့်အား ယခုသိရှိထားသည့် သို့မဟုတ် နောက်ပိုင်းဖန်တီးမည့် မီဒီယာနှင့် ပုံစံများတွင် Licensed Rights ကို အသုံးပြုရန် ခွင့်ပြုသည်။ + +5. Downstream recipients: + +a. Licensor မှ ပေးသော ကမ်းလှမ်းမှု -- Licensed Material: Licensed Material ၏ လက်ခံသူတိုင်းသည် Public License ၏ စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် Licensed Rights ကို အသုံးပြုရန် Licensor ၏ ကမ်းလှမ်းမှုကို အလိုအလျောက် ရရှိသည်။ + +b. Licensor မှ ပေးသော ထပ်ဆင့်ကမ်းလှမ်းမှု -- Adapted Material: Adapted Material ၏ လက်ခံသူတိုင်းသည် Adapter's License ၏ စည်းမျဉ်းနှင့် အခြေအနေများအောက်တွင် Adapted Material ကို အသုံးပြုရန် Licensor ၏ ကမ်းလှမ်းမှုကို အလိုအလျောက် ရရှိသည်။ + +c. Downstream ကန့်သတ်ချက်များ မရှိ: Licensed Material ၏ လက်ခံသူတစ်ဦးဦးမှ Licensed Rights ကို အသုံးပြုရန် ကန့်သတ်မည့် ထပ်ဆင့် သို့မဟုတ် ကွဲပြားသော စည်းမျဉ်းနှင့် အခြေအနေများကို သင့်အား မပေးနိုင်ပါ။ + +6. အတည်ပြုမှုမရှိ: Public License ၏ မည်သည့်အပိုင်းမှ သင့်အား Licensor သို့မဟုတ် Attribution ရရှိရန် သတ်မှတ်ထားသော အခြားသူများနှင့် ဆက်စပ်သည်ဟု သို့မဟုတ် အတည်ပြုသည်ဟု ဆိုရန် ခွင့်ပြုချက်မပေးပါ။ + +b. အခြားအခွင့်အရေးများ: + +1. Moral rights, such as the right of integrity, are not licensed under this Public License. +အခွင့်အရေးများ၊ သင်သည် Sui Generis Database Rights ရှိသော ဒေတာဘေ့စ် (ဒါပေမယ့် ၎င်း၏ တစ်ခုချင်းစီပါဝင်မှုများမဟုတ်ပါ) သည် Adapted Material ဖြစ်သည်၊ + +အပိုဒ် 3(b) ရည်ရွယ်ချက်များအတွက်ပါဝင်သည်။ +c. သင်သည် ဒေတာဘေ့စ်၏ အကြောင်းအရာများအားလုံး သို့မဟုတ် အရေးပါသော အပိုင်းတစ်ခုခုကို မျှဝေပါက အပိုဒ် 3(a) တွင် ဖော်ပြထားသော အခြေအနေများကို လိုက်နာရမည်။ + +ရှင်းလင်းစွာဖော်ပြရန်၊ အပိုဒ် 4 သည် သင်၏ Public License အောက်ရှိ တာဝန်များကို ဖြည့်စွက်ပေးပြီး Licensed Rights တွင် အခြား Copyright နှင့် ဆင်တူသော အခွင့်အရေးများပါဝင်သောအခါ ၎င်းတို့ကို အစားထိုးမည်မဟုတ်ပါ။ + +အပိုဒ် 5 -- အာမခံချက်များမှ ဝန်ဆောင်မှုမရှိခြင်းနှင့် တာဝန်မရှိခြင်း။ + +a. Licensor မှ သီးခြားစွာ လုပ်ဆောင်ခြင်းမရှိသမျှ၊ အလားအလာရှိသမျှအတိုင်း Licensor သည် Licensed Material ကို "as-is" နှင့် "as-available" အဖြစ်ပေးသည်။ ထို့အပြင် Licensed Material နှင့်ပတ်သက်၍ အမျိုးမျိုးသော အာမခံချက်များ (ထင်ရှားသော၊ ဖွယ်ရှိသော၊ ဥပဒေကြောင်းအရ သို့မဟုတ် အခြား) မပြုလုပ်ပါ။ ၎င်းတွင် အမည်ပိုင်ခွင့်၊ စျေးကွက်အတွင်းသင့်တော်မှု၊ သတ်မှတ်ထားသော ရည်ရွယ်ချက်အတွက် သင့်တော်မှု၊ မူပိုင်ခွင့်ချိုးဖောက်မှုမရှိခြင်း၊ ဖုံးကွယ်ထားသော သို့မဟုတ် အခြားအမှားများမရှိခြင်း၊ တိကျမှု သို့မဟုတ် အမှားများရှိခြင်း/မရှိခြင်း (သိရှိထားခြင်း သို့မဟုတ် ရှာဖွေတွေ့ရှိနိုင်ခြင်းမရှိခြင်း) အပါအဝင်ဖြစ်သည်။ အာမခံချက်များကို အပြည့်အဝ သို့မဟုတ် အစိတ်အပိုင်းတစ်ခုခုတွင် ခွင့်မပြုသောနေရာများတွင်၊ ဤအာမခံချက်မှ ဝန်ဆောင်မှုမရှိခြင်းသည် သင့်အပေါ် မရောက်နိုင်ပါ။ + +b. အလားအလာရှိသမျှအတိုင်း၊ ဤ Public License သို့မဟုတ် Licensed Material ကို အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်လာသော တိုက်ရိုက်၊ အထူး၊ တိုက်ရိုက်မဟုတ်သော၊ အခြားသော ဆုံးရှုံးမှုများ၊ ကုန်ကျစရိတ်များ၊ သို့မဟုတ် ထိခိုက်မှုများအတွက် Licensor သည် သင့်အား တာဝန်မရှိပါ။ ဤကန့်သတ်ချက်ကို အပြည့်အဝ သို့မဟုတ် အစိတ်အပိုင်းတစ်ခုခုတွင် ခွင့်မပြုသောနေရာများတွင်၊ ဤကန့်သတ်ချက်သည် သင့်အပေါ် မရောက်နိုင်ပါ။ + +c. အထက်ဖော်ပြထားသော အာမခံချက်မှ ဝန်ဆောင်မှုမရှိခြင်းနှင့် တာဝန်မရှိခြင်းကို အလားအလာရှိသမျှအတိုင်း အပြည့်အဝ ဝန်ဆောင်မှုမရှိခြင်းနှင့် တာဝန်လွှတ်ခြင်းအဖြစ် အနီးကပ်ဆုံး အဓိပ္ပာယ်ရစေရန် အဓိပ္ပာယ်ဖွင့်ဆိုရမည်။ + +အပိုဒ် 6 -- သက်တမ်းနှင့် ဖျက်သိမ်းခြင်း။ + +a. ဤ Public License သည် ဤတွင် လိုင်စင်ရရှိထားသော Copyright နှင့် ဆင်တူသော အခွင့်အရေးများ၏ သက်တမ်းအတွင်း အကျုံးဝင်သည်။ သို့သော် သင်သည် ဤ Public License ကို လိုက်နာရန် မအောင်မြင်ပါက၊ ဤ Public License အောက်ရှိ သင့်အခွင့်အရေးများသည် အလိုအလျောက် ဖျက်သိမ်းခံရမည်။ + +b. အပိုဒ် 6(a) အောက်တွင် Licensed Material ကို အသုံးပြုရန် သင့်အခွင့်အရေး ဖျက်သိမ်းခံရသောနေရာတွင်၊ ၎င်းသည် အောက်ပါအတိုင်း ပြန်လည်သက်ဝင်မည်- + +1. သင့်အမှားကို သိရှိသည့်နေ့မှ 30 ရက်အတွင်း ပြင်ဆင်ပြီးပါက အလိုအလျောက် ပြန်လည်သက်ဝင်မည်။ +2. Licensor မှ ထူးခြားစွာ ပြန်လည်သက်ဝင်ခွင့်ပြုပါက ပြန်လည်သက်ဝင်မည်။ + +ရှင်းလင်းစွာဖော်ပြရန်၊ အပိုဒ် 6(b) သည် သင့် Public License ကို ချိုးဖောက်မှုများအတွက် Licensor ၏ အခွင့်အရေးကို ထိခိုက်စေမည်မဟုတ်ပါ။ + +c. ရှင်းလင်းစွာဖော်ပြရန်၊ Licensor သည် Licensed Material ကို သီးခြားစည်းမျဉ်းများနှင့် အခြေအနေများအောက်တွင် ပေးသွင်းနိုင်သည် သို့မဟုတ် Licensed Material ကို မည်သည့်အချိန်တွင်မဆို ဖြန့်ဝေမှုရပ်နိုင်သည်။ သို့သော် ဤလုပ်ဆောင်မှုသည် ဤ Public License ကို ဖျက်သိမ်းခြင်းမဟုတ်ပါ။ + +d. အပိုဒ် 1, 5, 6, 7, နှင့် 8 သည် ဤ Public License ဖျက်သိမ်းခြင်းမှ နောက်ပိုင်းတွင်လည်း သက်တမ်းရှိနေမည်။ + +အပိုဒ် 7 -- အခြားစည်းမျဉ်းများနှင့် အခြေအနေများ။ + +a. Licensor သည် သင့်အနေဖြင့် ဆက်သွယ်သော ထပ်ဆောင်း သို့မဟုတ် ကွဲပြားသော စည်းမျဉ်းများနှင့် အခြေအနေများကို ထူးခြားစွာ သဘောတူမိပါကသာ လိုက်နာရမည်။ + +b. ဤတွင် ဖော်ပြထားခြင်းမရှိသော Licensed Material နှင့်ပတ်သက်၍ သဘောတူညီချက်များ၊ နားလည်မှုများ သို့မဟုတ် စီစဉ်မှုများသည် ဤ Public License ၏ စည်းမျဉ်းများနှင့် အခြေအနေများနှင့် သီးခြားပြီး လွတ်လပ်သည်။ + +အပိုဒ် 8 -- အဓိပ္ပာယ်ဖွင့်ဆိုခြင်း။ + +a. ရှင်းလင်းစွာဖော်ပြရန်၊ ဤ Public License သည် Licensed Material ကို ဤ Public License အောက်တွင် ခွင့်ပြုချက်မလိုဘဲ တရားဝင်အသုံးပြုနိုင်သော အခြေအနေများကို လျှော့ချခြင်း၊ ကန့်သတ်ခြင်း သို့မဟုတ် အခြေအနေများ ထည့်သွင်းခြင်းမပြုပါ။ + +b. အလားအလာရှိသမျှအတိုင်း၊ ဤ Public License ၏ စည်းမျဉ်းတစ်ခုခုကို အကောင်အထည်မဖော်နိုင်ဟု သတ်မှတ်ပါက၊ ၎င်းကို အကောင်အထည်ဖော်နိုင်ရန် လိုအပ်သည့် အနည်းဆုံးအတိုင်း ပြင်ဆင်ရမည်။ ပြင်ဆင်၍မရပါက၊ ၎င်းကို ဤ Public License မှ ဖြုတ်ပစ်ရမည်။ သို့သော် ကျန်ရှိသော စည်းမျဉ်းများနှင့် အခြေအနေများ၏ အကောင်အထည်ဖော်နိုင်မှုကို ထိခိုက်စေမည်မဟုတ်ပါ။ + +c. ဤ Public License ၏ စည်းမျဉ်း သို့မဟုတ် အခြေအနေတစ်ခုခုကို လွှတ်ပေးခြင်း သို့မဟုတ် လိုက်နာရန် မလိုအပ်ခြင်းကို Licensor မှ ထူးခြားစွာ သဘောတူမိပါကသာ လက်ခံရမည်။ + +d. ဤ Public License တွင် မည်သည့်အရာမျှ Licensor သို့မဟုတ် သင့်အပေါ် သက်ဆိုင်သော တရားစီရင်မှု သို့မဟုတ် အာဏာ၏ ဥပဒေကြောင်းအရ လုပ်ထုံးလုပ်နည်းများမှ ကင်းလွတ်ခွင့်များနှင့် အခွင့်အရေးများကို ကန့်သတ်ခြင်း သို့မဟုတ် လွှတ်ပေးခြင်းအဖြစ် ဖွင့်ဆိုခြင်းမပြုရ။ + +======================================================================= + +Creative Commons သည် ၎င်း၏ Public Licenses များ၏ ပါတီမဟုတ်ပါ။ သို့သော် Creative Commons သည် ၎င်း၏ Public Licenses များကို ၎င်း၏ ပုံနှိပ်ထုတ်ဝေမှုများတွင် အသုံးပြုရန် ရွေးချယ်နိုင်ပြီး၊ ၎င်းတို့တွင် “Licensor” အဖြစ် သတ်မှတ်မည်ဖြစ်သည်။ Creative Commons Public Licenses ၏ စာသားကို CC0 Public Domain Dedication အောက်တွင် Public Domain သို့ လွှတ်ထားသည်။ Creative Commons Public License အောက်တွင် မျှဝေထားသော အကြောင်းအရာကို ဖော်ပြရန် သို့မဟုတ် creativecommons.org/policies တွင် ဖော်ပြထားသော Creative Commons ၏ မူဝါဒများအောက်တွင် ခွင့်ပြုထားသောအခြေအနေများအပြင်၊ Creative Commons သည် ၎င်း၏ အမှတ်တံဆိပ် "Creative Commons" သို့မဟုတ် Creative Commons ၏ အခြားအမှတ်တံဆိပ် သို့မဟုတ် လိုဂိုကို ၎င်း၏ ရေးသားခွင့်ပြုချက်မရှိဘဲ အသုံးပြုရန် ခွင့်မပြုပါ။ ၎င်းတွင် Creative Commons Public Licenses များကို မလိုလားအပ်သော ပြင်ဆင်မှုများနှင့် သက်ဆိုင်သော စီစဉ်မှုများ၊ နားလည်မှုများ သို့မဟုတ် သဘောတူညီမှုများပါဝင်သည်။ ရှင်းလင်းစွာဖော်ပြရန်၊ ဤစာပိုဒ်သည် Public Licenses ၏ အစိတ်အပိုင်းမဟုတ်ပါ။ + +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/my/lessons/sketchnotes/README.md b/translations/my/lessons/sketchnotes/README.md new file mode 100644 index 00000000..0bbdf021 --- /dev/null +++ b/translations/my/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/ro/README.md b/translations/ro/README.md new file mode 100644 index 00000000..332142d6 --- /dev/null +++ b/translations/ro/README.md @@ -0,0 +1,155 @@ + +[![Licență GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Contribuitori GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Probleme GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Pull-requests GitHub](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) + +[![Observatori GitHub](https://img.shields.io/github/watchers/microsoft/AI-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/AI-For-Beginners/watchers/) +[![Fork-uri GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Stele 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) + +[![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) + +# Inteligență Artificială pentru Începători - Un Curriculum + +|![ Sketchnote de [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI Pentru Începători - _Sketchnote de [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Explorează lumea **Inteligenței Artificiale** (IA) cu curriculum-ul nostru de 12 săptămâni, 24 lecții! Include lecții practice, teste și laboratoare. Curriculum-ul este prietenos pentru începători și acoperă instrumente precum TensorFlow și PyTorch, precum și etica în IA. + +## Ce vei învăța + +**[Harta mentală a cursului](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +În acest curriculum, vei învăța: + +* Diferite abordări ale Inteligenței Artificiale, inclusiv abordarea simbolică „bună și veche” cu **Reprezentarea Cunoștințelor** și raționamentul ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Rețele Neurale** și **Învățare Profundă**, care sunt în centrul IA modernă. Vom ilustra conceptele din spatele acestor subiecte importante folosind cod în două dintre cele mai populare cadre - [TensorFlow](http://Tensorflow.org) și [PyTorch](http://pytorch.org). +* **Arhitecturi Neurale** pentru lucrul cu imagini și text. Vom acoperi modele recente, dar este posibil să nu includem cele mai avansate. +* Abordări mai puțin populare ale IA, cum ar fi **Algoritmi Genetici** și **Sisteme Multi-Agent**. + +Ce nu vom acoperi în acest curriculum: + +> [Găsește toate resursele suplimentare pentru acest curs în colecția noastră Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Cazuri de utilizare a **IA în Afaceri**. Ia în considerare parcurgerea traseului de învățare [Introducere în IA pentru utilizatorii de afaceri](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) pe Microsoft Learn sau [Școala de Afaceri IA](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), dezvoltată în colaborare cu [INSEAD](https://www.insead.edu/). +* **Învățare Automată Clasică**, care este bine descrisă în [Curriculum-ul nostru de Învățare Automată pentru Începători](http://github.com/Microsoft/ML-for-Beginners). +* Aplicații practice IA construite folosind **[Servicii Cognitive](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Pentru aceasta, îți recomandăm să începi cu modulele Microsoft Learn pentru [viziune](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [procesarea limbajului natural](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI cu Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** și altele. +* Cadre specifice ML **Cloud**, cum ar fi [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) sau [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Ia în considerare utilizarea traseelor de învățare [Construiește și operează soluții de învățare automată cu Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) și [Construiește și operează soluții de învățare automată cu Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **IA Conversațională** și **Chat Bots**. Există un traseu de învățare separat [Creează soluții IA conversaționale](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), și poți consulta și [această postare pe blog](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) pentru mai multe detalii. +* **Matematica profundă** din spatele învățării profunde. Pentru aceasta, îți recomandăm [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) de Ian Goodfellow, Yoshua Bengio și Aaron Courville, care este disponibilă online la [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Pentru o introducere ușoară în subiectele _IA în Cloud_, poți lua în considerare parcurgerea traseului de învățare [Începe cu inteligența artificială pe Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Conținut + +| | Link Lecție | PyTorch/Keras/TensorFlow | Lab | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Configurarea Cursului](./lessons/0-course-setup/setup.md) | [Configurează Mediul de Dezvoltare](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Introducere în IA**](./lessons/1-Intro/README.md) | | | +| 01 | [Introducere și Istoria IA](./lessons/1-Intro/README.md) | - | - | +| II | **IA Simbolică** | +| 02 | [Reprezentarea Cunoștințelor și Sisteme Expert](./lessons/2-Symbolic/README.md) | [Sisteme Expert](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) /[Grafic de Concepte](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Introducere în Rețele Neurale**](./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 Multi-Strat și Crearea propriului Cadru](./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 | [Introducere în Cadre (PyTorch/TensorFlow) și Supraînvățare](./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 | [**Viziune Computațională**](./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)| [Explorează Viziunea Computațională pe Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Introducere în Viziunea Computațională. 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 | [Rețele Neurale Convoluționale](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arhitecturi 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 | [Rețele pre-antrenate și Transfer Learning](./lessons/4-ComputerVision/08-TransferLearning/README.md) și [Trucuri pentru antrenare](./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) | [Laborator](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Autoencodere și 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 | [Rețele Generative Adversariale & Transfer de Stil Artistic](./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ția Obiectelor](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laborator](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Segmentare Semantică. 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 | [**Procesarea Limbajului 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) | [Explorează Procesarea Limbajului Natural pe Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Reprezentarea Textului. 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 | [Embedări semantice ale cuvintelor. Word2Vec și 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 | [Modelarea Limbajului. Antrenarea propriilor embedări](./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) | [Laborator](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rețele Neuronale Recurente](./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 | [Rețele Generative Recurente](./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) | [Laborator](./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 | [Recunoașterea Entităților Numite](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laborator](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Modele Mari de Limbaj, Programarea Prompturilor și Sarcini 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 | **Alte Tehnici 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 | [Învățare prin Recompensă Profundă](./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) | [Laborator](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sisteme Multi-Agent](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etica AI** | | | +| 24 | [Etica AI și AI Responsabil](./lessons/7-Ethics/README.md) | [Microsoft Learn: Principii AI Responsabil](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Extra** | | | +| 25 | [Rețele Multi-Modale, CLIP și 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) | | + +## Fiecare lecție conține + +* Material de citit înainte +* Jupyter Notebooks executabile, care sunt adesea specifice unui framework (**PyTorch** sau **TensorFlow**). Notebook-ul executabil conține, de asemenea, mult material teoretic, așa că pentru a înțelege subiectul trebuie să parcurgi cel puțin o versiune a notebook-ului (fie PyTorch, fie TensorFlow). +* **Laboratoare** disponibile pentru unele subiecte, care îți oferă oportunitatea de a aplica materialul învățat la o problemă specifică. +* Unele secțiuni conțin linkuri către module [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) care acoperă subiecte conexe. + +## Începe + +- Am creat o [lecție de configurare](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) pentru a te ajuta să îți configurezi mediul de dezvoltare. - Pentru educatori, am creat și o [lecție de configurare a curriculei](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Cum să [rulezi codul în VSCode sau Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Urmează acești pași: + +Forkează Repozitoriul: Apasă pe butonul "Fork" din colțul din dreapta sus al acestei pagini. + +Clonează Repozitoriul: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Nu uita să dai stea (🌟) acestui repo pentru a-l găsi mai ușor mai târziu. + +## Cunoaște alți cursanți + +Alătură-te [serverului oficial AI Discord](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) pentru a cunoaște și a face networking cu alți cursanți care urmează acest curs și pentru a primi suport. + +Dacă ai feedback despre produs sau întrebări în timp ce construiești, vizitează [Forum-ul Dezvoltatorilor Azure AI Foundry](https://aka.ms/foundry/forum) + +## Chestionare +> **O notă despre chestionare**: Toate chestionarele se află în folderul Quiz-app din etc\quiz-app. Acestea sunt legate din cadrul lecțiilor, iar aplicația de chestionare poate fi rulată local sau implementată pe Azure; urmați instrucțiunile din folderul `quiz-app`. Ele sunt localizate treptat. +## Ajutor necesar + +Ai sugestii sau ai găsit greșeli de ortografie sau cod? Deschide o problemă sau creează un pull request. + +## Mulțumiri speciale + +* **✍️ Autor principal:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrator sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Creator quiz:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Contribuitori principali:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Alte programe educaționale + +Echipa noastră produce și alte programe educaționale! Verifică: + +- [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) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/SECURITY.md b/translations/ro/SECURITY.md new file mode 100644 index 00000000..63ad66e8 --- /dev/null +++ b/translations/ro/SECURITY.md @@ -0,0 +1,49 @@ + +## Securitate + +Microsoft tratează cu maximă seriozitate securitatea produselor și serviciilor noastre software, inclusiv toate depozitele de cod sursă gestionate prin organizațiile noastre GitHub, care includ [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) și [organizațiile noastre GitHub](https://opensource.microsoft.com/). + +Dacă credeți că ați descoperit o vulnerabilitate de securitate într-un depozit deținut de Microsoft care se încadrează în [definiția Microsoft a unei vulnerabilități de securitate](https://aka.ms/opensource/security/definition), vă rugăm să ne raportați acest lucru conform indicațiilor de mai jos. + +## Raportarea problemelor de securitate + +**Vă rugăm să nu raportați vulnerabilitățile de securitate prin probleme publice pe GitHub.** + +În schimb, raportați-le către Microsoft Security Response Center (MSRC) la [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Dacă preferați să trimiteți raportul fără a vă autentifica, trimiteți un e-mail la [secure@microsoft.com](mailto:secure@microsoft.com). Dacă este posibil, criptați mesajul folosind cheia noastră PGP; o puteți descărca de pe pagina [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Ar trebui să primiți un răspuns în termen de 24 de ore. Dacă, dintr-un motiv oarecare, nu primiți un răspuns, vă rugăm să reveniți prin e-mail pentru a vă asigura că am primit mesajul inițial. Informații suplimentare pot fi găsite la [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Vă rugăm să includeți informațiile solicitate mai jos (atât cât puteți furniza) pentru a ne ajuta să înțelegem mai bine natura și amploarea problemei posibile: + + * Tipul problemei (de exemplu, depășire de buffer, injecție SQL, cross-site scripting etc.) + * Căile complete ale fișierelor sursă legate de manifestarea problemei + * Locația codului sursă afectat (tag/branch/commit sau URL direct) + * Orice configurație specială necesară pentru a reproduce problema + * Instrucțiuni pas cu pas pentru a reproduce problema + * Cod de tip proof-of-concept sau exploit (dacă este posibil) + * Impactul problemei, inclusiv modul în care un atacator ar putea exploata problema + +Aceste informații ne vor ajuta să prioritizăm mai rapid raportul dumneavoastră. + +Dacă raportați în cadrul unui program de recompense pentru bug-uri, rapoartele mai detaliate pot contribui la o recompensă mai mare. Vă rugăm să vizitați pagina [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) pentru mai multe detalii despre programele noastre active. + +## Limbi preferate + +Preferăm ca toate comunicările să fie în limba engleză. + +## Politică + +Microsoft urmează principiul [Dezvăluirii Coordonate a Vulnerabilităților](https://aka.ms/opensource/security/cvd). + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/CODE_OF_CONDUCT.md b/translations/ro/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..c5af9005 --- /dev/null +++ b/translations/ro/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Codul de Conduită pentru Proiectele Open Source Microsoft + +Acest proiect a adoptat [Codul de Conduită pentru Proiectele Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Resurse: + +- [Codul de Conduită pentru Proiectele Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Întrebări frecvente despre Codul de Conduită Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Contactați [opencode@microsoft.com](mailto:opencode@microsoft.com) pentru întrebări sau nelămuriri + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/CONTRIBUTING.md b/translations/ro/etc/CONTRIBUTING.md new file mode 100644 index 00000000..3ecf28ef --- /dev/null +++ b/translations/ro/etc/CONTRIBUTING.md @@ -0,0 +1,36 @@ + +# Contribuții + +Acest proiect acceptă contribuții și sugestii. Majoritatea contribuțiilor necesită ca tu să +accepți un Acord de Licență pentru Contribuitori (CLA), declarând că ai dreptul și că într-adevăr +ne oferi drepturile de a utiliza contribuția ta. Pentru detalii, vizitează +https://cla.microsoft.com. + +Când trimiți un pull request, un bot CLA va determina automat dacă trebuie să +furnizezi un CLA și va adăuga informațiile corespunzătoare la PR (de exemplu, etichetă, comentariu). Urmează pur și simplu +instrucțiunile oferite de bot. Va trebui să faci acest lucru o singură dată pentru toate depozitele care utilizează CLA-ul nostru. + +Acest proiect a adoptat [Codul de Conduită Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). +Pentru mai multe informații, consultă [FAQ-ul Codului de Conduită](https://opensource.microsoft.com/codeofconduct/faq/) +sau contactează [opencode@microsoft.com](mailto:opencode@microsoft.com) pentru orice întrebări sau comentarii suplimentare. + +# Căutăm Contribuții + +În prezent, căutăm activ contribuții pe următoarele subiecte: + +- [ ] Scrierea unei secțiuni despre Învățarea prin Recompensă Profundă +- [ ] Îmbunătățirea secțiunii + notebook-ului despre Detectarea Obiectelor +- [ ] PyTorch Lightning (pentru [această secțiune](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Scrierea unei secțiuni + exemple despre Recunoașterea Entităților Numite +- [ ] Crearea de exemple pentru antrenarea propriilor embedding-uri pentru [această secțiune](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/Mindmap.md b/translations/ro/etc/Mindmap.md new file mode 100644 index 00000000..46de57e5 --- /dev/null +++ b/translations/ro/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# AI + +## [Introducere în AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definiția AI + - Istoria AI + - Abordări ale AI + - De sus în jos/Symbolic + - De jos în sus/Neural + - Evolutivă + - Sinergică / AI emergentă + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [AI Symbolic](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Reprezentarea cunoștințelor + - [Sisteme Expert](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologii](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Web semantic + +## [Rețele Neurale](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) + - [Rețele Multi-Stratificate](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Introducere în Framework-uri](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) + +## [Viziune Computațională](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Pe MS Learn + - [Fundamente AI: Explorarea Viziunii Computaționale](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Viziune Computațională cu PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Viziune Computațională cu TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Introducere în Viziune Computațională. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Rețele Convoluționale](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arhitecturi CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Transfer de Învățare](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Trucuri de Antrenament](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencodere și VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Rețele Generative Adversariale](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Transfer de Stil](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detectarea Obiectelor](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentare](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Procesarea Limbajului Natural](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Pe MS Learn + - [Fundamente AI: Explorarea NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP cu PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP cu TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Reprezentarea Textului](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Embeddings Semantice](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelarea Limbajului](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rețele Neurale Recurente](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Rețele Recurente Generative](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers și BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Recunoașterea Entităților Numite](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generarea Textului și GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Alte Tehnici + - [Algoritmi Genetici](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Învățare de Reforțare Profundă](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sisteme Multi-Agent](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etica AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn despre AI Responsabilă](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Extra + - [Rețele Multimodale](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 + +**Declinarea responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/SUPPORT.md b/translations/ro/etc/SUPPORT.md new file mode 100644 index 00000000..3e121e90 --- /dev/null +++ b/translations/ro/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Suport + +## Cum să raportezi probleme și să obții ajutor + +Acest proiect folosește GitHub Issues pentru a urmări erorile și cererile de funcționalități. Te rugăm să cauți printre problemele existente înainte de a raporta altele noi, pentru a evita duplicatele. Pentru probleme noi, raportează eroarea sau cererea de funcționalitate ca o nouă problemă. + +Pentru ajutor și întrebări legate de utilizarea acestui proiect, folosește panourile de discuții. + +## Politica de suport Microsoft + +Suportul pentru acest proiect este limitat la resursele enumerate mai sus. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/TRANSLATIONS.md b/translations/ro/etc/TRANSLATIONS.md new file mode 100644 index 00000000..28dd3cdd --- /dev/null +++ b/translations/ro/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Contribuie prin traducerea lecțiilor + +Salutăm traducerile pentru lecțiile din acest curriculum! + +## Ghiduri + +Există foldere în fiecare folder de lecție și folder de introducere a lecției care conțin fișierele markdown traduse. + +> Notă, vă rugăm să nu traduceți niciun cod din fișierele cu exemple de cod; singurele lucruri care trebuie traduse sunt README, temele și chestionarele. Mulțumim! + +Fișierele traduse ar trebui să urmeze această convenție de denumire: + +**README._[language]_.md** + +unde _[language]_ este o abreviere de două litere a limbii, conform standardului ISO 639-1 (de exemplu, `README.es.md` pentru spaniolă și `README.nl.md` pentru olandeză). + +**assignment._[language]_.md** + +Similar cu fișierele README, vă rugăm să traduceți și temele. + +**Chestionare** + +1. Adăugați traducerea dvs. în aplicația de chestionare prin adăugarea unui fișier aici: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, respectând convenția corectă de denumire (en.json, fr.json). **Vă rugăm să nu localizați cuvintele 'true' sau 'false'. Mulțumim!** + +2. Adăugați codul limbii dvs. în meniul dropdown din fișierul App.vue al aplicației de chestionare. + +3. Editați [fișierul index.js al traducerilor](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) al aplicației de chestionare pentru a adăuga limba dvs. + +4. În cele din urmă, editați TOATE linkurile către chestionare din fișierele README.md traduse pentru a indica direct către chestionarul tradus: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 devine https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**VĂ MULȚUMIM** + +Apreciem cu adevărat eforturile dvs.! + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/etc/quiz-app/README.md b/translations/ro/etc/quiz-app/README.md new file mode 100644 index 00000000..6d1f558f --- /dev/null +++ b/translations/ro/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# Chestionare + +Aceste chestionare sunt chestionarele de dinainte și după lecții pentru curriculumul AI disponibil la https://aka.ms/ai-beginners + +## Adăugarea unui set de chestionare tradus + +Adaugă o traducere a chestionarelor prin crearea unor structuri de chestionare corespunzătoare în folderele `assets/translations`. Chestionarele originale se află în `assets/translations/en`. Chestionarele sunt împărțite în mai multe grupuri pe lecții. Asigură-te că numerotarea se aliniază cu secțiunea corectă a chestionarelor. În total, există 40 de chestionare în acest curriculum, numerotarea începând de la 0. + +După ce editezi traducerile, editează fișierul index.js din folderul de traduceri pentru a importa toate fișierele, urmând convențiile din `en`. + +Editează fișierul `index.js` din `assets/translations` pentru a importa noile fișiere traduse. + +Apoi, editează meniul dropdown din `App.vue` din această aplicație pentru a adăuga limba ta. Potrivește abrevierea localizată cu numele folderului pentru limba ta. + +În final, editează toate linkurile chestionarelor din lecțiile traduse, dacă există, pentru a include această localizare ca parametru de interogare: `?loc=fr`, de exemplu. + +## Configurarea proiectului + +``` +npm install +``` + +### Compilează și reîncarcă automat pentru dezvoltare + +``` +npm run serve +``` + +### Compilează și minimizează pentru producție + +``` +npm run build +``` + +### Verifică și repară fișierele + +``` +npm run lint +``` + +### Personalizează configurația + +Vezi [Referința de Configurare](https://cli.vuejs.org/config/). + +Credite: Mulțumiri pentru versiunea originală a acestei aplicații de chestionare: https://github.com/arpan45/simple-quiz-vue + +## Publicarea pe Azure + +Iată un ghid pas cu pas pentru a te ajuta să începi: + +1. Clonează un Repository GitHub +Asigură-te că codul aplicației tale web statice se află în repository-ul tău GitHub. Clonează acest repository. + +2. Creează o aplicație web statică pe Azure +- Creează un [cont Azure](http://azure.microsoft.com) +- Accesează [portalul Azure](https://portal.azure.com) +- Dă clic pe „Create a resource” și caută „Static Web App”. +- Dă clic pe „Create”. + +3. Configurează aplicația web statică +- Bazele: Subscription: Selectează abonamentul tău Azure. +- Resource Group: Creează un nou grup de resurse sau folosește unul existent. +- Name: Oferă un nume aplicației tale web statice. +- Region: Alege regiunea cea mai apropiată de utilizatorii tăi. + +- #### Detalii despre implementare: +- Source: Selectează „GitHub”. +- GitHub Account: Autorizează Azure să acceseze contul tău GitHub. +- Organization: Selectează organizația ta GitHub. +- Repository: Alege repository-ul care conține aplicația ta web statică. +- Branch: Selectează branch-ul din care vrei să implementezi. + +- #### Detalii despre build: +- Build Presets: Alege framework-ul cu care este construită aplicația ta (de exemplu, React, Angular, Vue etc.). +- App Location: Specifică folderul care conține codul aplicației tale (de exemplu, / dacă este în root). +- API Location: Dacă ai un API, specifică locația acestuia (opțional). +- Output Location: Specifică folderul unde este generat output-ul build-ului (de exemplu, build sau dist). + +4. Revizuiește și creează +Revizuiește setările și dă clic pe „Create”. Azure va configura resursele necesare și va crea un workflow GitHub Actions în repository-ul tău. + +5. Workflow GitHub Actions +Azure va crea automat un fișier workflow GitHub Actions în repository-ul tău (.github/workflows/azure-static-web-apps-.yml). Acest workflow va gestiona procesul de build și implementare. + +6. Monitorizează implementarea +Accesează tab-ul „Actions” din repository-ul tău GitHub. +Ar trebui să vezi un workflow în desfășurare. Acest workflow va construi și implementa aplicația ta web statică pe Azure. +După ce workflow-ul se finalizează, aplicația ta va fi live pe URL-ul furnizat de Azure. + +### Exemplu de fișier Workflow + +Iată un exemplu de cum ar putea arăta fișierul workflow 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 +``` + +### Resurse suplimentare +- [Documentația Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Documentația GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/0-course-setup/for-teachers.md b/translations/ro/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..b47b9a27 --- /dev/null +++ b/translations/ro/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Pentru Educatori + +Doriți să folosiți acest curriculum în sala de clasă? Vă rugăm să o faceți! + +De fapt, îl puteți utiliza direct pe GitHub, folosind GitHub Classroom. + +Pentru a face acest lucru, clonați acest repo. Va trebui să creați un repo pentru fiecare lecție, așa că va fi necesar să extrageți fiecare folder într-un repo separat. În acest fel, [GitHub Classroom](https://classroom.github.com/classrooms) poate prelua fiecare lecție separat. + +Aceste [instrucțiuni complete](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vă vor oferi o idee despre cum să vă organizați sala de clasă. + +## Utilizarea repo-ului așa cum este + +Dacă doriți să utilizați acest repo în forma sa actuală, fără a folosi GitHub Classroom, acest lucru este posibil. Va trebui să comunicați cu studenții despre lecția pe care să o parcurgeți împreună. + +Într-un format online (Zoom, Teams sau altul), puteți forma grupuri de lucru pentru chestionare și să mentorizați studenții pentru a-i pregăti să învețe. Apoi, invitați studenții să participe la chestionare și să își trimită răspunsurile ca 'issues' la un moment stabilit. Puteți face același lucru cu temele, dacă doriți ca studenții să lucreze colaborativ, în mod deschis. + +Dacă preferați un format mai privat, cereți studenților să cloneze curriculum-ul, lecție cu lecție, în propriile lor repo-uri GitHub private și să vă ofere acces. Astfel, ei pot completa chestionarele și temele în mod privat și să vi le trimită prin 'issues' pe repo-ul clasei voastre. + +Există multe modalități de a face acest lucru să funcționeze într-un format de clasă online. Vă rugăm să ne spuneți ce funcționează cel mai bine pentru voi! + +## Vă rugăm să ne împărtășiți gândurile voastre + +Dorim ca acest curriculum să funcționeze pentru voi și studenții voștri. Vă rugăm să ne oferiți feedback pe forumurile de discuții! + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/0-course-setup/how-to-run.md b/translations/ro/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..61ad341a --- /dev/null +++ b/translations/ro/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Cum să rulezi codul + +Acest curs conține multe exemple executabile și laboratoare pe care vei dori să le rulezi. Pentru a face acest lucru, ai nevoie de posibilitatea de a executa cod Python în Jupyter Notebooks, care sunt furnizate ca parte a acestui curs. Ai mai multe opțiuni pentru a rula codul: + +## Rulează local pe computerul tău + +Pentru a rula codul local pe computerul tău, trebuie să ai instalată o versiune de Python. Personal, recomand instalarea **[miniconda](https://conda.io/en/latest/miniconda.html)** - este o instalare destul de ușoară care suportă managerul de pachete `conda` pentru diferite **medii virtuale** Python. + +După ce instalezi miniconda, trebuie să clonezi repository-ul și să creezi un mediu virtual care va fi folosit pentru acest curs: + +```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 +``` + +### Utilizarea Visual Studio Code cu extensia Python + +Probabil cea mai bună metodă de a folosi acest curs este să-l deschizi în [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) cu [extensia Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note**: După ce clonezi și deschizi directorul în VS Code, acesta îți va sugera automat să instalezi extensiile Python. De asemenea, va trebui să instalezi miniconda, așa cum este descris mai sus. + +> **Note**: Dacă VS Code îți sugerează să redeschizi repository-ul într-un container, trebuie să refuzi această opțiune pentru a folosi instalarea locală de Python. + +### Utilizarea Jupyter în browser + +Poți folosi și mediul Jupyter direct din browser pe computerul tău. De fapt, atât Jupyter clasic, cât și Jupyter Hub oferă un mediu de dezvoltare destul de convenabil, cu completare automată, evidențiere a codului etc. + +Pentru a porni Jupyter local, mergi în directorul cursului și execută: + +```bash +jupyter notebook +``` +sau +```bash +jupyterhub +``` +Apoi poți naviga la orice fișier `.ipynb`, să-l deschizi și să începi să lucrezi. + +### Rularea într-un container + +O alternativă la instalarea Python ar fi rularea codului într-un container. Deoarece repository-ul nostru conține un folder special `.devcontainer` care indică cum să construiești un container pentru acest repository, VS Code îți va oferi opțiunea de a redeschide codul într-un container. Acest lucru va necesita instalarea Docker și va fi mai complex, așa că recomandăm această opțiune utilizatorilor mai experimentați. + +## Rularea în cloud + +Dacă nu dorești să instalezi Python local și ai acces la resurse cloud, o alternativă bună ar fi să rulezi codul în cloud. Există mai multe modalități de a face acest lucru: + +* Utilizând **[GitHub Codespaces](https://github.com/features/codespaces)**, care este un mediu virtual creat pentru tine pe GitHub, accesibil prin interfața browserului VS Code. Dacă ai acces la Codespaces, poți pur și simplu să dai click pe butonul **Code** din repository, să pornești un codespace și să începi să lucrezi imediat. +* Utilizând **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) oferă resurse de calcul gratuite în cloud pentru a testa codul de pe GitHub. Există un buton pe pagina principală pentru a deschide repository-ul în Binder - acest lucru te va duce rapid pe site-ul Binder, care va construi containerul subiacente și va porni interfața web Jupyter pentru tine fără probleme. + +> **Note**: Pentru a preveni utilizarea abuzivă, Binder are accesul la unele resurse web blocat. Acest lucru poate împiedica funcționarea unor coduri care descarcă modele și/sau seturi de date de pe Internet. Este posibil să fie nevoie să găsești soluții alternative. De asemenea, resursele de calcul oferite de Binder sunt destul de limitate, așa că antrenarea va fi lentă, mai ales în lecțiile mai complexe. + +## Rularea în cloud cu GPU + +Unele dintre lecțiile mai avansate din acest curs ar beneficia foarte mult de suportul GPU, deoarece altfel antrenarea va fi extrem de lentă. Există câteva opțiuni pe care le poți urma, mai ales dacă ai acces la cloud fie prin [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), fie prin instituția ta: + +* Creează o [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) și conectează-te la ea prin Jupyter. Poți clona repository-ul direct pe mașină și să începi să înveți. Mașinile virtuale din seria NC au suport pentru GPU. + +> **Note**: Unele abonamente, inclusiv Azure for Students, nu oferă suport pentru GPU implicit. Este posibil să fie nevoie să soliciți resurse GPU suplimentare printr-o cerere de suport tehnic. + +* Creează un [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) și folosește funcția Notebook de acolo. [Acest video](https://azure-for-academics.github.io/quickstart/azureml-papers/) arată cum să clonezi un repository în notebook-ul Azure ML și să începi să-l folosești. + +De asemenea, poți folosi Google Colab, care oferă suport gratuit pentru GPU, și să încarci Jupyter Notebooks acolo pentru a le executa pe rând. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/0-course-setup/setup.md b/translations/ro/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..3500b2e3 --- /dev/null +++ b/translations/ro/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Începeți cu acest Curriculum + +## Ești student? + +Începe cu următoarele resurse: + +* [Pagina Hub pentru Studenți](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Pe această pagină vei găsi resurse pentru începători, pachete pentru studenți și chiar modalități de a obține un voucher gratuit pentru certificare. Este o pagină pe care ar trebui să o salvezi în marcaje și să o verifici periodic, deoarece actualizăm conținutul cel puțin o dată pe lună. +* [Ambasadorii Microsoft Student Learn](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Alătură-te unei comunități globale de ambasadori studenți, aceasta ar putea fi calea ta către Microsoft. + +**Studenți**, există câteva moduri de a utiliza acest curriculum. În primul rând, poți citi textul și analiza codul direct pe GitHub. Dacă dorești să rulezi codul din oricare dintre notebook-uri - [citește instrucțiunile noastre](./etc/how-to-run.md) și găsește mai multe sfaturi despre cum să faci acest lucru [în această postare pe blog](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Instrucțiuni despre cum să rulezi codul din acest curriculum](./how-to-run.md) + +## Studiu individual + +Totuși, dacă dorești să urmezi cursul ca un proiect de studiu individual, îți sugerăm să faci fork întregului repo în propriul tău cont GitHub și să completezi exercițiile pe cont propriu sau cu un grup: + +* Începe cu un test preliminar înainte de lecție. +* Citește textul introductiv al lecției. +* Dacă lecția are notebook-uri suplimentare, parcurge-le, citind și rulând codul. Dacă sunt furnizate notebook-uri atât pentru TensorFlow, cât și pentru PyTorch, te poți concentra pe unul dintre ele - alege cadrul tău preferat. +* Notebook-urile conțin adesea provocări care necesită să modifici puțin codul pentru a experimenta. +* Fă testul de după lecție. +* Dacă modulul are un laborator atașat - completează sarcina. +* Vizitează [Forum de discuții](https://github.com/microsoft/AI-For-Beginners/discussions) pentru a "învăța cu voce tare". + +> Pentru studii suplimentare, recomandăm urmarea acestor module și trasee de învățare de pe [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste). + +**Profesori**, am [inclus câteva sugestii](/for-teachers.md) despre cum să utilizați acest curriculum. + +--- + +## Pedagogie + +Am ales două principii pedagogice în construirea acestui curriculum: asigurarea că este **bazat pe proiecte practice** și că include **teste frecvente**. + +Prin asigurarea faptului că conținutul este aliniat cu proiectele, procesul devine mai captivant pentru studenți, iar reținerea conceptelor este îmbunătățită. În plus, un test cu miză redusă înainte de o clasă setează intenția studentului de a învăța un subiect, în timp ce un al doilea test după clasă asigură o reținere suplimentară. Acest curriculum a fost conceput să fie flexibil și distractiv și poate fi parcurs în întregime sau parțial. Proiectele încep mici și devin din ce în ce mai complexe până la sfârșitul ciclului de 12 săptămâni. + +> **O notă despre teste**: Toate testele sunt conținute [în această aplicație](https://red-field-0a6ddfd03.1.azurestaticapps.net/), pentru un total de 50 de teste, fiecare cu câte trei întrebări. Ele sunt legate din cadrul lecțiilor, dar aplicația de teste poate fi rulată local; urmează instrucțiunile din folderul `etc/quiz-app`. + +## Acces offline + +Poți rula această documentație offline folosind [Docsify](https://docsify.js.org/#/). Fă fork acestui repo, [instalează Docsify](https://docsify.js.org/#/quickstart) pe mașina ta locală, apoi în folderul rădăcină al acestui repo, tastează `docsify serve`. Website-ul va fi servit pe portul 3000 pe localhost-ul tău: `localhost:3000`. Un pdf al curriculumului este disponibil [la acest link](../../../../../../../../../etc/pdf/readme.pdf). + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/1-Intro/README.md b/translations/ro/lessons/1-Intro/README.md new file mode 100644 index 00000000..43040067 --- /dev/null +++ b/translations/ro/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +Pe măsură ce timpul a trecut, resursele de calcul au devenit mai ieftine, iar mai multe date au devenit disponibile, astfel încât abordările bazate pe rețele neuronale au început să demonstreze performanțe remarcabile, concurând cu ființele umane în multe domenii, cum ar fi viziunea computerizată sau înțelegerea vorbirii. În ultimul deceniu, termenul Inteligență Artificială a fost folosit în mare parte ca sinonim pentru Rețele Neuronale, deoarece majoritatea succeselor AI despre care auzim se bazează pe acestea. + +Putem observa cum s-au schimbat abordările, de exemplu, în crearea unui program de calculator pentru jocul de șah: + +* Programele de șah timpurii se bazau pe căutare – un program încerca explicit să estimeze mișcările posibile ale adversarului pentru un număr dat de mișcări viitoare și selecta o mișcare optimă pe baza poziției optime care putea fi atinsă în câteva mișcări. Acest lucru a dus la dezvoltarea algoritmului de căutare numit [alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Strategiile de căutare funcționează bine spre sfârșitul jocului, unde spațiul de căutare este limitat de un număr mic de mișcări posibile. Totuși, la începutul jocului, spațiul de căutare este uriaș, iar algoritmul poate fi îmbunătățit prin învățarea din meciurile existente între jucători umani. Experimentele ulterioare au utilizat așa-numita [raționare bazată pe cazuri](https://en.wikipedia.org/wiki/Case-based_reasoning), unde programul căuta cazuri în baza de cunoștințe foarte similare cu poziția actuală din joc. +* Programele moderne care câștigă împotriva jucătorilor umani se bazează pe rețele neuronale și [învățare prin întărire](https://en.wikipedia.org/wiki/Reinforcement_learning), unde programele învață să joace exclusiv jucând mult timp împotriva lor însele și învățând din propriile greșeli – exact cum fac ființele umane atunci când învață să joace șah. Totuși, un program de calculator poate juca mult mai multe jocuri într-un timp mult mai scurt și, astfel, poate învăța mult mai rapid. + +✅ Cercetează puțin despre alte jocuri care au fost jucate de AI. + +În mod similar, putem vedea cum s-a schimbat abordarea în crearea programelor „vorbitoare” (care ar putea trece testul Turing): + +* Programele timpurii de acest tip, cum ar fi [Eliza](https://en.wikipedia.org/wiki/ELIZA), se bazau pe reguli gramaticale foarte simple și reformularea propoziției de intrare într-o întrebare. +* Asistenții moderni, cum ar fi Cortana, Siri sau Google Assistant, sunt sisteme hibride care folosesc rețele neuronale pentru a converti vorbirea în text și a recunoaște intenția noastră, apoi utilizează raționamente sau algoritmi expliciți pentru a efectua acțiunile necesare. +* În viitor, ne putem aștepta la un model complet bazat pe rețele neuronale care să gestioneze dialogul de unul singur. Familia recentă de rețele neuronale GPT și [Turing-NLG](https://turing.microsoft.com/) demonstrează un mare succes în acest sens. + +> Imagine realizată de Dmitry Soshnikov, [fotografie](https://unsplash.com/photos/r8LmVbUKgns) de [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Cercetări recente în domeniul AI + +Creșterea semnificativă a cercetărilor în rețele neuronale a început în jurul anului 2010, când seturi mari de date publice au devenit disponibile. O colecție vastă de imagini numită [ImageNet](https://en.wikipedia.org/wiki/ImageNet), care conține aproximativ 14 milioane de imagini adnotate, a dat naștere competiției [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Acuratețea ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Imagine realizată de [Dmitry Soshnikov](http://soshnikov.com) + +În 2012, [Rețelele Neuronale Convoluționale](../4-ComputerVision/07-ConvNets/README.md) au fost utilizate pentru prima dată în clasificarea imaginilor, ceea ce a dus la o scădere semnificativă a erorilor de clasificare (de la aproape 30% la 16,4%). În 2015, arhitectura ResNet de la Microsoft Research [a atins un nivel de acuratețe similar cu cel uman](https://doi.org/10.1109/ICCV.2015.123). + +De atunci, rețelele neuronale au demonstrat un comportament extrem de eficient în multe sarcini: + +--- + +Anul | Paritate cu nivelul uman atins +-----|------------------------------ +2015 | [Clasificarea imaginilor](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Recunoașterea vorbirii conversaționale](https://arxiv.org/abs/1610.05256) +2018 | [Traducerea automată a textelor](https://arxiv.org/abs/1803.05567) (chineză-engleză) +2020 | [Generarea de descrieri pentru imagini](https://arxiv.org/abs/2009.13682) + +În ultimii ani, am fost martorii unor succese uriașe cu modelele mari de limbaj, precum BERT și GPT-3. Acest lucru s-a întâmplat în principal datorită faptului că există o cantitate mare de date textuale generale disponibile, care permit antrenarea modelelor pentru a înțelege structura și semnificația textelor, pre-antrenarea lor pe colecții generale de texte și apoi specializarea acestor modele pentru sarcini mai specifice. Vom învăța mai multe despre [Procesarea Limbajului Natural](../5-NLP/README.md) mai târziu în acest curs. + +## 🚀 Provocare + +Fă un tur al internetului pentru a determina unde consideri că AI este utilizată cel mai eficient. Este într-o aplicație de hărți, un serviciu de conversie vorbire-text sau un joc video? Cercetează cum a fost construit sistemul. + +## [Chestionar post-lectură](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Recapitulare și studiu individual + +Revizuiește istoria AI și ML citind [această lecție](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Alege un element din schița de la începutul acelei lecții sau din aceasta și cercetează-l mai în detaliu pentru a înțelege contextul cultural care a influențat evoluția sa. + +**Temă**: [Game Jam](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/1-Intro/assignment.md b/translations/ro/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..f8941951 --- /dev/null +++ b/translations/ro/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Jocurile reprezintă un domeniu care a fost puternic influențat de evoluțiile în AI și ML. În această temă, scrie un scurt eseu despre un joc care îți place și care a fost influențat de evoluția AI. Ar trebui să fie un joc suficient de vechi pentru a fi fost influențat de mai multe tipuri de sisteme de procesare computerizată. Un exemplu bun este Șahul sau Go, dar poți analiza și jocuri video precum Pong sau Pac-Man. Scrie un eseu care să discute trecutul, prezentul și viitorul AI al jocului. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/2-Symbolic/README.md b/translations/ro/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..839a500b --- /dev/null +++ b/translations/ro/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Reprezentarea Cunoștințelor și Sisteme Expert + +![Rezumat al conținutului despre AI simbolic](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.ro.png) + +> Sketchnote de [Tomomi Imura](https://twitter.com/girlie_mac) + +Căutarea inteligenței artificiale se bazează pe dorința de a înțelege lumea într-un mod similar cu cel al oamenilor. Dar cum putem realiza acest lucru? + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +În primele zile ale AI, abordarea de sus în jos pentru crearea sistemelor inteligente (discutată în lecția anterioară) era populară. Ideea era să extragem cunoștințele de la oameni într-o formă care să poată fi citită de mașini și apoi să le folosim pentru a rezolva automat probleme. Această abordare se baza pe două idei mari: + +* Reprezentarea Cunoștințelor +* Raționamentul + +## Reprezentarea Cunoștințelor + +Unul dintre conceptele importante în AI simbolic este **cunoașterea**. Este important să diferențiem cunoașterea de *informație* sau *date*. De exemplu, putem spune că cărțile conțin cunoștințe, deoarece putem studia cărțile și deveni experți. Totuși, ceea ce conțin cărțile se numește de fapt *date*, iar prin citirea cărților și integrarea acestor date în modelul nostru al lumii, transformăm datele în cunoștințe. + +> ✅ **Cunoașterea** este ceva ce se află în mintea noastră și reprezintă înțelegerea noastră asupra lumii. Este obținută printr-un proces activ de **învățare**, care integrează bucăți de informație pe care le primim în modelul nostru activ al lumii. + +De cele mai multe ori, nu definim strict cunoașterea, dar o aliniem cu alte concepte conexe folosind [Piramida DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Aceasta conține următoarele concepte: + +* **Datele** sunt ceva reprezentat pe un suport fizic, cum ar fi textul scris sau cuvintele rostite. Datele există independent de ființele umane și pot fi transmise între oameni. +* **Informația** este modul în care interpretăm datele în mintea noastră. De exemplu, când auzim cuvântul *calculator*, avem o anumită înțelegere despre ce este. +* **Cunoașterea** este informația integrată în modelul nostru al lumii. De exemplu, odată ce învățăm ce este un calculator, începem să avem idei despre cum funcționează, cât costă și la ce poate fi folosit. Această rețea de concepte interconectate formează cunoașterea noastră. +* **Înțelepciunea** este un nivel și mai avansat al înțelegerii noastre asupra lumii și reprezintă *meta-cunoaștere*, adică o idee despre cum și când ar trebui folosită cunoașterea. + +*Imagine [de pe Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), realizată de Longlivetheux - Lucrare proprie, CC BY-SA 4.0* + +Astfel, problema **reprezentării cunoștințelor** este de a găsi o modalitate eficientă de a reprezenta cunoștințele într-un computer sub formă de date, pentru a le face utilizabile automat. Acest lucru poate fi văzut ca un spectru: + +![Spectrul reprezentării cunoștințelor](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.ro.png) + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +* În partea stângă, există tipuri foarte simple de reprezentări ale cunoștințelor care pot fi utilizate eficient de computere. Cea mai simplă este cea algoritmică, când cunoștințele sunt reprezentate printr-un program de calculator. Totuși, aceasta nu este cea mai bună modalitate de a reprezenta cunoștințele, deoarece nu este flexibilă. Cunoștințele din mintea noastră sunt adesea non-algoritmice. +* În partea dreaptă, există reprezentări precum textul natural. Este cea mai puternică, dar nu poate fi utilizată pentru raționament automat. + +> ✅ Gândește-te un minut la modul în care reprezinți cunoștințele în mintea ta și le transformi în notițe. Există un format anume care funcționează bine pentru tine pentru a reține informațiile? + +## Clasificarea Reprezentărilor Cunoștințelor în Computere + +Putem clasifica diferitele metode de reprezentare a cunoștințelor în computere în următoarele categorii: + +* **Reprezentările de tip rețea** se bazează pe faptul că avem o rețea de concepte interconectate în mintea noastră. Putem încerca să reproducem aceleași rețele sub formă de graf în interiorul unui computer - o așa-numită **rețea semantică**. + +1. **Triplete Obiect-Atribut-Valoare** sau **perechi atribut-valoare**. Deoarece un graf poate fi reprezentat într-un computer ca o listă de noduri și muchii, putem reprezenta o rețea semantică printr-o listă de triplete, conținând obiecte, atribute și valori. De exemplu, construim următoarele triplete despre limbajele de programare: + +Obiect | Atribut | Valoare +-------|---------|-------- +Python | este | Limbaj-Netipat +Python | inventat-de | Guido van Rossum +Python | sintaxa-bloc | indentare +Limbaj-Netipat | nu-are | definiții de tip + +> ✅ Gândește-te cum pot fi utilizate tripletele pentru a reprezenta alte tipuri de cunoștințe. + +2. **Reprezentările ierarhice** subliniază faptul că adesea creăm o ierarhie de obiecte în mintea noastră. De exemplu, știm că un canar este o pasăre, iar toate păsările au aripi. De asemenea, avem o idee despre ce culoare are de obicei un canar și ce viteză de zbor are. + + - **Reprezentarea prin cadre** se bazează pe reprezentarea fiecărui obiect sau clasă de obiecte ca un **cadru** care conține **sloturi**. Sloturile au valori implicite posibile, restricții de valoare sau proceduri stocate care pot fi apelate pentru a obține valoarea unui slot. Toate cadrele formează o ierarhie similară cu o ierarhie de obiecte din limbajele de programare orientate pe obiecte. + - **Scenariile** sunt un tip special de cadre care reprezintă situații complexe care se pot desfășura în timp. + +**Python** + +Slot | Valoare | Valoare implicită | Interval | +-----|--------|-------------------|----------| +Nume | Python | | | +Este-Un | Limbaj-Netipat | | | +Caz Variabilă | | CamelCase | | +Lungime Program | | | 5-5000 linii | +Sintaxa Bloc | Indentare | | | + +3. **Reprezentările procedurale** se bazează pe reprezentarea cunoștințelor printr-o listă de acțiuni care pot fi executate atunci când apare o anumită condiție. + - Regulile de producție sunt declarații de tipul dacă-atunci care ne permit să tragem concluzii. De exemplu, un doctor poate avea o regulă care spune că **Dacă** un pacient are febră mare **sau** un nivel ridicat de proteină C-reactivă în analiza de sânge **atunci** are o inflamație. Odată ce întâlnim una dintre condiții, putem trage o concluzie despre inflamație și apoi o putem folosi în raționamente ulterioare. + - Algoritmii pot fi considerați o altă formă de reprezentare procedurală, deși aproape niciodată nu sunt folosiți direct în sistemele bazate pe cunoștințe. + +4. **Logica** a fost propusă inițial de Aristotel ca o modalitate de a reprezenta cunoștințele universale umane. + - Logica predicatelor ca teorie matematică este prea bogată pentru a fi calculabilă, prin urmare se folosește de obicei un subset al acesteia, cum ar fi clauzele Horn utilizate în Prolog. + - Logica descriptivă este o familie de sisteme logice utilizate pentru a reprezenta și raționa despre ierarhiile de obiecte și reprezentările distribuite ale cunoștințelor, cum ar fi *web-ul semantic*. + +## Sisteme Expert + +Unul dintre primele succese ale AI simbolic au fost așa-numitele **sisteme expert** - sisteme informatice concepute să acționeze ca un expert într-un domeniu limitat de probleme. Acestea se bazau pe o **bază de cunoștințe** extrasă de la unul sau mai mulți experți umani și conțineau un **motor de inferență** care efectua un raționament pe baza acesteia. + +![Arhitectura umană](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.ro.png) | ![Sistem bazat pe cunoștințe](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.ro.png) +---------------------------------------------|------------------------------------------------ +Structura simplificată a sistemului neural uman | Arhitectura unui sistem bazat pe cunoștințe + +Sistemele expert sunt construite similar cu sistemul de raționament uman, care conține **memorie pe termen scurt** și **memorie pe termen lung**. În mod similar, în sistemele bazate pe cunoștințe distingem următoarele componente: + +* **Memoria problemei**: conține cunoștințele despre problema care este rezolvată în prezent, de exemplu temperatura sau tensiunea arterială a unui pacient, dacă are sau nu inflamație etc. Aceste cunoștințe sunt numite și **cunoștințe statice**, deoarece conțin o imagine de ansamblu a ceea ce știm în prezent despre problemă - așa-numita *stare a problemei*. +* **Baza de cunoștințe**: reprezintă cunoștințele pe termen lung despre un domeniu de probleme. Este extrasă manual de la experți umani și nu se schimbă de la o consultație la alta. Deoarece ne permite să navigăm de la o stare a problemei la alta, este numită și **cunoștințe dinamice**. +* **Motorul de inferență**: orchestrează întregul proces de căutare în spațiul stării problemei, punând întrebări utilizatorului atunci când este necesar. Este, de asemenea, responsabil pentru găsirea regulilor potrivite care trebuie aplicate fiecărei stări. + +Ca exemplu, să luăm în considerare următorul sistem expert pentru determinarea unui animal pe baza caracteristicilor sale fizice: + +![Arbore AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.ro.png) + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +Acest diagramă se numește **arbore AND-OR** și este o reprezentare grafică a unui set de reguli de producție. Desenarea unui arbore este utilă la începutul procesului de extragere a cunoștințelor de la expert. Pentru a reprezenta cunoștințele în interiorul computerului, este mai convenabil să folosim reguli: + +``` +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 +``` + +Puteți observa că fiecare condiție din partea stângă a regulii și acțiunea sunt, în esență, triplete Obiect-Atribut-Valoare (OAV). **Memoria de lucru** conține setul de triplete OAV care corespund problemei rezolvate în prezent. Un **motor de reguli** caută reguli pentru care o condiție este satisfăcută și le aplică, adăugând un alt triplet în memoria de lucru. + +> ✅ Scrie propriul tău arbore AND-OR pe un subiect care îți place! + +### Inferență înainte vs. înapoi + +Procesul descris mai sus se numește **inferență înainte**. Acesta începe cu unele date inițiale despre problemă disponibile în memoria de lucru și apoi execută următorul ciclu de raționament: + +1. Dacă atributul țintă este prezent în memoria de lucru - oprește-te și oferă rezultatul +2. Caută toate regulile a căror condiție este satisfăcută în prezent - obține **setul de conflict** al regulilor. +3. Efectuează **rezolvarea conflictelor** - selectează o regulă care va fi executată în acest pas. Pot exista diferite strategii de rezolvare a conflictelor: + - Selectează prima regulă aplicabilă din baza de cunoștințe + - Selectează o regulă aleatorie + - Selectează o regulă *mai specifică*, adică cea care îndeplinește cele mai multe condiții din partea stângă (LHS) +4. Aplică regula selectată și inserează o nouă bucată de cunoștințe în starea problemei +5. Repetă de la pasul 1. + +Totuși, în unele cazuri, s-ar putea să dorim să începem cu o cunoaștere goală despre problemă și să punem întrebări care ne vor ajuta să ajungem la concluzie. De exemplu, atunci când facem un diagnostic medical, de obicei nu efectuăm toate analizele medicale în avans înainte de a începe diagnosticarea pacientului. Mai degrabă, dorim să efectuăm analize atunci când trebuie luată o decizie. + +Acest proces poate fi modelat folosind **inferența înapoi**. Este condus de **scop** - valoarea atributului pe care încercăm să o găsim: + +1. Selectează toate regulile care ne pot oferi valoarea unui scop (adică cu scopul în partea dreaptă (RHS)) - un set de conflict +1. Dacă nu există reguli pentru acest atribut sau există o regulă care spune că ar trebui să întrebăm utilizatorul valoarea - întreabă, altfel: +1. Folosește o strategie de rezolvare a conflictelor pentru a selecta o regulă pe care o vom folosi ca *ipoteză* - vom încerca să o demonstrăm +1. Recurent, repetă procesul pentru toate atributele din partea stângă a regulii, încercând să le demonstrăm ca scopuri +1. Dacă în orice moment procesul eșuează - folosește o altă regulă la pasul 3. + +> ✅ În ce situații este mai potrivită inferența înainte? Dar inferența înapoi? + +### Implementarea Sistemelor Expert + +Sistemele expert pot fi implementate folosind diferite instrumente: + +* Programarea lor directă într-un limbaj de programare de nivel înalt. Aceasta nu este cea mai bună idee, deoarece principalul avantaj al unui sistem bazat pe cunoștințe este că cunoștințele sunt separate de inferență, iar un expert în domeniul problemei ar trebui să poată scrie reguli fără a înțelege detaliile procesului de inferență. +* Utilizarea unui **shell pentru sisteme expert**, adică un sistem conceput special pentru a fi populat cu cunoștințe folosind un limbaj de reprezentare a cunoștințelor. + +## ✍️ Exercițiu: Inferența Animalelor + +Vezi [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pentru un exemplu de implementare a unui sistem expert cu inferență înainte și înapoi. +> **Notă**: Acest exemplu este destul de simplu și oferă doar o idee despre cum arată un sistem expert. Odată ce începi să creezi un astfel de sistem, vei observa un comportament *inteligent* doar după ce ajungi la un anumit număr de reguli, în jur de 200+. La un moment dat, regulile devin prea complexe pentru a le ține pe toate în minte, iar în acel moment s-ar putea să te întrebi de ce sistemul ia anumite decizii. Totuși, o caracteristică importantă a sistemelor bazate pe cunoștințe este că poți întotdeauna *explica* exact cum a fost luată orice decizie. +## Ontologii și Web-ul Semantic + +La sfârșitul secolului al XX-lea, a existat o inițiativă de a utiliza reprezentarea cunoștințelor pentru a adnota resursele de pe Internet, astfel încât să fie posibilă găsirea resurselor care corespund unor interogări foarte specifice. Această mișcare a fost numită **Web Semantic**, și s-a bazat pe mai multe concepte: + +- O reprezentare specială a cunoștințelor bazată pe **[logici descriptive](https://en.wikipedia.org/wiki/Description_logic)** (DL). Este similară cu reprezentarea cunoștințelor în cadre, deoarece construiește o ierarhie de obiecte cu proprietăți, dar are o semantică logică formală și inferență. Există o întreagă familie de DL-uri care echilibrează între expresivitate și complexitatea algoritmică a inferenței. +- Reprezentarea distribuită a cunoștințelor, unde toate conceptele sunt reprezentate printr-un identificator global URI, făcând posibilă crearea ierarhiilor de cunoștințe care se extind pe internet. +- O familie de limbaje bazate pe XML pentru descrierea cunoștințelor: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Un concept de bază în Web-ul Semantic este conceptul de **Ontologie**. Acesta se referă la o specificație explicită a unui domeniu de problemă utilizând o reprezentare formală a cunoștințelor. Cea mai simplă ontologie poate fi doar o ierarhie de obiecte într-un domeniu de problemă, dar ontologiile mai complexe vor include reguli care pot fi utilizate pentru inferență. + +În Web-ul Semantic, toate reprezentările se bazează pe triplete. Fiecare obiect și fiecare relație sunt identificate în mod unic prin URI. De exemplu, dacă dorim să afirmăm faptul că acest Curriculum AI a fost dezvoltat de Dmitry Soshnikov pe 1 ianuarie 2022 - iată tripletele pe care le putem utiliza: + + + +``` +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 +``` + +> ✅ Aici `http://www.example.com/terms/creation-date` și `http://purl.org/dc/elements/1.1/creator` sunt câteva URI bine cunoscute și universal acceptate pentru a exprima conceptele de *creator* și *data creării*. + +Într-un caz mai complex, dacă dorim să definim o listă de creatori, putem utiliza unele structuri de date definite în RDF. + + + +> Diagramele de mai sus de [Dmitry Soshnikov](http://soshnikov.com) + +Progresul construirii Web-ului Semantic a fost cumva încetinit de succesul motoarelor de căutare și al tehnicilor de procesare a limbajului natural, care permit extragerea datelor structurate din text. Cu toate acestea, în unele domenii există încă eforturi semnificative pentru a menține ontologii și baze de cunoștințe. Câteva proiecte notabile: + +* [WikiData](https://wikidata.org/) este o colecție de baze de cunoștințe lizibile de mașini asociate cu Wikipedia. Majoritatea datelor sunt extrase din *InfoBox-uri* Wikipedia, bucăți de conținut structurat din paginile Wikipedia. Puteți [interoga](https://query.wikidata.org/) WikiData în SPARQL, un limbaj special de interogare pentru Web-ul Semantic. Iată un exemplu de interogare care afișează cele mai populare culori ale ochilor la oameni: + +```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/) este un alt efort similar cu WikiData. + +> ✅ Dacă doriți să experimentați cu construirea propriilor ontologii sau deschiderea celor existente, există un editor vizual excelent de ontologii numit [Protégé](https://protege.stanford.edu/). Descărcați-l sau utilizați-l online. + + + +*Editorul Web Protégé deschis cu ontologia Familiei Romanov. Captură de ecran de Dmitry Soshnikov* + +## ✍️ Exercițiu: O Ontologie a Familiei + +Consultați [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) pentru un exemplu de utilizare a tehnicilor Web-ului Semantic pentru a raționa despre relațiile de familie. Vom lua un arbore genealogic reprezentat în formatul comun GEDCOM și o ontologie a relațiilor de familie și vom construi un grafic al tuturor relațiilor de familie pentru un set dat de indivizi. + +## Microsoft Concept Graph + +În cele mai multe cazuri, ontologiile sunt create cu atenție manual. Cu toate acestea, este posibil și să **extragem** ontologii din date nestructurate, de exemplu, din texte în limbaj natural. + +O astfel de încercare a fost realizată de Microsoft Research și a rezultat în [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Este o colecție mare de entități grupate împreună utilizând relația de moștenire `is-a`. Permite răspunsuri la întrebări precum "Ce este Microsoft?" - răspunsul fiind ceva de genul "o companie cu probabilitatea 0.87 și un brand cu probabilitatea 0.75". + +Graficul este disponibil fie ca API REST, fie ca un fișier text mare descărcabil care listează toate perechile de entități. + +## ✍️ Exercițiu: Un Grafic de Concepte + +Încercați notebook-ul [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) pentru a vedea cum putem utiliza Microsoft Concept Graph pentru a grupa articole de știri în mai multe categorii. + +## Concluzie + +În zilele noastre, AI este adesea considerată sinonimă cu *Învățarea Automată* sau *Rețelele Neuronale*. Cu toate acestea, o ființă umană manifestă și raționament explicit, ceva ce rețelele neuronale nu gestionează în prezent. În proiectele din lumea reală, raționamentul explicit este încă utilizat pentru a îndeplini sarcini care necesită explicații sau capacitatea de a modifica comportamentul sistemului într-un mod controlat. + +## 🚀 Provocare + +În notebook-ul Ontologiei Familiei asociat acestei lecții, există oportunitatea de a experimenta cu alte relații de familie. Încercați să descoperiți noi conexiuni între persoanele din arborele genealogic. + +## [Quiz post-lectură](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Recapitulare și Studiu Individual + +Faceți cercetări pe internet pentru a descoperi domenii în care oamenii au încercat să cuantifice și să codifice cunoștințele. Aruncați o privire asupra Taxonomiei lui Bloom și mergeți înapoi în istorie pentru a învăța cum oamenii au încercat să înțeleagă lumea lor. Explorați munca lui Linnaeus pentru a crea o taxonomie a organismelor și observați modul în care Dmitri Mendeleev a creat o modalitate de a descrie și grupa elementele chimice. Ce alte exemple interesante puteți găsi? + +**Temă**: [Construiți o Ontologie](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/2-Symbolic/assignment.md b/translations/ro/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..c549ca17 --- /dev/null +++ b/translations/ro/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Construiește o Ontologie + +Construirea unei baze de cunoștințe înseamnă să categorisești un model care reprezintă fapte despre un subiect. Alege un subiect - cum ar fi o persoană, un loc sau un obiect - și apoi construiește un model al acelui subiect. Folosește unele dintre tehnicile și strategiile de construire a modelelor descrise în această lecție. Un exemplu ar fi crearea unei ontologii a unui living cu mobilier, lumini și așa mai departe. Cum diferă livingul de bucătărie? De baie? Cum știi că este un living și nu o sufragerie? Folosește [Protégé](https://protege.stanford.edu/) pentru a construi ontologia ta. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..5b4a048f --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Introducere în Rețele Neuronale: Perceptron + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Una dintre primele încercări de a implementa ceva similar cu o rețea neuronală modernă a fost realizată de Frank Rosenblatt de la Cornell Aeronautical Laboratory în 1957. A fost o implementare hardware numită "Mark-1", concepută pentru a recunoaște figuri geometrice primitive, cum ar fi triunghiuri, pătrate și cercuri. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Imagini [de pe Wikipedia](https://en.wikipedia.org/wiki/Perceptron) + +O imagine de intrare era reprezentată de o matrice de 20x20 fotocelule, astfel încât rețeaua neuronală avea 400 de intrări și o ieșire binară. O rețea simplă conținea un singur neuron, numit și **unitate logică de prag**. Greutățile rețelei neuronale funcționau ca potențiometre care necesitau ajustare manuală în timpul fazei de antrenament. + +> ✅ Un potențiometru este un dispozitiv care permite utilizatorului să ajusteze rezistența unui circuit. + +> The New York Times a scris despre perceptron la acea vreme: *embrionul unui computer electronic pe care [Marina] se așteaptă să fie capabil să meargă, să vorbească, să vadă, să scrie, să se reproducă și să fie conștient de propria existență.* + +## Modelul Perceptron + +Să presupunem că avem N caracteristici în modelul nostru, caz în care vectorul de intrare ar fi un vector de dimensiune N. Un perceptron este un model de **clasificare binară**, adică poate distinge între două clase de date de intrare. Vom presupune că pentru fiecare vector de intrare x, ieșirea perceptronului nostru va fi fie +1, fie -1, în funcție de clasă. Ieșirea va fi calculată folosind formula: + +y(x) = f(wTx) + +unde f este o funcție de activare de tip treaptă + + + + +## Antrenarea Perceptronului + +Pentru a antrena un perceptron, trebuie să găsim un vector de greutăți w care clasifică corect majoritatea valorilor, adică rezultă în cea mai mică **eroare**. Această eroare E este definită prin **criteriul perceptronului** în următorul mod: + +E(w) = -∑wTxiti + +unde: + +* suma este luată pentru acele puncte de date de antrenament i care duc la clasificarea greșită +* xi reprezintă datele de intrare, iar ti este fie -1, fie +1 pentru exemplele negative și pozitive, respectiv. + +Acest criteriu este considerat ca o funcție a greutăților w, și trebuie să îl minimizăm. Adesea, se folosește o metodă numită **descendentă a gradientului**, în care începem cu niște greutăți inițiale w(0), și apoi la fiecare pas actualizăm greutățile conform formulei: + +w(t+1) = w(t) - η∇E(w) + +Aici η este așa-numita **rată de învățare**, iar ∇E(w) denotă **gradientul** lui E. După ce calculăm gradientul, ajungem la + +w(t+1) = w(t) + ∑ηxiti + +Algoritmul în Python arată astfel: + +```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 +``` + +## Concluzie + +În această lecție, ai învățat despre perceptron, care este un model de clasificare binară, și cum să îl antrenezi folosind un vector de greutăți. + +## 🚀 Provocare + +Dacă dorești să încerci să construiești propriul perceptron, încearcă [acest laborator pe Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), care folosește [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Recapitulare și Studiu Individual + +Pentru a vedea cum putem folosi perceptronul pentru a rezolva o problemă simplă, precum și probleme din viața reală, și pentru a continua să înveți - accesează notebook-ul [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Iată un [articol interesant despre perceptron](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Temă](lab/README.md) + +În această lecție, am implementat un perceptron pentru o sarcină de clasificare binară și l-am folosit pentru a clasifica între două cifre scrise de mână. În acest laborator, ți se cere să rezolvi problema clasificării cifrelor în întregime, adică să determini care cifră este cel mai probabil să corespundă unei imagini date. + +* [Instrucțiuni](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..99f51028 --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Clasificare Multi-Clasă cu Perceptron + +Temă de laborator din [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Sarcină + +Folosind codul dezvoltat în această lecție pentru clasificarea binară a cifrelor scrise de mână din MNIST, creați un clasificator multi-clasă care să poată recunoaște orice cifră. Calculați acuratețea clasificării pe setul de date de antrenament și test, și afișați matricea de confuzie. + +## Sugestii + +1. Pentru fiecare cifră, creați un set de date pentru clasificarea binară „această cifră vs. toate celelalte cifre”. +1. Antrenați 10 perceptroni diferiți pentru clasificarea binară (câte unul pentru fiecare cifră). +1. Definiți o funcție care să clasifice o cifră de intrare. + +> **Sugestie**: Dacă combinăm greutățile tuturor celor 10 perceptroni într-o singură matrice, ar trebui să putem aplica toți cei 10 perceptroni asupra cifrelor de intrare printr-o singură înmulțire de matrice. Cifra cea mai probabilă poate fi apoi găsită doar aplicând operația `argmax` pe ieșire. + +## Notebook de Pornire + +Începeți laboratorul deschizând [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..d9c3b74e --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Introducere în Rețele Neurale. Perceptron Multi-Stratificat + +În secțiunea anterioară, ai învățat despre cel mai simplu model de rețea neurală - perceptronul cu un singur strat, un model liniar de clasificare pentru două clase. + +În această secțiune vom extinde acest model într-un cadru mai flexibil, care ne va permite să: + +* realizăm **clasificare multi-clasă** pe lângă clasificarea pentru două clase +* rezolvăm **probleme de regresie** pe lângă clasificare +* separăm clase care nu sunt separabile liniar + +De asemenea, vom dezvolta propriul nostru cadru modular în Python, care ne va permite să construim diferite arhitecturi de rețele neurale. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizarea Învățării Automate + +Să începem prin formalizarea problemei de Învățare Automată. Să presupunem că avem un set de date de antrenament **X** cu etichete **Y**, și trebuie să construim un model *f* care să facă predicții cât mai precise. Calitatea predicțiilor este măsurată prin **funcția de pierdere** ℒ. Următoarele funcții de pierdere sunt utilizate frecvent: + +* Pentru probleme de regresie, când trebuie să prezicem un număr, putem folosi **eroarea absolută** ∑i|f(x(i))-y(i)| sau **eroarea pătratică** ∑i(f(x(i))-y(i))2 +* Pentru clasificare, folosim **pierdere 0-1** (care este, în esență, același lucru cu **acuratețea** modelului) sau **pierdere logistică**. + +Pentru perceptronul cu un singur strat, funcția *f* a fost definită ca o funcție liniară *f(x)=wx+b* (aici *w* este matricea de greutăți, *x* este vectorul de caracteristici de intrare, iar *b* este vectorul de bias). Pentru diferite arhitecturi de rețele neurale, această funcție poate lua o formă mai complexă. + +> În cazul clasificării, este adesea de dorit să obținem probabilitățile claselor corespunzătoare ca ieșire a rețelei. Pentru a converti numere arbitrare în probabilități (de exemplu, pentru a normaliza ieșirea), folosim frecvent funcția **softmax** σ, iar funcția *f* devine *f(x)=σ(wx+b)* + +În definiția lui *f* de mai sus, *w* și *b* sunt numite **parametri** θ=⟨*w,b*⟩. Având setul de date ⟨**X**,**Y**⟩, putem calcula o eroare generală pe întregul set de date ca o funcție de parametri θ. + +> ✅ **Scopul antrenării rețelei neurale este de a minimiza eroarea prin variarea parametrilor θ** + +## Optimizarea prin Gradient Descent + +Există o metodă bine-cunoscută de optimizare a funcțiilor numită **gradient descent**. Ideea este că putem calcula o derivată (în cazul multidimensional numită **gradient**) a funcției de pierdere în raport cu parametrii și să variem parametrii astfel încât eroarea să scadă. Acest lucru poate fi formalizat astfel: + +* Inițializați parametrii cu niște valori aleatorii w(0), b(0) +* Repetați următorul pas de mai multe ori: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +În timpul antrenării, pașii de optimizare ar trebui să fie calculați luând în considerare întregul set de date (amintiți-vă că pierderea este calculată ca o sumă pentru toate exemplele de antrenament). Totuși, în practică, luăm porțiuni mici ale setului de date numite **minibatch-uri** și calculăm gradientele pe baza unui subset de date. Deoarece subsetul este ales aleator de fiecare dată, această metodă este numită **stochastic gradient descent** (SGD). + +## Perceptron Multi-Stratificat și Backpropagation + +Rețeaua cu un singur strat, așa cum am văzut mai sus, este capabilă să clasifice clase separabile liniar. Pentru a construi un model mai bogat, putem combina mai multe straturi ale rețelei. Matematic, aceasta ar însemna că funcția *f* ar avea o formă mai complexă și va fi calculată în mai mulți pași: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Aici, α este o **funcție de activare non-liniară**, σ este o funcție softmax, iar parametrii θ=<*w1,b1,w2,b2*>. + +Algoritmul gradient descent ar rămâne același, dar ar fi mai dificil de calculat gradientele. Având regula de diferențiere în lanț, putem calcula derivatele astfel: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Regula de diferențiere în lanț este utilizată pentru a calcula derivatele funcției de pierdere în raport cu parametrii. + +Observați că partea din stânga a tuturor acestor expresii este aceeași, și astfel putem calcula eficient derivatele începând de la funcția de pierdere și mergând "înapoi" prin graful computațional. Astfel, metoda de antrenare a unui perceptron multi-stratificat este numită **backpropagation**, sau 'backprop'. + +compute graph + +> TODO: citarea imaginii + +> ✅ Vom acoperi backprop în mult mai multe detalii în exemplul nostru din notebook. + +## Concluzie + +În această lecție, am construit propria noastră bibliotecă de rețele neurale și am folosit-o pentru o sarcină simplă de clasificare bidimensională. + +## 🚀 Provocare + +În notebook-ul însoțitor, vei implementa propriul cadru pentru construirea și antrenarea perceptronilor multi-stratificați. Vei putea vedea în detaliu cum funcționează rețelele neurale moderne. + +Accesează notebook-ul [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) și parcurge-l. + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Recapitulare și Studiu Individual + +Backpropagation este un algoritm comun utilizat în AI și ML, merită studiat [în detaliu](https://wikipedia.org/wiki/Backpropagation) + +## [Temă](lab/README.md) + +În acest laborator, ți se cere să folosești cadrul pe care l-ai construit în această lecție pentru a rezolva clasificarea cifrelor scrise de mână din MNIST. + +* [Instrucțiuni](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..81ab5de1 --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Clasificarea MNIST cu Propriul Cadru + +Temă de laborator din [Curriculumul AI pentru Începători](https://github.com/microsoft/ai-for-beginners). + +## Sarcină + +Rezolvă problema de clasificare a cifrelor scrise de mână din MNIST folosind perceptron cu 1, 2 și 3 straturi. Utilizează cadrul de rețea neuronală pe care l-am dezvoltat în lecție. + +## Notebook de Pornire + +Începe laboratorul deschizând [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Întrebări + +Ca rezultat al acestui laborator, încearcă să răspunzi la următoarele întrebări: + +- Funcția de activare între straturi influențează performanța rețelei? +- Avem nevoie de o rețea cu 2 sau 3 straturi pentru această sarcină? +- Ai întâmpinat probleme în antrenarea rețelei? Mai ales pe măsură ce numărul de straturi a crescut. +- Cum se comportă greutățile rețelei în timpul antrenării? Poți să plotezi valoarea absolută maximă a greutăților în funcție de epocă pentru a înțelege relația. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de oameni. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..89934099 --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Frameworkuri pentru Rețele Neurale + +Așa cum am învățat deja, pentru a putea antrena rețele neurale eficient, trebuie să facem două lucruri: + +* Să operăm pe tensori, de exemplu să înmulțim, să adunăm și să calculăm funcții precum sigmoid sau softmax +* Să calculăm derivatele tuturor expresiilor, pentru a efectua optimizarea prin gradient descent + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Deși biblioteca `numpy` poate face prima parte, avem nevoie de un mecanism pentru a calcula derivatele. În [frameworkul nostru](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) pe care l-am dezvoltat în secțiunea anterioară, a trebuit să programăm manual toate funcțiile derivate în metoda `backward`, care realizează backpropagation. Ideal, un framework ar trebui să ne ofere posibilitatea de a calcula derivatele pentru *orice expresie* pe care o putem defini. + +Un alt aspect important este să putem efectua calcule pe GPU sau pe alte unități de calcul specializate, cum ar fi [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Antrenarea rețelelor neurale profunde necesită *foarte multe* calcule, iar posibilitatea de a paraleliza aceste calcule pe GPU-uri este esențială. + +> ✅ Termenul 'paralelizare' înseamnă distribuirea calculelor pe mai multe dispozitive. + +În prezent, cele mai populare frameworkuri pentru rețele neurale sunt: [TensorFlow](http://TensorFlow.org) și [PyTorch](https://pytorch.org/). Ambele oferă o API de nivel scăzut pentru a opera cu tensori atât pe CPU, cât și pe GPU. Pe lângă API-ul de nivel scăzut, există și API-uri de nivel înalt, numite [Keras](https://keras.io/) și [PyTorch Lightning](https://pytorchlightning.ai/) corespunzător. + +API de nivel scăzut | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +--------------------|-------------------------------------|-------------------------------- +API de nivel înalt | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**API-urile de nivel scăzut** din ambele frameworkuri permit construirea așa-numitelor **grafuri computaționale**. Acest graf definește cum să se calculeze rezultatul (de obicei funcția de pierdere) cu parametrii de intrare dați și poate fi trimis pentru calcul pe GPU, dacă este disponibil. Există funcții pentru a diferenția acest graf computațional și a calcula derivatele, care pot fi apoi utilizate pentru optimizarea parametrilor modelului. + +**API-urile de nivel înalt** consideră rețelele neurale ca o **succesiune de straturi** și fac construirea majorității rețelelor neurale mult mai ușoară. Antrenarea modelului necesită de obicei pregătirea datelor și apoi apelarea unei funcții `fit` pentru a realiza procesul. + +API-ul de nivel înalt permite construirea rapidă a rețelelor neurale tipice fără a fi nevoie să ne preocupăm de multe detalii. În același timp, API-ul de nivel scăzut oferă mult mai mult control asupra procesului de antrenare și, astfel, este utilizat frecvent în cercetare, atunci când se lucrează cu noi arhitecturi de rețele neurale. + +Este important de înțeles că se pot folosi ambele API-uri împreună, de exemplu, se poate dezvolta propria arhitectură de strat de rețea folosind API-ul de nivel scăzut și apoi se poate utiliza în cadrul unei rețele mai mari construite și antrenate cu API-ul de nivel înalt. Sau se poate defini o rețea folosind API-ul de nivel înalt ca o succesiune de straturi și apoi se poate utiliza propriul ciclu de antrenare de nivel scăzut pentru a efectua optimizarea. Ambele API-uri folosesc aceleași concepte de bază și sunt concepute să funcționeze bine împreună. + +## Învățare + +În acest curs, oferim majoritatea conținutului atât pentru PyTorch, cât și pentru TensorFlow. Puteți alege frameworkul preferat și să parcurgeți doar notebook-urile corespunzătoare. Dacă nu sunteți sigur ce framework să alegeți, citiți câteva discuții pe internet despre **PyTorch vs. TensorFlow**. De asemenea, puteți arunca o privire asupra ambelor frameworkuri pentru a înțelege mai bine. + +Acolo unde este posibil, vom folosi API-uri de nivel înalt pentru simplitate. Totuși, considerăm că este important să înțelegem cum funcționează rețelele neurale de la bază, astfel încât la început vom lucra cu API-ul de nivel scăzut și tensori. Cu toate acestea, dacă doriți să începeți rapid și nu vreți să petreceți mult timp învățând aceste detalii, puteți sări direct la notebook-urile cu API de nivel înalt. + +## ✍️ Exerciții: Frameworkuri + +Continuați învățarea în următoarele notebook-uri: + +API de nivel scăzut | [Notebook TensorFlow+Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +--------------------|-------------------------------------|-------------------------------- +API de nivel înalt | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +După ce stăpâniți frameworkurile, să recapitulăm noțiunea de overfitting. + +# Overfitting + +Overfitting este un concept extrem de important în învățarea automată și este esențial să îl înțelegem corect! + +Luați în considerare următoarea problemă de aproximare a 5 puncte (reprezentate prin `x` pe graficele de mai jos): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.ro.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.ro.jpg) +-------------------------|-------------------------- +**Model liniar, 2 parametri** | **Model neliniar, 7 parametri** +Eroare de antrenare = 5.3 | Eroare de antrenare = 0 +Eroare de validare = 5.1 | Eroare de validare = 20 + +* În stânga, vedem o aproximare bună cu o linie dreaptă. Deoarece numărul de parametri este adecvat, modelul înțelege corect distribuția punctelor. +* În dreapta, modelul este prea puternic. Deoarece avem doar 5 puncte și modelul are 7 parametri, acesta se poate ajusta astfel încât să treacă prin toate punctele, făcând eroarea de antrenare să fie 0. Totuși, acest lucru împiedică modelul să înțeleagă corect tiparul datelor, astfel încât eroarea de validare este foarte mare. + +Este foarte important să găsim un echilibru corect între complexitatea modelului (numărul de parametri) și numărul de exemple de antrenare. + +## De ce apare overfitting + + * Date de antrenare insuficiente + * Model prea puternic + * Prea mult zgomot în datele de intrare + +## Cum să detectăm overfitting + +Așa cum se poate vedea din graficul de mai sus, overfitting-ul poate fi detectat printr-o eroare de antrenare foarte mică și o eroare de validare mare. De obicei, în timpul antrenării, vom vedea atât erorile de antrenare, cât și cele de validare începând să scadă, iar apoi, la un moment dat, eroarea de validare poate înceta să scadă și să înceapă să crească. Acesta va fi un semn de overfitting și un indicator că ar trebui să oprim antrenarea în acel moment (sau cel puțin să facem un snapshot al modelului). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.ro.png) + +## Cum să prevenim overfitting-ul + +Dacă observați că apare overfitting, puteți face unul dintre următoarele: + + * Creșteți cantitatea de date de antrenare + * Reduceți complexitatea modelului + * Utilizați o tehnică de [regularizare](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), cum ar fi [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), pe care o vom analiza mai târziu. + +## Overfitting și Compromisul Bias-Variance + +Overfitting-ul este de fapt un caz al unei probleme mai generale în statistică numită [Compromisul Bias-Variance](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Dacă luăm în considerare sursele posibile de eroare în modelul nostru, putem observa două tipuri de erori: + +* **Erorile de bias** sunt cauzate de algoritmul nostru care nu poate captura corect relația dintre datele de antrenare. Acest lucru poate rezulta din faptul că modelul nostru nu este suficient de puternic (**underfitting**). +* **Erorile de variație**, care sunt cauzate de modelul care aproximează zgomotul din datele de intrare în loc de relația semnificativă (**overfitting**). + +În timpul antrenării, eroarea de bias scade (pe măsură ce modelul nostru învață să aproximeze datele), iar eroarea de variație crește. Este important să oprim antrenarea - fie manual (când detectăm overfitting), fie automat (prin introducerea regularizării) - pentru a preveni overfitting-ul. + +## Concluzie + +În această lecție, ați învățat despre diferențele dintre diversele API-uri pentru cele două frameworkuri AI cele mai populare, TensorFlow și PyTorch. În plus, ați învățat despre un subiect foarte important, overfitting-ul. + +## 🚀 Provocare + +În notebook-urile însoțitoare, veți găsi 'sarcini' la final; parcurgeți notebook-urile și completați sarcinile. + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Recapitulare & Studiu Individual + +Faceți cercetări pe următoarele subiecte: + +- TensorFlow +- PyTorch +- Overfitting + +Întrebați-vă următoarele: + +- Care este diferența dintre TensorFlow și PyTorch? +- Care este diferența dintre overfitting și underfitting? + +## [Temă](lab/README.md) + +În acest laborator, vi se cere să rezolvați două probleme de clasificare folosind rețele complet conectate cu unul sau mai multe straturi, utilizând PyTorch sau TensorFlow. + +* [Instrucțiuni](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..de806643 --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Clasificare cu PyTorch/TensorFlow + +Temă de laborator din [Curriculum AI pentru Începători](https://github.com/microsoft/ai-for-beginners). + +## Sarcină + +Rezolvă două probleme de clasificare utilizând rețele complet conectate cu un singur strat și cu mai multe straturi, folosind PyTorch sau TensorFlow: + +1. Problema de **[clasificare Iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - un exemplu de problemă cu date de intrare tabelare, care poate fi abordată prin metode clasice de învățare automată. Scopul tău este să clasifici irisele în 3 clase, pe baza a 4 parametri numerici. +1. Problema de clasificare a cifrelor scrise de mână **MNIST**, pe care am văzut-o anterior. + +Încearcă diferite arhitecturi de rețele pentru a obține cea mai bună acuratețe posibilă. + +## Notebook de Pornire + +Începe laboratorul deschizând [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/3-NeuralNetworks/README.md b/translations/ro/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..13e8c04f --- /dev/null +++ b/translations/ro/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Introducere în Rețele Neurale + +![Rezumat al conținutului Introducere în Rețele Neurale într-un desen](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.ro.png) + +Așa cum am discutat în introducere, unul dintre modurile de a obține inteligență este să antrenăm un **model de computer** sau un **creier artificial**. Începând cu mijlocul secolului XX, cercetătorii au încercat diferite modele matematice, până când, în ultimii ani, această direcție s-a dovedit a fi extrem de reușită. Aceste modele matematice ale creierului sunt numite **rețele neurale**. + +> Uneori, rețelele neurale sunt numite *Rețele Neurale Artificiale*, ANNs, pentru a indica faptul că vorbim despre modele, nu despre rețele reale de neuroni. + +## Învățare Automată + +Rețelele neurale fac parte dintr-o disciplină mai largă numită **Învățare Automată**, al cărei scop este să folosească date pentru a antrena modele de computer capabile să rezolve probleme. Învățarea Automată constituie o mare parte din Inteligența Artificială, însă nu acoperim Învățarea Automată clasică în acest curriculum. + +> Vizitați curriculumul nostru separat **[Machine Learning for Beginners](http://github.com/microsoft/ml-for-beginners)** pentru a afla mai multe despre Învățarea Automată clasică. + +În Învățarea Automată, presupunem că avem un set de date de exemple **X** și valori de ieșire corespunzătoare **Y**. Exemplele sunt adesea vectori N-dimensionali care constau din **caracteristici**, iar ieșirile sunt numite **etichete**. + +Vom analiza cele mai comune două probleme de învățare automată: + +* **Clasificare**, unde trebuie să clasificăm un obiect de intrare în două sau mai multe clase. +* **Regresie**, unde trebuie să prezicem un număr numeric pentru fiecare dintre mostrele de intrare. + +> Când reprezentăm intrările și ieșirile ca tensori, setul de date de intrare este o matrice de dimensiune M×N, unde M este numărul de mostre și N este numărul de caracteristici. Etichetele de ieșire Y sunt vectorul de dimensiune M. + +În acest curriculum, ne vom concentra doar pe modelele de rețele neurale. + +## Un Model al unui Neuron + +Din biologie știm că creierul nostru este format din celule neuronale, fiecare dintre ele având multiple "intrări" (axoni) și o ieșire (dendrită). Axonii și dendritele pot conduce semnale electrice, iar conexiunile dintre axoni și dendrite pot prezenta diferite grade de conductivitate (controlate de neuromediatori). + +![Model al unui Neuron](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.ro.jpg) | ![Model al unui Neuron](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.ro.png) +----|---- +Neuron Real *([Imagine](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) de pe Wikipedia)* | Neuron Artificial *(Imagine de Autor)* + +Astfel, cel mai simplu model matematic al unui neuron conține mai multe intrări X1, ..., XN și o ieșire Y, și o serie de greutăți W1, ..., WN. Ieșirea este calculată astfel: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +unde f este o **funcție de activare** neliniară. + +> Modelele timpurii ale neuronului au fost descrise în lucrarea clasică [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) de Warren McCullock și Walter Pitts în 1943. Donald Hebb, în cartea sa "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)", a propus modul în care aceste rețele pot fi antrenate. + +## În această Secțiune + +În această secțiune vom învăța despre: +* [Perceptron](03-Perceptron/README.md), unul dintre cele mai timpurii modele de rețele neurale pentru clasificarea în două clase +* [Rețele multi-stratificate](04-OwnFramework/README.md) cu un notebook asociat [cum să construim propriul nostru framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Framework-uri pentru Rețele Neurale](05-Frameworks/README.md), cu aceste notebook-uri: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) și [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/ro/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..5ac34ef0 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Introducere în Viziunea Computațională + +[Viziunea Computațională](https://wikipedia.org/wiki/Computer_vision) este o disciplină al cărei scop este să permită calculatoarelor să obțină o înțelegere de nivel înalt a imaginilor digitale. Aceasta este o definiție destul de largă, deoarece *înțelegerea* poate însemna multe lucruri, inclusiv găsirea unui obiect într-o imagine (**detecția obiectelor**), înțelegerea a ceea ce se întâmplă (**detecția evenimentelor**), descrierea unei imagini în text sau reconstrucția unei scene în 3D. Există, de asemenea, sarcini speciale legate de imaginile umane: estimarea vârstei și a emoțiilor, detectarea și identificarea fețelor, precum și estimarea poziției 3D, pentru a numi doar câteva. + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Una dintre cele mai simple sarcini ale viziunii computaționale este **clasificarea imaginilor**. + +Viziunea computațională este adesea considerată o ramură a inteligenței artificiale. În prezent, majoritatea sarcinilor de viziune computațională sunt rezolvate folosind rețele neuronale. Vom învăța mai multe despre tipul special de rețele neuronale utilizate pentru viziunea computațională, [rețele neuronale convoluționale](../07-ConvNets/README.md), pe parcursul acestei secțiuni. + +Totuși, înainte de a trece o imagine printr-o rețea neuronală, în multe cazuri are sens să folosești câteva tehnici algoritmice pentru a îmbunătăți imaginea. + +Există mai multe biblioteci Python disponibile pentru procesarea imaginilor: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** poate fi utilizată pentru citirea/scrierea diferitelor formate de imagini. De asemenea, suportă ffmpeg, un instrument util pentru a converti cadre video în imagini. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (cunoscut și ca PIL) este puțin mai puternică și suportă, de asemenea, manipulări ale imaginilor, cum ar fi deformarea, ajustările paletei și altele. +* **[OpenCV](https://opencv.org/)** este o bibliotecă puternică de procesare a imaginilor scrisă în C++, care a devenit standardul *de facto* pentru procesarea imaginilor. Are o interfață convenabilă pentru Python. +* **[dlib](http://dlib.net/)** este o bibliotecă C++ care implementează multe algoritmi de învățare automată, inclusiv câțiva algoritmi de viziune computațională. Are, de asemenea, o interfață pentru Python și poate fi utilizată pentru sarcini complexe, cum ar fi detectarea fețelor și a punctelor de reper faciale. + +## OpenCV + +[OpenCV](https://opencv.org/) este considerată standardul *de facto* pentru procesarea imaginilor. Conține o mulțime de algoritmi utili, implementați în C++. Poți apela OpenCV și din Python. + +Un loc bun pentru a învăța OpenCV este [acest curs Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). În cadrul acestui curriculum, scopul nostru nu este să învățăm OpenCV, ci să îți arătăm câteva exemple despre cum poate fi utilizat și în ce situații. + +### Încărcarea imaginilor + +Imaginile în Python pot fi reprezentate convenabil prin matrice NumPy. De exemplu, imaginile în tonuri de gri cu dimensiunea de 320x200 pixeli ar fi stocate într-o matrice 200x320, iar imaginile color de aceeași dimensiune ar avea forma 200x320x3 (pentru cele 3 canale de culoare). Pentru a încărca o imagine, poți folosi următorul cod: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +În mod tradițional, OpenCV folosește codificarea BGR (Albastru-Verde-Roșu) pentru imaginile color, în timp ce restul instrumentelor Python folosesc codificarea mai tradițională RGB (Roșu-Verde-Albastru). Pentru ca imaginea să arate corect, trebuie să o convertești în spațiul de culoare RGB, fie prin schimbarea dimensiunilor în matricea NumPy, fie prin apelarea unei funcții OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Aceeași funcție `cvtColor` poate fi utilizată pentru a efectua alte transformări ale spațiului de culoare, cum ar fi conversia unei imagini în tonuri de gri sau în spațiul de culoare HSV (Nuanță-Saturație-Valoare). + +De asemenea, poți folosi OpenCV pentru a încărca videoclipuri cadru cu cadru - un exemplu este oferit în exercițiul [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Procesarea imaginilor + +Înainte de a introduce o imagine într-o rețea neuronală, este posibil să dorești să aplici câțiva pași de pre-procesare. OpenCV poate face multe lucruri, inclusiv: + +* **Redimensionarea** imaginii folosind `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Estomparea** imaginii folosind `im = cv2.medianBlur(im,3)` sau `im = cv2.GaussianBlur(im, (3,3), 0)` +* Schimbarea **luminozității și contrastului** imaginii poate fi realizată prin manipulări ale matricei NumPy, așa cum este descris [în această notă de pe Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Utilizarea [binarizării](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) prin apelarea funcțiilor `cv2.threshold`/`cv2.adaptiveThreshold`, care este adesea preferabilă ajustării luminozității sau contrastului. +* Aplicarea diferitelor [transformări](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) imaginii: + - **[Transformări afine](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** pot fi utile dacă trebuie să combini rotația, redimensionarea și deformarea imaginii și cunoști locația sursă și destinație a trei puncte din imagine. Transformările afine păstrează liniile paralele. + - **[Transformări de perspectivă](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** pot fi utile atunci când cunoști pozițiile sursă și destinație ale 4 puncte din imagine. De exemplu, dacă faci o fotografie a unui document dreptunghiular cu o cameră de smartphone dintr-un anumit unghi și vrei să obții o imagine dreptunghiulară a documentului în sine. +* Înțelegerea mișcării din imagine folosind **[flux optic](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Exemple de utilizare a Viziunii Computaționale + +În [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), oferim câteva exemple despre cum poate fi utilizată viziunea computațională pentru a realiza sarcini specifice: + +* **Pre-procesarea unei fotografii a unei cărți Braille**. Ne concentrăm pe modul în care putem utiliza binarizarea, detectarea caracteristicilor, transformarea perspectivei și manipulările NumPy pentru a separa simbolurile Braille individuale pentru clasificarea ulterioară de către o rețea neuronală. + +![Imagine Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.ro.jpeg) | ![Imagine Braille Pre-procesată](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.ro.png) | ![Simboluri Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.ro.png) +----|-----|----- + +> Imagine din [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectarea mișcării în videoclip folosind diferența dintre cadre**. Dacă camera este fixă, atunci cadrele din fluxul video ar trebui să fie destul de similare între ele. Deoarece cadrele sunt reprezentate ca matrice, doar prin scăderea acestor matrice pentru două cadre consecutive vom obține diferența de pixeli, care ar trebui să fie mică pentru cadrele statice și să devină mai mare odată ce există o mișcare substanțială în imagine. + +![Imagine a cadrelor video și a diferențelor dintre cadre](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.ro.png) + +> Imagine din [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detectarea mișcării folosind Fluxul Optic**. [Fluxul optic](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) ne permite să înțelegem cum se mișcă pixeli individuali pe cadrele video. Există două tipuri de flux optic: + + - **Flux optic dens** calculează câmpul vectorial care arată pentru fiecare pixel unde se mișcă. + - **Flux optic rar** se bazează pe luarea unor caracteristici distinctive din imagine (de exemplu, margini) și construirea traiectoriei lor de la un cadru la altul. + +![Imagine a Fluxului Optic](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.ro.png) + +> Imagine din [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Exemple de Notebook-uri: OpenCV [încearcă OpenCV în acțiune](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Hai să facem câteva experimente cu OpenCV explorând [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Concluzie + +Uneori, sarcini relativ complexe, cum ar fi detectarea mișcării sau detectarea vârfurilor de degete, pot fi rezolvate pur și simplu prin viziune computațională. Astfel, este foarte util să cunoști tehnicile de bază ale viziunii computaționale și ce pot face bibliotecile precum OpenCV. + +## 🚀 Provocare + +Urmărește [acest videoclip](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) din seria AI Show pentru a afla despre proiectul Cortic Tigers și cum au construit o soluție bazată pe blocuri pentru a democratiza sarcinile de viziune computațională printr-un robot. Fă cercetări despre alte proiecte similare care ajută noii învățăcei să intre în acest domeniu. + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Recapitulare și Studiu Individual + +Citește mai multe despre fluxul optic [în acest tutorial excelent](https://learnopencv.com/optical-flow-in-opencv/). + +## [Temă](lab/README.md) + +În acest laborator, vei lua un videoclip cu gesturi simple, iar scopul tău este să extragi mișcările sus/jos/stânga/dreapta folosind fluxul optic. + +Cadru cu mișcarea palmei + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/ro/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..18fd15dc --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Detectarea Mișcărilor folosind Optical Flow + +Temă de laborator din [Curriculumul AI pentru Începători](https://aka.ms/ai-beginners). + +## Sarcină + +Luați în considerare [acest videoclip](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), în care palma unei persoane se mișcă stânga/dreapta/sus/jos pe un fundal stabil. + +**Scopul vostru** ar fi să utilizați Optical Flow pentru a determina care părți ale videoclipului conțin mișcări sus/jos/stânga/dreapta. + +**Obiectiv extins** ar fi să urmăriți efectiv mișcarea palmei/degetului folosind tonul pielii, așa cum este descris [în această postare pe blog](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) sau [aici](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Notebook de Pornire + +Începeți laboratorul deschizând [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Concluzie + +Uneori, sarcini relativ complexe, cum ar fi detectarea mișcărilor sau detectarea vârfurilor de degete, pot fi rezolvate pur și simplu prin viziune computerizată. Astfel, este foarte util să știți ce pot face biblioteci precum OpenCV. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/ro/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..0415b098 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Arhitecturi CNN Cunoscute + +### VGG-16 + +VGG-16 este o rețea care a atins o acuratețe de 92,7% în clasificarea top-5 ImageNet în 2014. Are următoarea structură de straturi: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ro.jpg) + +După cum se poate observa, VGG urmează o arhitectură piramidală tradițională, care este o secvență de straturi de convoluție și pooling. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ro.jpg) + +> Imagine de la [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 este o familie de modele propusă de Microsoft Research în 2015. Ideea principală a ResNet este utilizarea **blocurilor reziduale**: + + + +> Imagine din [acest articol](https://arxiv.org/pdf/1512.03385.pdf) + +Motivul utilizării trecerii identitare este ca stratul nostru să prezică **diferența** dintre rezultatul unui strat anterior și ieșirea blocului rezidual - de aici și numele *rezidual*. Aceste blocuri sunt mult mai ușor de antrenat, iar rețelele pot fi construite cu câteva sute de astfel de blocuri (variantele cele mai comune sunt ResNet-52, ResNet-101 și ResNet-152). + +De asemenea, poți considera această rețea ca fiind capabilă să-și ajusteze complexitatea în funcție de setul de date. Inițial, când începi să antrenezi rețeaua, valorile greutăților sunt mici, iar majoritatea semnalului trece prin straturile identitare. Pe măsură ce antrenamentul progresează și greutățile devin mai mari, semnificația parametrilor rețelei crește, iar rețeaua se ajustează pentru a acomoda puterea expresivă necesară clasificării corecte a imaginilor de antrenament. + +### Google Inception + +Arhitectura Google Inception duce această idee un pas mai departe și construiește fiecare strat al rețelei ca o combinație de mai multe căi diferite: + + + +> Imagine de la [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Aici, trebuie să subliniem rolul convoluțiilor 1x1, deoarece la început acestea nu par să aibă sens. De ce ar fi nevoie să trecem prin imagine cu un filtru 1x1? Totuși, trebuie să ne amintim că filtrele de convoluție funcționează și cu mai multe canale de adâncime (inițial - culorile RGB, în straturile ulterioare - canale pentru diferite filtre), iar convoluția 1x1 este utilizată pentru a combina aceste canale de intrare folosind greutăți antrenabile diferite. Poate fi privită și ca o reducere a dimensiunii (pooling) pe dimensiunea canalului. + +Iată [un articol bun pe blog](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) pe acest subiect și [articolul original](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet este o familie de modele cu dimensiuni reduse, potrivite pentru dispozitive mobile. Folosește-le dacă ai resurse limitate și poți sacrifica puțin din acuratețe. Ideea principală din spatele lor este așa-numita **convoluție separabilă pe adâncime**, care permite reprezentarea filtrelor de convoluție printr-o compoziție de convoluții spațiale și convoluții 1x1 pe canalele de adâncime. Acest lucru reduce semnificativ numărul de parametri, făcând rețeaua mai mică ca dimensiune și mai ușor de antrenat cu mai puține date. + +Iată [un articol bun pe blog despre MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Concluzie + +În această unitate, ai învățat conceptul principal din spatele rețelelor neuronale pentru viziune computerizată - rețelele convoluționale. Arhitecturile din viața reală care alimentează clasificarea imaginilor, detectarea obiectelor și chiar rețelele de generare a imaginilor se bazează toate pe CNN-uri, doar cu mai multe straturi și câteva trucuri suplimentare de antrenament. + +## 🚀 Provocare + +În caietele de lucru însoțitoare, există note la final despre cum să obții o acuratețe mai mare. Fă câteva experimente pentru a vedea dacă poți atinge o acuratețe mai mare. + +## [Chestionar post-lectură](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Recapitulare și Studiu Individual + +Deși CNN-urile sunt cel mai des utilizate pentru sarcini de Viziune Computerizată, ele sunt în general bune pentru extragerea de tipare de dimensiuni fixe. De exemplu, dacă lucrăm cu sunete, am putea dori să folosim CNN-uri pentru a căuta anumite tipare specifice în semnalul audio - caz în care filtrele ar fi unidimensionale (iar acest CNN ar fi numit 1D-CNN). De asemenea, uneori se folosește 3D-CNN pentru a extrage caracteristici în spațiu multidimensional, cum ar fi anumite evenimente care au loc într-un videoclip - CNN poate captura anumite tipare de schimbare a caracteristicilor în timp. Fă o recapitulare și un studiu individual despre alte sarcini care pot fi realizate cu CNN-uri. + +## [Temă](lab/README.md) + +În acest laborator, ai sarcina de a clasifica diferite rase de pisici și câini. Aceste imagini sunt mai complexe decât setul de date MNIST, au dimensiuni mai mari și există mai mult de 10 clase. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/ro/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..0a51f1dd --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Rețele Neuronale Convoluționale + +Am văzut anterior că rețelele neuronale sunt destul de bune la procesarea imaginilor, iar chiar și un perceptron cu un singur strat este capabil să recunoască cifre scrise de mână din setul de date MNIST cu o acuratețe rezonabilă. Totuși, setul de date MNIST este foarte special, iar toate cifrele sunt centrate în interiorul imaginii, ceea ce face sarcina mai simplă. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +În viața reală, ne dorim să putem recunoaște obiecte într-o imagine, indiferent de locația lor exactă în cadrul imaginii. Viziunea computerizată este diferită de clasificarea generică, deoarece atunci când încercăm să găsim un anumit obiect într-o imagine, scanăm imaginea căutând **tipare** specifice și combinațiile acestora. De exemplu, când căutăm o pisică, mai întâi putem căuta linii orizontale, care pot forma mustăți, iar apoi o anumită combinație de mustăți ne poate indica faptul că este, de fapt, o imagine cu o pisică. Poziția relativă și prezența anumitor tipare sunt importante, nu poziția lor exactă în imagine. + +Pentru a extrage tipare, vom folosi noțiunea de **filtre convoluționale**. După cum știți, o imagine este reprezentată printr-o matrice 2D sau un tensor 3D cu adâncime de culoare. Aplicarea unui filtru înseamnă că luăm o matrice relativ mică numită **kernel de filtru**, iar pentru fiecare pixel din imaginea originală calculăm media ponderată cu punctele vecine. Putem privi acest proces ca o fereastră mică care alunecă peste întreaga imagine și calculează media tuturor pixelilor conform greutăților din matricea kernelului de filtru. + +![Filtru pentru margini verticale](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.ro.png) | ![Filtru pentru margini orizontale](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.ro.png) +----|---- + +> Imagine de Dmitry Soshnikov + +De exemplu, dacă aplicăm filtre pentru margini verticale și orizontale de 3x3 pe cifrele MNIST, putem obține evidențieri (de exemplu, valori mari) acolo unde există margini verticale și orizontale în imaginea originală. Astfel, aceste două filtre pot fi utilizate pentru a "căuta" margini. În mod similar, putem proiecta diferite filtre pentru a căuta alte tipare de nivel scăzut: + +> Imaginea [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Totuși, deși putem proiecta manual filtrele pentru a extrage anumite tipare, putem proiecta și rețeaua astfel încât să învețe tiparele automat. Aceasta este una dintre ideile principale din spatele CNN. + +## Idei principale din spatele CNN + +Modul în care funcționează CNN-urile se bazează pe următoarele idei importante: + +* Filtrele convoluționale pot extrage tipare +* Putem proiecta rețeaua astfel încât filtrele să fie antrenate automat +* Putem folosi aceeași abordare pentru a găsi tipare în caracteristici de nivel înalt, nu doar în imaginea originală. Astfel, extragerea caracteristicilor prin CNN funcționează pe o ierarhie de caracteristici, începând de la combinații de pixeli de nivel scăzut, până la combinații de nivel înalt ale părților imaginii. + +![Extragerea ierarhică a caracteristicilor](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.ro.png) + +> Imagine din [un articol de Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), bazat pe [cercetarea lor](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Exerciții: Rețele Neuronale Convoluționale + +Să continuăm explorarea modului în care funcționează rețelele neuronale convoluționale și cum putem obține filtre antrenabile, lucrând prin notebook-urile corespunzătoare: + +* [Rețele Neuronale Convoluționale - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Rețele Neuronale Convoluționale - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Arhitectura Piramidală + +Majoritatea CNN-urilor utilizate pentru procesarea imaginilor urmează o așa-numită arhitectură piramidală. Primul strat convoluțional aplicat imaginilor originale are, de obicei, un număr relativ mic de filtre (8-16), care corespund diferitelor combinații de pixeli, cum ar fi linii orizontale/verticale sau trăsături. La nivelul următor, reducem dimensiunea spațială a rețelei și creștem numărul de filtre, ceea ce corespunde mai multor combinații posibile de caracteristici simple. Cu fiecare strat, pe măsură ce ne apropiem de clasificatorul final, dimensiunile spațiale ale imaginii scad, iar numărul de filtre crește. + +Ca exemplu, să analizăm arhitectura VGG-16, o rețea care a obținut o acuratețe de 92.7% în clasificarea top-5 din ImageNet în 2014: + +![Straturi ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.ro.jpg) + +![Piramida ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.ro.jpg) + +> Imagine de pe [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) + +## Cele mai cunoscute arhitecturi CNN + +[Continuă studiul despre cele mai cunoscute arhitecturi CNN](CNN_Architectures.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/ro/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..95accfe3 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Clasificarea Fețelor Animalelor de Companie + +Temă de laborator din [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +Imaginează-ți că trebuie să dezvolți o aplicație pentru o grădiniță de animale de companie, pentru a cataloga toate animalele. Una dintre funcționalitățile grozave ale unei astfel de aplicații ar fi identificarea automată a rasei dintr-o fotografie. Acest lucru poate fi realizat cu succes folosind rețele neuronale. + +Trebuie să antrenezi o rețea neuronală convoluțională pentru a clasifica diferite rase de pisici și câini utilizând setul de date **Pet Faces**. + +## Setul de Date + +Vom folosi setul de date **Pet Faces**, derivat din setul de date pentru animale de companie [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Acesta conține 35 de rase diferite de câini și pisici. + +![Setul de date cu care vom lucra](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.ro.png) + +Pentru a descărca setul de date, folosește acest fragment de cod: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Notebook-ul de Start + +Începe laboratorul deschizând [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Concluzie + +Ai rezolvat o problemă relativ complexă de clasificare a imaginilor de la zero! Au fost destul de multe clase, și totuși ai reușit să obții o acuratețe rezonabilă! De asemenea, are sens să măsori acuratețea top-k, deoarece este ușor să confunzi unele clase care nu sunt clar diferite nici măcar pentru oameni. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..703297ce --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Rețele Pre-antrenate și Învățarea prin Transfer + +Antrenarea CNN-urilor poate dura mult timp și necesită o cantitate mare de date. Totuși, o mare parte din timp este petrecut în învățarea celor mai bune filtre de nivel scăzut pe care o rețea le poate folosi pentru a extrage modele din imagini. O întrebare naturală apare - putem folosi o rețea neuronală antrenată pe un set de date și să o adaptăm pentru a clasifica imagini diferite fără a necesita un proces complet de antrenare? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Această abordare se numește **învățare prin transfer**, deoarece transferăm o parte din cunoștințele unui model de rețea neuronală către altul. În învățarea prin transfer, de obicei începem cu un model pre-antrenat, care a fost antrenat pe un set mare de imagini, cum ar fi **ImageNet**. Aceste modele pot deja să extragă caracteristici diferite din imagini generice, iar în multe cazuri, construirea unui clasificator pe baza acestor caracteristici extrase poate oferi un rezultat bun. + +> ✅ Învățarea prin transfer este un termen întâlnit și în alte domenii academice, cum ar fi Educația. Se referă la procesul de aplicare a cunoștințelor dintr-un domeniu în altul. + +## Modele Pre-antrenate ca Extractoare de Caracteristici + +Rețelele convoluționale despre care am vorbit în secțiunea anterioară conțineau un număr de straturi, fiecare dintre ele fiind destinat să extragă anumite caracteristici din imagine, începând de la combinații de pixeli de nivel scăzut (cum ar fi linii orizontale/verticale sau trăsături), până la combinații de caracteristici de nivel înalt, corespunzătoare unor lucruri precum un ochi de flacără. Dacă antrenăm un CNN pe un set de date suficient de mare și diversificat, rețeaua ar trebui să învețe să extragă aceste caracteristici comune. + +Atât Keras, cât și PyTorch conțin funcții pentru a încărca cu ușurință greutăți pre-antrenate ale rețelelor neuronale pentru unele arhitecturi comune, majoritatea fiind antrenate pe imagini ImageNet. Cele mai utilizate sunt descrise pe pagina [Arhitecturi CNN](../07-ConvNets/CNN_Architectures.md) din lecția anterioară. În special, poate fi util să folosiți una dintre următoarele: + +* **VGG-16/VGG-19**, care sunt modele relativ simple, dar oferă o acuratețe bună. Deseori, utilizarea VGG ca primă încercare este o alegere bună pentru a vedea cum funcționează învățarea prin transfer. +* **ResNet** este o familie de modele propuse de Microsoft Research în 2015. Acestea au mai multe straturi și, prin urmare, necesită mai multe resurse. +* **MobileNet** este o familie de modele cu dimensiuni reduse, potrivite pentru dispozitive mobile. Folosiți-le dacă aveți resurse limitate și puteți sacrifica puțin din acuratețe. + +Iată caracteristici extrase dintr-o imagine cu o pisică de către rețeaua VGG-16: + +![Caracteristici extrase de VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.ro.png) + +## Setul de Date Pisici vs. Câini + +În acest exemplu, vom folosi un set de date cu [Pisici și Câini](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), care este foarte apropiat de un scenariu real de clasificare a imaginilor. + +## ✍️ Exercițiu: Învățare prin Transfer + +Să vedem învățarea prin transfer în acțiune în caietele corespunzătoare: + +* [Învățare prin Transfer - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Învățare prin Transfer - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Vizualizarea Pisicii Adversariale + +Rețeaua neuronală pre-antrenată conține diferite modele în "creierul" său, inclusiv noțiuni de **pisică ideală** (precum și câine ideal, zebră ideală etc.). Ar fi interesant să **vizualizăm această imagine**. Totuși, nu este simplu, deoarece modelele sunt răspândite în greutățile rețelei și organizate într-o structură ierarhică. + +O abordare pe care o putem adopta este să începem cu o imagine aleatorie și apoi să folosim tehnica de **optimizare prin descendență gradient** pentru a ajusta acea imagine astfel încât rețeaua să înceapă să creadă că este o pisică. + +![Buclă de Optimizare a Imaginilor](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.ro.png) + +Totuși, dacă facem acest lucru, vom obține ceva foarte asemănător cu un zgomot aleatoriu. Acest lucru se întâmplă deoarece *există multe moduri prin care rețeaua poate crede că imaginea de intrare este o pisică*, inclusiv unele care nu au sens vizual. Deși aceste imagini conțin multe modele tipice pentru o pisică, nu există nimic care să le constrângă să fie distincte vizual. + +Pentru a îmbunătăți rezultatul, putem adăuga un alt termen în funcția de pierdere, numit **pierdere de variație**. Este o metrică care arată cât de similari sunt pixelii vecini ai imaginii. Minimizarea pierderii de variație face imaginea mai netedă și elimină zgomotul - dezvăluind astfel modele mai atractive vizual. Iată un exemplu de astfel de imagini "ideale", care sunt clasificate ca pisică și ca zebră cu probabilitate mare: + +![Pisică Ideală](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.ro.png) | ![Zebră Ideală](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.ro.png) +-----|----- + *Pisică Ideală* | *Zebră Ideală* + +O abordare similară poate fi utilizată pentru a efectua așa-numitele **atacuri adversariale** asupra unei rețele neuronale. Să presupunem că dorim să păcălim o rețea neuronală și să facem un câine să arate ca o pisică. Dacă luăm imaginea unui câine, care este recunoscută de rețea ca fiind un câine, o putem ajusta puțin folosind optimizarea prin descendență gradient, până când rețeaua începe să o clasifice ca o pisică: + +![Imaginea unui Câine](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.ro.png) | ![Imaginea unui câine clasificat ca pisică](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.ro.png) +-----|----- +*Imagine originală a unui câine* | *Imaginea unui câine clasificat ca pisică* + +Consultați codul pentru a reproduce rezultatele de mai sus în următorul caiet: + +* [Pisică Ideală și Adversarială - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Concluzie + +Folosind învățarea prin transfer, puteți crea rapid un clasificator pentru o sarcină personalizată de clasificare a obiectelor și obține o acuratețe ridicată. Puteți observa că sarcinile mai complexe pe care le rezolvăm acum necesită o putere computațională mai mare și nu pot fi rezolvate ușor pe CPU. În unitatea următoare, vom încerca să utilizăm o implementare mai ușoară pentru a antrena același model folosind resurse computaționale mai reduse, ceea ce duce la o acuratețe doar puțin mai scăzută. + +## 🚀 Provocare + +În caietele însoțitoare, există note la final despre cum funcționează cel mai bine transferul de cunoștințe cu date de antrenament oarecum similare (poate un nou tip de animal). Faceți câteva experimente cu tipuri complet noi de imagini pentru a vedea cât de bine sau prost performează modelele de transfer de cunoștințe. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Recapitulare și Studiu Individual + +Citiți [TrainingTricks.md](TrainingTricks.md) pentru a aprofunda cunoștințele despre alte moduri de a vă antrena modelele. + +## [Temă](lab/README.md) + +În acest laborator, vom folosi setul de date real [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) cu 35 de rase de pisici și câini și vom construi un clasificator bazat pe învățarea prin transfer. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..513dc33a --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Trucuri pentru antrenarea rețelelor neuronale profunde + +Pe măsură ce rețelele neuronale devin mai adânci, procesul de antrenare devine din ce în ce mai dificil. Una dintre principalele probleme este așa-numita [problemă a gradientului care dispare](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) sau [gradientul exploziv](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Acest articol](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) oferă o introducere bună în aceste probleme. + +Pentru a face antrenarea rețelelor profunde mai eficientă, există câteva tehnici care pot fi utilizate. + +## Menținerea valorilor într-un interval rezonabil + +Pentru a face calculele numerice mai stabile, dorim să ne asigurăm că toate valorile din rețeaua noastră neuronală sunt într-o scară rezonabilă, de obicei [-1..1] sau [0..1]. Nu este o cerință foarte strictă, dar natura calculelor cu punct flotant este astfel încât valorile de magnitudini diferite nu pot fi manipulate cu precizie împreună. De exemplu, dacă adunăm 10-10 și 1010, este probabil să obținem 1010, deoarece valoarea mai mică ar fi „convertită” la același ordin ca cea mai mare, iar mantisa ar fi pierdută. + +Majoritatea funcțiilor de activare au neliniarități în jurul intervalului [-1..1], așa că are sens să scalăm toate datele de intrare în intervalul [-1..1] sau [0..1]. + +## Inițializarea greutăților + +Ideal, dorim ca valorile să fie în același interval după trecerea prin straturile rețelei. Prin urmare, este important să inițializăm greutățile astfel încât să păstrăm distribuția valorilor. + +Distribuția normală **N(0,1)** nu este o idee bună, deoarece dacă avem *n* intrări, deviația standard a ieșirii ar fi *n*, iar valorile ar putea să iasă din intervalul [0..1]. + +Următoarele metode de inițializare sunt adesea utilizate: + + * Distribuție uniformă -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** garantează că pentru intrări cu medie zero și deviație standard de 1, aceeași medie/deviație standard va rămâne + * **N(0,√2/(n_in+n_out))** -- așa-numita **inițializare Xavier** (`glorot`), care ajută la menținerea semnalelor în interval în timpul propagării înainte și înapoi + +## Normalizarea pe loturi (Batch Normalization) + +Chiar și cu o inițializare corectă a greutăților, acestea pot deveni arbitrar de mari sau mici în timpul antrenării, ceea ce va scoate semnalele din intervalul potrivit. Putem readuce semnalele în interval folosind una dintre tehnicile de **normalizare**. Deși există mai multe (Normalizarea greutăților, Normalizarea pe strat), cea mai utilizată este Normalizarea pe loturi. + +Ideea **normalizării pe loturi** este de a lua în considerare toate valorile din lotul de date și de a efectua normalizarea (adică scăderea mediei și împărțirea la deviația standard) pe baza acestor valori. Este implementată ca un strat al rețelei care face această normalizare după aplicarea greutăților, dar înainte de funcția de activare. Ca rezultat, este probabil să obținem o acuratețe finală mai mare și o antrenare mai rapidă. + +Iată [lucrarea originală](https://arxiv.org/pdf/1502.03167.pdf) despre normalizarea pe loturi, [explicația de pe Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization) și [un articol introductiv bun](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (și unul [în rusă](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** este o tehnică interesantă care elimină un anumit procent de neuroni aleatori în timpul antrenării. Este implementată ca un strat cu un parametru (procentul de neuroni de eliminat, de obicei 10%-50%), iar în timpul antrenării, elimină aleatoriu elemente din vectorul de intrare, înainte de a-l transmite stratului următor. + +Deși poate suna ca o idee ciudată, puteți vedea efectul dropout-ului asupra antrenării unui clasificator de cifre MNIST în notebook-ul [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Aceasta accelerează antrenarea și ne permite să obținem o acuratețe mai mare în mai puține epoci de antrenare. + +Acest efect poate fi explicat în mai multe moduri: + + * Poate fi considerat un factor de șoc aleatoriu pentru model, care scoate optimizarea dintr-un minim local + * Poate fi considerat ca o *mediere implicită a modelului*, deoarece putem spune că în timpul dropout-ului antrenăm un model ușor diferit + +> *Unii oameni spun că atunci când o persoană beată încearcă să învețe ceva, își va aminti mai bine a doua zi dimineață, comparativ cu o persoană trează, deoarece un creier cu câțiva neuroni disfuncționali încearcă să se adapteze mai bine pentru a înțelege sensul. Nu am testat noi înșine dacă acest lucru este adevărat sau nu.* + +## Prevenirea supraînvățării (overfitting) + +Unul dintre aspectele foarte importante ale învățării profunde este să putem preveni [supraînvățarea](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Deși poate fi tentant să folosim un model de rețea neuronală foarte puternic, ar trebui să echilibrăm întotdeauna numărul de parametri ai modelului cu numărul de mostre de antrenare. + +> Asigurați-vă că înțelegeți conceptul de [supraînvățare](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) pe care l-am introdus anterior! + +Există mai multe modalități de a preveni supraînvățarea: + + * Oprirea timpurie -- monitorizarea continuă a erorii pe setul de validare și oprirea antrenării atunci când eroarea de validare începe să crească. + * Penalizare explicită a greutăților / Regularizare -- adăugarea unei penalizări suplimentare la funcția de pierdere pentru valorile absolute mari ale greutăților, ceea ce previne obținerea unor rezultate foarte instabile + * Medierea modelului -- antrenarea mai multor modele și apoi medierea rezultatului. Acest lucru ajută la minimizarea variației. + * Dropout (Mediere implicită a modelului) + +## Optimizatori / Algoritmi de antrenare + +Un alt aspect important al antrenării este alegerea unui algoritm de antrenare bun. Deși **descendentul gradientului** clasic este o alegere rezonabilă, poate fi uneori prea lent sau poate duce la alte probleme. + +În învățarea profundă, folosim **Descendentul Gradientului Stocastic** (SGD), care este un descendent al gradientului aplicat pe loturi mici, selectate aleatoriu din setul de antrenare. Greutățile sunt ajustate folosind această formulă: + +wt+1 = wt - η∇ℒ + +### Momentum + +În **SGD cu momentum**, păstrăm o parte din gradientul pașilor anteriori. Este similar cu situația în care ne deplasăm undeva cu inerție, iar dacă primim un impuls într-o direcție diferită, traiectoria noastră nu se schimbă imediat, ci păstrează o parte din mișcarea inițială. Aici introducem un alt vector v pentru a reprezenta *viteza*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Aici, parametrul γ indică măsura în care luăm în considerare inerția: γ=0 corespunde cu SGD clasic; γ=1 este o ecuație pură a mișcării. + +### Adam, Adagrad, etc. + +Deoarece în fiecare strat înmulțim semnalele cu o matrice Wi, în funcție de ||Wi||, gradientul poate fie să dispară și să fie aproape de 0, fie să crească la infinit. Aceasta este esența problemei Gradientelor Explozive/Disparente. + +Una dintre soluțiile acestei probleme este să folosim doar direcția gradientului în ecuație și să ignorăm valoarea absolută, adică: + +wt+1 = wt - η(∇ℒ/||∇ℒ||), unde ||∇ℒ|| = √∑(∇ℒ)2 + +Acest algoritm se numește **Adagrad**. Alte algoritme care folosesc aceeași idee: **RMSProp**, **Adam** + +> **Adam** este considerat a fi un algoritm foarte eficient pentru multe aplicații, așa că dacă nu sunteți sigur ce să folosiți - folosiți Adam. + +### Gradient clipping + +Gradient clipping este o extensie a ideii de mai sus. Când ||∇ℒ|| ≤ θ, considerăm gradientul original în optimizarea greutății, iar când ||∇ℒ|| > θ - împărțim gradientul la norma sa. Aici θ este un parametru, în majoritatea cazurilor putem lua θ=1 sau θ=10. + +### Reducerea ratei de învățare + +Succesul antrenării depinde adesea de parametrul ratei de învățare η. Este logic să presupunem că valorile mai mari ale lui η duc la o antrenare mai rapidă, ceea ce este ceva ce ne dorim de obicei la începutul antrenării, iar apoi valorile mai mici ale lui η ne permit să ajustăm fin rețeaua. Astfel, în majoritatea cazurilor dorim să reducem η pe parcursul antrenării. + +Acest lucru poate fi realizat prin înmulțirea lui η cu un număr (de exemplu, 0.98) după fiecare epocă de antrenare sau prin utilizarea unui **program de reducere a ratei de învățare** mai complicat. + +## Diferite arhitecturi de rețele + +Selectarea arhitecturii potrivite pentru problema dvs. poate fi dificilă. De obicei, alegem o arhitectură care s-a dovedit a funcționa pentru sarcina noastră specifică (sau una similară). Iată o [prezentare generală bună](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) a arhitecturilor de rețele neuronale pentru viziunea computerizată. + +> Este important să selectați o arhitectură care să fie suficient de puternică pentru numărul de mostre de antrenare pe care le avem. Alegerea unui model prea puternic poate duce la [supraînvățare](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +O altă metodă bună ar fi utilizarea unei arhitecturi care se ajustează automat la complexitatea necesară. Într-o anumită măsură, arhitecturile **ResNet** și **Inception** sunt auto-ajustabile. [Mai multe despre arhitecturile pentru viziunea computerizată](../07-ConvNets/CNN_Architectures.md). + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..1f0be524 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Clasificarea animalelor de companie Oxford folosind Transfer Learning + +Temă de laborator din [Curriculumul AI pentru Începători](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +Imaginează-ți că trebuie să dezvolți o aplicație pentru o grădiniță de animale de companie pentru a cataloga toate animalele. Una dintre funcțiile grozave ale unei astfel de aplicații ar fi identificarea automată a rasei dintr-o fotografie. În această temă, vom folosi transfer learning pentru a clasifica imagini reale de animale de companie din setul de date [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Setul de date + +Vom folosi setul de date original [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), care conține 35 de rase diferite de câini și pisici. + +Pentru a descărca setul de date, folosește acest fragment de cod: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Începerea notebook-ului + +Începe laboratorul deschizând [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Concluzie + +Transfer learning și rețelele pre-antrenate ne permit să rezolvăm relativ ușor probleme reale de clasificare a imaginilor. Totuși, rețelele pre-antrenate funcționează bine pe imagini de tip similar, iar dacă începem să clasificăm imagini foarte diferite (de exemplu, imagini medicale), este probabil să obținem rezultate mult mai slabe. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/ro/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..4a4fd6a1 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoencodere + +Când antrenăm CNN-uri, una dintre probleme este că avem nevoie de o cantitate mare de date etichetate. În cazul clasificării imaginilor, trebuie să separăm imaginile în clase diferite, ceea ce necesită un efort manual. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Totuși, am putea dori să folosim date brute (neetichetate) pentru a antrena extractoare de caracteristici CNN, ceea ce se numește **învățare auto-supervizată**. În loc de etichete, vom folosi imaginile de antrenament atât ca intrare, cât și ca ieșire pentru rețea. Ideea principală a unui **autoencoder** este că vom avea o **rețea encoder** care transformă imaginea de intrare într-un spațiu **latent** (de obicei, este doar un vector de dimensiune mai mică), apoi o **rețea decoder**, al cărei scop este să reconstruiască imaginea originală. + +> ✅ Un [autoencoder](https://wikipedia.org/wiki/Autoencoder) este „un tip de rețea neuronală artificială utilizată pentru a învăța codificări eficiente ale datelor neetichetate.” + +Deoarece antrenăm un autoencoder pentru a captura cât mai multe informații din imaginea originală pentru o reconstrucție precisă, rețeaua încearcă să găsească cea mai bună **reprezentare** a imaginilor de intrare pentru a surprinde semnificația acestora. + +![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.ro.jpg) + +> Imagine de pe [blogul Keras](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenarii pentru utilizarea Autoencoderelor + +Deși reconstrucția imaginilor originale nu pare utilă în sine, există câteva scenarii în care autoencoderele sunt deosebit de utile: + +* **Reducerea dimensiunii imaginilor pentru vizualizare** sau **antrenarea reprezentărilor imaginilor**. De obicei, autoencoderele oferă rezultate mai bune decât PCA, deoarece iau în considerare natura spațială a imaginilor și caracteristicile ierarhice. +* **Eliminarea zgomotului**, adică eliminarea zgomotului din imagine. Deoarece zgomotul conține multe informații inutile, autoencoderul nu poate încadra totul într-un spațiu latent relativ mic și, astfel, surprinde doar partea importantă a imaginii. Când antrenăm eliminatoare de zgomot, pornim de la imagini originale și folosim imagini cu zgomot adăugat artificial ca intrare pentru autoencoder. +* **Super-rezoluție**, creșterea rezoluției imaginilor. Pornim de la imagini de înaltă rezoluție și folosim imaginea cu rezoluție mai mică ca intrare pentru autoencoder. +* **Modele generative**. Odată ce antrenăm autoencoderul, partea de decoder poate fi utilizată pentru a crea noi obiecte pornind de la vectori latenti aleatori. + +## Autoencodere Variationale (VAE) + +Autoencoderele tradiționale reduc dimensiunea datelor de intrare într-un mod oarecare, identificând caracteristicile importante ale imaginilor de intrare. Totuși, vectorii latenti deseori nu au o semnificație clară. Cu alte cuvinte, luând ca exemplu dataset-ul MNIST, identificarea cifrelor corespunzătoare diferiților vectori latenti nu este o sarcină ușoară, deoarece vectorii latenti apropiați nu corespund neapărat acelorași cifre. + +Pe de altă parte, pentru a antrena modele *generative*, este mai bine să avem o înțelegere a spațiului latent. Această idee ne conduce la **autoencoderul variational** (VAE). + +VAE este un autoencoder care învață să prezică *distribuția statistică* a parametrilor latenti, așa-numita **distribuție latentă**. De exemplu, am putea dori ca vectorii latenti să fie distribuiți normal cu o medie zmean și o deviație standard zsigma (atât media, cât și deviația standard sunt vectori de o anumită dimensiune d). Encoderul din VAE învață să prezică acești parametri, iar decoderul ia un vector aleator din această distribuție pentru a reconstrui obiectul. + +Pentru a rezuma: + + * Din vectorul de intrare, prezicem `z_mean` și `z_log_sigma` (în loc să prezicem deviația standard în sine, prezicem logaritmul acesteia) + * Extragem un vector `sample` din distribuția N(zmean,exp(zlog\_sigma)) + * Decoderul încearcă să decodeze imaginea originală folosind `sample` ca vector de intrare + + + +> Imagine din [acest articol](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) de Isaak Dykeman + +Autoencoderele variationale folosesc o funcție de pierdere complexă care constă din două părți: + +* **Pierdere de reconstrucție** este funcția de pierdere care arată cât de apropiată este imaginea reconstruită de țintă (poate fi Mean Squared Error sau MSE). Este aceeași funcție de pierdere ca în autoencoderele normale. +* **Pierdere KL**, care asigură că distribuțiile variabilelor latente rămân apropiate de distribuția normală. Se bazează pe noțiunea de [divergență Kullback-Leibler](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - o metrică pentru a estima cât de similare sunt două distribuții statistice. + +Un avantaj important al VAE-urilor este că permit generarea de imagini noi relativ ușor, deoarece știm din ce distribuție să extragem vectorii latenti. De exemplu, dacă antrenăm un VAE cu vector latent 2D pe MNIST, putem varia componentele vectorului latent pentru a obține cifre diferite: + +vaemnist + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +Observați cum imaginile se îmbină între ele, pe măsură ce începem să obținem vectori latenti din diferite porțiuni ale spațiului parametrilor latenti. De asemenea, putem vizualiza acest spațiu în 2D: + +vaemnist cluster + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Exerciții: Autoencodere + +Aflați mai multe despre autoencodere în aceste notebook-uri corespunzătoare: + +* [Autoencodere în TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencodere în PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Proprietăți ale Autoencoderelor + +* **Specifice datelor** - funcționează bine doar cu tipul de imagini pe care au fost antrenate. De exemplu, dacă antrenăm o rețea de super-rezoluție pe flori, aceasta nu va funcționa bine pe portrete. Acest lucru se datorează faptului că rețeaua poate produce imagini de rezoluție mai mare prin preluarea detaliilor fine din caracteristicile învățate din setul de date de antrenament. +* **Pierdere de informație** - imaginea reconstruită nu este aceeași cu imaginea originală. Natura pierderii este definită de *funcția de pierdere* utilizată în timpul antrenamentului. +* Funcționează pe **date neetichetate** + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Concluzie + +În această lecție, ați învățat despre diferitele tipuri de autoencodere disponibile pentru cercetătorii AI. Ați învățat cum să le construiți și cum să le utilizați pentru a reconstrui imagini. De asemenea, ați învățat despre VAE și cum să le utilizați pentru a genera imagini noi. + +## 🚀 Provocare + +În această lecție, ați învățat despre utilizarea autoencoderelor pentru imagini. Dar ele pot fi folosite și pentru muzică! Consultați proiectul Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), care folosește autoencodere pentru a învăța să reconstruiască muzică. Faceți câteva [experimente](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) cu această bibliotecă pentru a vedea ce puteți crea. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Recapitulare & Studiu Individual + +Pentru referință, citiți mai multe despre autoencodere în aceste resurse: + +* [Construirea Autoencoderelor în Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Articol pe NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Autoencodere Variationale Explicate](https://kvfrans.com/variational-autoencoders-explained/) +* [Autoencodere Variationale Condiționale](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Temă + +La sfârșitul [acestui notebook folosind TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), veți găsi o „sarcină” - folosiți aceasta ca temă. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/10-GANs/README.md b/translations/ro/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..a78d24a1 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Rețele Generative Adversariale + +În secțiunea anterioară, am învățat despre **modelele generative**: modele care pot genera imagini noi similare cu cele din setul de date de antrenament. VAE a fost un exemplu bun de model generativ. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Totuși, dacă încercăm să generăm ceva cu adevărat semnificativ, cum ar fi o pictură la o rezoluție rezonabilă, folosind VAE, vom observa că antrenamentul nu converge bine. Pentru acest caz de utilizare, ar trebui să învățăm despre o altă arhitectură specifică modelelor generative - **Rețele Generative Adversariale**, sau GAN-uri. + +Ideea principală a unui GAN este să aibă două rețele neuronale care sunt antrenate una împotriva celeilalte: + + + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Un pic de vocabular: +> * **Generatorul** este o rețea care primește un vector aleator și produce o imagine ca rezultat. +> * **Discriminatorul** este o rețea care primește o imagine și trebuie să determine dacă este o imagine reală (din setul de date de antrenament) sau dacă a fost generată de un generator. Practic, este un clasificator de imagini. + +### Discriminatorul + +Arhitectura discriminatorului nu diferă de o rețea obișnuită de clasificare a imaginilor. În cel mai simplu caz, poate fi un clasificator complet conectat, dar cel mai probabil va fi o [rețea convoluțională](../07-ConvNets/README.md). + +> ✅ Un GAN bazat pe rețele convoluționale se numește [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Un discriminator CNN constă din următoarele straturi: mai multe convoluții + pooling-uri (cu dimensiuni spațiale în scădere) și unul sau mai multe straturi complet conectate pentru a obține "vectorul de caracteristici", urmate de un clasificator binar final. + +> ✅ Un 'pooling' în acest context este o tehnică ce reduce dimensiunea imaginii. "Straturile de pooling reduc dimensiunile datelor prin combinarea ieșirilor unor clustere de neuroni dintr-un strat într-un singur neuron în stratul următor." - [sursa](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generatorul + +Un generator este puțin mai complicat. Îl puteți considera ca fiind un discriminator inversat. Pornind de la un vector latent (în locul unui vector de caracteristici), are un strat complet conectat pentru a-l converti în dimensiunea/forma necesară, urmat de deconvoluții + upscaling. Acest lucru este similar cu partea de *decodor* a unui [autoencoder](../09-Autoencoders/README.md). + +> ✅ Deoarece stratul de convoluție este implementat ca un filtru liniar care parcurge imaginea, deconvoluția este esențial similară cu convoluția și poate fi implementată folosind aceeași logică de strat. + + + +> Imagine de [Dmitry Soshnikov](http://soshnikov.com) + +### Antrenarea GAN-ului + +GAN-urile sunt numite **adversariale** deoarece există o competiție constantă între generator și discriminator. În timpul acestei competiții, atât generatorul, cât și discriminatorul se îmbunătățesc, astfel încât rețeaua învață să producă imagini din ce în ce mai bune. + +Antrenamentul are loc în două etape: + +* **Antrenarea discriminatorului**. Această sarcină este destul de simplă: generăm un lot de imagini cu ajutorul generatorului, le etichetăm cu 0, ceea ce înseamnă imagine falsă, și luăm un lot de imagini din setul de date de intrare (cu eticheta 1, imagine reală). Obținem o *pierdere a discriminatorului* și efectuăm backpropagation. +* **Antrenarea generatorului**. Aceasta este puțin mai complicată, deoarece nu cunoaștem direct ieșirea așteptată pentru generator. Luăm întreaga rețea GAN formată dintr-un generator urmat de un discriminator, o alimentăm cu niște vectori aleatori și ne așteptăm ca rezultatul să fie 1 (corespunzător imaginilor reale). Apoi înghețăm parametrii discriminatorului (nu dorim să fie antrenat în acest pas) și efectuăm backpropagation. + +În timpul acestui proces, pierderile generatorului și discriminatorului nu scad semnificativ. În situația ideală, acestea ar trebui să oscileze, corespunzând îmbunătățirii performanței ambelor rețele. + +## ✍️ Exerciții: GAN-uri + +* [Carnet GAN în TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Carnet GAN în PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Probleme cu antrenarea GAN-urilor + +GAN-urile sunt cunoscute pentru dificultatea lor de antrenare. Iată câteva probleme: + +* **Colapsul modului**. Prin acest termen înțelegem că generatorul învață să producă o singură imagine de succes care păcălește discriminatorul, fără a genera o varietate de imagini diferite. +* **Sensibilitate la hiperparametri**. Adesea se poate observa că un GAN nu converge deloc, iar apoi o scădere bruscă a ratei de învățare duce la convergență. +* Menținerea unui **echilibru** între generator și discriminator. În multe cazuri, pierderea discriminatorului poate scădea la zero relativ repede, ceea ce face ca generatorul să nu mai poată fi antrenat. Pentru a depăși acest lucru, putem încerca să setăm rate de învățare diferite pentru generator și discriminator sau să sărim peste antrenamentul discriminatorului dacă pierderea este deja prea mică. +* Antrenarea pentru **rezoluție înaltă**. Reflectând aceeași problemă ca în cazul autoencoderelor, această problemă apare deoarece reconstruirea prea multor straturi ale unei rețele convoluționale duce la artefacte. Această problemă este de obicei rezolvată prin așa-numita **creștere progresivă**, în care mai întâi câteva straturi sunt antrenate pe imagini de rezoluție mică, iar apoi straturile sunt "deblocate" sau adăugate. O altă soluție ar fi adăugarea de conexiuni suplimentare între straturi și antrenarea mai multor rezoluții simultan - vedeți acest [articol despre GAN-uri cu gradient multi-scală](https://arxiv.org/abs/1903.06048) pentru detalii. + +## Transfer de stil + +GAN-urile sunt o metodă excelentă pentru a genera imagini artistice. O altă tehnică interesantă este așa-numitul **transfer de stil**, care ia o **imagine de conținut** și o re-desenază într-un stil diferit, aplicând filtre dintr-o **imagine de stil**. + +Cum funcționează: +* Începem cu o imagine de zgomot aleator (sau cu o imagine de conținut, dar pentru înțelegere este mai ușor să începem cu zgomot aleator). +* Scopul nostru este să creăm o imagine care să fie apropiată atât de imaginea de conținut, cât și de imaginea de stil. Acest lucru este determinat de două funcții de pierdere: + - **Pierderea de conținut** este calculată pe baza caracteristicilor extrase de CNN la anumite straturi din imaginea curentă și imaginea de conținut. + - **Pierderea de stil** este calculată între imaginea curentă și imaginea de stil într-un mod inteligent folosind matrici Gram (mai multe detalii în [carnetul de exemplu](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Pentru a face imaginea mai netedă și a elimina zgomotul, introducem și **Pierderea de variație**, care calculează distanța medie între pixelii vecini. +* Bucla principală de optimizare ajustează imaginea curentă folosind gradient descent (sau un alt algoritm de optimizare) pentru a minimiza pierderea totală, care este o sumă ponderată a tuturor celor trei pierderi. + +## ✍️ Exemplu: [Transfer de stil](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Concluzie + +În această lecție, ați învățat despre GAN-uri și cum să le antrenați. De asemenea, ați învățat despre provocările speciale pe care acest tip de rețea neuronală le poate întâmpina și câteva strategii pentru a le depăși. + +## 🚀 Provocare + +Parcurgeți [carnetul de Transfer de Stil](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) folosind propriile imagini. + +## Recapitulare și studiu individual + +Pentru referință, citiți mai multe despre GAN-uri în aceste resurse: + +* Marco Pasini, [10 lecții învățate antrenând GAN-uri timp de un an](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), o arhitectură GAN *de facto* de luat în considerare +* [Crearea artei generative folosind GAN-uri pe Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Temă + +Revedeți unul dintre cele două carnete asociate acestei lecții și reantrenați GAN-ul pe imaginile proprii. Ce puteți crea? + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..b43bb6c2 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Detectarea Obiectelor + +Modelele de clasificare a imaginilor pe care le-am abordat până acum au luat o imagine și au produs un rezultat categoric, cum ar fi clasa „număr” într-o problemă MNIST. Totuși, în multe cazuri, nu dorim doar să știm că o imagine prezintă obiecte - vrem să putem determina locația lor exactă. Acesta este exact scopul **detectării obiectelor**. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detectarea Obiectelor](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.ro.png) + +> Imagine de pe [site-ul YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## O Abordare Naivă pentru Detectarea Obiectelor + +Presupunând că dorim să găsim o pisică într-o imagine, o abordare foarte naivă pentru detectarea obiectelor ar fi următoarea: + +1. Împărțim imaginea în mai multe secțiuni. +2. Aplicăm clasificarea imaginilor pe fiecare secțiune. +3. Secțiunile care generează o activare suficient de mare pot fi considerate ca conținând obiectul în cauză. + +![Detectare Naivă a Obiectelor](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.ro.png) + +> *Imagine din [Notebook-ul de exerciții](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Totuși, această abordare este departe de a fi ideală, deoarece permite algoritmului să localizeze foarte imprecis caseta de delimitare a obiectului. Pentru o localizare mai precisă, trebuie să aplicăm un fel de **regresie** pentru a prezice coordonatele casetelor de delimitare - și pentru aceasta, avem nevoie de seturi de date specifice. + +## Regresie pentru Detectarea Obiectelor + +[Acest articol de blog](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) oferă o introducere excelentă în detectarea formelor. + +## Seturi de Date pentru Detectarea Obiectelor + +Este posibil să întâlniți următoarele seturi de date pentru această sarcină: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - 20 clase +* [COCO](http://cocodataset.org/#home) - Obiecte Comune în Context. 80 clase, casete de delimitare și măști de segmentare + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.ro.jpg) + +## Metrice pentru Detectarea Obiectelor + +### Intersecția peste Uniune + +În timp ce pentru clasificarea imaginilor este ușor să măsurăm cât de bine funcționează algoritmul, pentru detectarea obiectelor trebuie să măsurăm atât corectitudinea clasei, cât și precizia locației casetei de delimitare inferate. Pentru aceasta din urmă, folosim așa-numita **Intersecția peste Uniune** (IoU), care măsoară cât de bine se suprapun două casete (sau două zone arbitrare). + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.ro.png) + +> *Figura 2 din [acest articol excelent despre IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Ideea este simplă - împărțim aria de intersecție dintre două figuri la aria uniunii lor. Pentru două zone identice, IoU ar fi 1, în timp ce pentru zone complet separate va fi 0. În alte cazuri, va varia de la 0 la 1. De obicei, considerăm doar acele casete de delimitare pentru care IoU depășește o anumită valoare. + +### Precizia Medie + +Să presupunem că dorim să măsurăm cât de bine este recunoscută o anumită clasă de obiecte $C$. Pentru a o măsura, folosim metrica **Precizia Medie**, care se calculează astfel: + +1. Considerăm curba Precizie-Recall care arată acuratețea în funcție de o valoare de prag de detectare (de la 0 la 1). +2. În funcție de prag, vom obține mai multe sau mai puține obiecte detectate în imagine și valori diferite de precizie și recall. +3. Curba va arăta astfel: + + + +> *Imagine din [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Precizia Medie pentru o clasă dată $C$ este aria de sub această curbă. Mai precis, axa Recall este de obicei împărțită în 10 părți, iar Precizia este mediată pe toate aceste puncte: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP și IoU + +Vom considera doar acele detectări pentru care IoU depășește o anumită valoare. De exemplu, în setul de date PASCAL VOC, de obicei $\mbox{IoU Threshold} = 0.5$ este presupus, în timp ce în COCO AP este măsurat pentru diferite valori ale $\mbox{IoU Threshold}$. + + + +> *Imagine din [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Precizia Medie Generală - mAP + +Principala metrică pentru Detectarea Obiectelor se numește **Precizia Medie Generală**, sau **mAP**. Este valoarea Preciziei Medii, mediată pe toate clasele de obiecte și, uneori, și pe $\mbox{IoU Threshold}$. Procesul de calculare a **mAP** este descris în detaliu +[în acest articol de blog](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), și de asemenea [aici cu exemple de cod](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Diferite Abordări pentru Detectarea Obiectelor + +Există două clase largi de algoritmi de detectare a obiectelor: + +* **Rețele de Propunere a Regiunilor** (R-CNN, Fast R-CNN, Faster R-CNN). Ideea principală este de a genera **Regiuni de Interes** (ROI) și de a aplica CNN pe acestea, căutând activarea maximă. Este oarecum similar cu abordarea naivă, cu excepția faptului că ROI-urile sunt generate într-un mod mai inteligent. Unul dintre principalele dezavantaje ale acestor metode este că sunt lente, deoarece necesită multe treceri ale clasificatorului CNN peste imagine. +* Metode **One-pass** (YOLO, SSD, RetinaNet). În aceste arhitecturi, rețeaua este proiectată să prezică atât clasele, cât și ROI-urile într-o singură trecere. + +### R-CNN: CNN Bazat pe Regiuni + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) folosește [Selective Search](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) pentru a genera o structură ierarhică de regiuni ROI, care sunt apoi trecute prin extractoare de caracteristici CNN și clasificatori SVM pentru a determina clasa obiectului, și regresie liniară pentru a determina coordonatele *casetei de delimitare*. [Articol Oficial](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.ro.png) + +> *Imagine de la van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.ro.png) + +> *Imagini din [acest blog](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) + +### F-RCNN - Fast R-CNN + +Această abordare este similară cu R-CNN, dar regiunile sunt definite după ce straturile de convoluție au fost aplicate. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.ro.png) + +> Imagine din [Articolul 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 + +Ideea principală a acestei abordări este de a folosi o rețea neuronală pentru a prezice ROI-urile - așa-numita *Rețea de Propunere a Regiunilor*. [Articol](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.ro.png) + +> Imagine din [articolul oficial](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Rețea Complet Convoluțională Bazată pe Regiuni + +Acest algoritm este chiar mai rapid decât Faster R-CNN. Ideea principală este următoarea: + +1. Extragem caracteristici folosind ResNet-101. +1. Caracteristicile sunt procesate de **Harta de Scor Sensibilă la Poziție**. Fiecare obiect din $C$ clase este împărțit în $k\times k$ regiuni, și antrenăm pentru a prezice părți ale obiectelor. +1. Pentru fiecare parte din regiunile $k\times k$, toate rețelele votează pentru clasele de obiecte, iar clasa de obiect cu votul maxim este selectată. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.ro.png) + +> Imagine din [articolul oficial](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO este un algoritm în timp real, cu o singură trecere. Ideea principală este următoarea: + + * Imaginea este împărțită în $S\times S$ regiuni. + * Pentru fiecare regiune, **CNN** prezice $n$ obiecte posibile, coordonatele *casetei de delimitare* și *încrederea*=*probabilitatea* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.ro.png) + +> Imagine din [articolul oficial](https://arxiv.org/abs/1506.02640) + +### Alte Algoritmi + +* RetinaNet: [articol oficial](https://arxiv.org/abs/1708.02002) + - [Implementare PyTorch în Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementare Keras](https://github.com/fizyr/keras-retinanet) + - [Detectarea Obiectelor cu RetinaNet](https://keras.io/examples/vision/retinanet/) în exemplele Keras +* SSD (Single Shot Detector): [articol oficial](https://arxiv.org/abs/1512.02325) + +## ✍️ Exerciții: Detectarea Obiectelor + +Continuă învățarea în următorul notebook: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Concluzie + +În această lecție ai explorat rapid toate modurile diferite în care detectarea obiectelor poate fi realizată! + +## 🚀 Provocare + +Citește aceste articole și notebook-uri despre YOLO și încearcă-le singur: + +* [Articol de blog bun](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) despre YOLO + * [Site oficial](https://pjreddie.com/darknet/yolo/) + * Yolo: [Implementare Keras](https://github.com/experiencor/keras-yolo2), [notebook pas cu pas](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Implementare Keras](https://github.com/experiencor/keras-yolo2), [notebook pas cu pas](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Recapitulare & Studiu Individual + +* [Detectarea Obiectelor](https://tjmachinelearning.com/lectures/1718/obj/) de Nikhil Sardana +* [O comparație bună a algoritmilor de detectare a obiectelor](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Revizuirea algoritmilor de învățare profundă pentru detectarea obiectelor](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Introducere pas cu pas în algoritmii de detectare a obiectelor](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementarea Faster R-CNN în Python pentru detectarea obiectelor](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Temă: Detectarea Obiectelor](lab/README.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..b3436e4a --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Detectarea capetelor folosind Hollywood Heads Dataset + +Temă de laborator din [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +Numărarea numărului de persoane pe fluxul unei camere de supraveghere video este o sarcină importantă care ne permite să estimăm numărul de vizitatori într-un magazin, orele aglomerate într-un restaurant etc. Pentru a rezolva această sarcină, trebuie să fim capabili să detectăm capetele umane din diferite unghiuri. Pentru a antrena un model de detectare a obiectelor care să identifice capetele umane, putem folosi [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## Dataset-ul + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) conține 369.846 de capete umane adnotate în 224.740 de cadre din filme de la Hollywood. Este furnizat în format [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), unde pentru fiecare imagine există și un fișier XML descriptiv care arată astfel: + +```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 + + +``` + +În acest dataset există o singură clasă de obiecte, `head`, iar pentru fiecare cap se oferă coordonatele casetei de delimitare. Poți analiza fișierele XML folosind biblioteci Python sau poți folosi [această bibliotecă](https://pypi.org/project/pascal-voc/) pentru a lucra direct cu formatul PASCAL VOC. + +## Antrenarea modelului de detectare a obiectelor + +Poți antrena un model de detectare a obiectelor folosind una dintre următoarele metode: + +* Folosind [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) și API-ul său Python pentru a antrena modelul programatic în cloud. Custom Vision nu va putea folosi mai mult de câteva sute de imagini pentru antrenarea modelului, așa că poate fi necesar să limitezi dataset-ul. +* Folosind exemplul din [tutorialul Keras](https://keras.io/examples/vision/retinanet/) pentru a antrena modelul RetunaNet. +* Folosind modulul integrat [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) din torchvision. + +## Concluzii + +Detectarea obiectelor este o sarcină frecvent necesară în industrie. Deși există servicii care pot fi utilizate pentru a efectua detectarea obiectelor (cum ar fi [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)), este important să înțelegem cum funcționează detectarea obiectelor și să fim capabili să ne antrenăm propriile modele. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/ro/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..d934319b --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentare + +Am învățat anterior despre Detectarea Obiectelor, care ne permite să localizăm obiecte în imagine prin prezicerea *casetelor de delimitare*. Totuși, pentru unele sarcini, nu avem nevoie doar de casete de delimitare, ci și de o localizare mai precisă a obiectelor. Această sarcină se numește **segmentare**. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentarea poate fi privită ca o **clasificare a pixelilor**, în care pentru **fiecare** pixel al imaginii trebuie să prezicem clasa sa (*fundalul* fiind una dintre clase). Există două algoritmi principali de segmentare: + +* **Segmentarea semantică** indică doar clasa pixelului, fără a face distincție între diferite obiecte din aceeași clasă. +* **Segmentarea pe instanțe** împarte clasele în instanțe diferite. + +De exemplu, pentru segmentarea pe instanțe, aceste oi sunt obiecte diferite, dar pentru segmentarea semantică toate oile sunt reprezentate de o singură clasă. + + + +> Imagine din [acest articol de blog](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Există diferite arhitecturi neuronale pentru segmentare, dar toate au aceeași structură. Într-un fel, este similar cu autoencoder-ul despre care ai învățat anterior, dar în loc să deconstruim imaginea originală, scopul nostru este să deconstruim o **mască**. Astfel, o rețea de segmentare are următoarele părți: + +* **Encoder** extrage caracteristici din imaginea de intrare. +* **Decoder** transformă aceste caracteristici în **imaginea măștii**, cu aceeași dimensiune și un număr de canale corespunzător numărului de clase. + + + +> Imagine din [această publicație](https://arxiv.org/pdf/2001.05566.pdf) + +Trebuie să menționăm în mod special funcția de pierdere utilizată pentru segmentare. Când folosim autoencodere clasice, trebuie să măsurăm similaritatea dintre două imagini, iar pentru aceasta putem folosi eroarea pătratică medie (MSE). În segmentare, fiecare pixel din imaginea țintă a măștii reprezintă numărul clasei (codificat one-hot pe a treia dimensiune), așa că trebuie să folosim funcții de pierdere specifice clasificării - pierderea cross-entropy, mediată pe toți pixelii. Dacă masca este binară, se folosește **binary cross-entropy loss** (BCE). + +> ✅ Codificarea one-hot este o metodă de a codifica o etichetă de clasă într-un vector de lungime egală cu numărul de clase. Consultă [acest articol](https://datagy.io/sklearn-one-hot-encode/) pentru mai multe detalii despre această tehnică. + +## Segmentarea în Imagistica Medicală + +În această lecție, vom vedea segmentarea în acțiune, antrenând o rețea pentru a recunoaște nevi umani (cunoscuți și sub numele de alunițe) în imagini medicale. Vom folosi Baza de Date PH2 de imagini dermatoscopice ca sursă de imagini. Acest set de date conține 200 de imagini din trei clase: nev tipic, nev atipic și melanom. Toate imaginile conțin, de asemenea, o **mască** corespunzătoare care conturează nevul. + +> ✅ Această tehnică este deosebit de potrivită pentru acest tip de imagistică medicală, dar ce alte aplicații din lumea reală ai putea imagina? + +navi + +> Imagine din Baza de Date PH2 + +Vom antrena un model pentru a segmenta orice nev din fundalul său. + +## ✍️ Exerciții: Segmentare Semantică + +Deschide notebook-urile de mai jos pentru a învăța mai multe despre diferite arhitecturi de segmentare semantică, pentru a exersa lucrul cu ele și pentru a le vedea în acțiune. + +* [Segmentare Semantică Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Segmentare Semantică TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Concluzie + +Segmentarea este o tehnică foarte puternică pentru clasificarea imaginilor, mergând dincolo de casetele de delimitare până la clasificarea la nivel de pixel. Este o tehnică utilizată în imagistica medicală, printre alte aplicații. + +## 🚀 Provocare + +Segmentarea corpului este doar una dintre sarcinile comune pe care le putem realiza cu imagini ale oamenilor. Alte sarcini importante includ **detectarea scheletului** și **detectarea posturii**. Încearcă biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) pentru a vedea cum poate fi utilizată detectarea posturii. + +## Recapitulare și Studiu Individual + +Acest [articol de pe Wikipedia](https://wikipedia.org/wiki/Image_segmentation) oferă o bună prezentare generală a diferitelor aplicații ale acestei tehnici. Află mai multe pe cont propriu despre subdomeniile Segmentării pe Instanțe și Segmentării Panoptice în acest domeniu de cercetare. + +## [Temă](lab/README.md) + +În acest laborator, încearcă **segmentarea corpului uman** folosind [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de pe Kaggle. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/ro/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..24574d99 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentarea Corpului Uman + +Temă de laborator din [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +În producția video, de exemplu, în prognozele meteo, deseori trebuie să decupăm imaginea unei persoane din filmare și să o plasăm peste alt material video. Acest lucru se face de obicei folosind tehnici de **chroma key**, când o persoană este filmată în fața unui fundal de culoare uniformă, care este apoi eliminat. În acest laborator, vom antrena un model de rețea neuronală pentru a decupa silueta umană. + +## Setul de date + +Vom folosi [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) de pe Kaggle. Descărcați manual setul de date de pe Kaggle. + +## Notebook-ul de start + +Începeți laboratorul deschizând [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Concluzie + +Segmentarea corpului este doar una dintre sarcinile comune pe care le putem realiza cu imagini ale oamenilor. Alte sarcini importante includ **detectarea scheletului** și **detectarea posturii**. Consultați biblioteca [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) pentru a vedea cum pot fi implementate aceste sarcini. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/4-ComputerVision/README.md b/translations/ro/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..21b570f0 --- /dev/null +++ b/translations/ro/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Viziune Computerizată + +![Rezumat al conținutului despre Viziune Computerizată într-un desen](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.ro.png) + +În această secțiune vom învăța despre: + +* [Introducere în Viziunea Computerizată și OpenCV](06-IntroCV/README.md) +* [Rețele Neuronale Convoluționale](07-ConvNets/README.md) +* [Rețele Pre-antrenate și Învățare prin Transfer](08-TransferLearning/README.md) +* [Autoencodere](09-Autoencoders/README.md) +* [Rețele Generative Adversariale](10-GANs/README.md) +* [Detecția Obiectelor](11-ObjectDetection/README.md) +* [Segmentare Semantică](12-Segmentation/README.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/13-TextRep/README.md b/translations/ro/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..4eab599f --- /dev/null +++ b/translations/ro/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Reprezentarea textului ca tensori + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Clasificarea textului + +În prima parte a acestei secțiuni, ne vom concentra pe sarcina de **clasificare a textului**. Vom folosi setul de date [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), care conține articole de știri precum următorul exemplu: + +* Categorie: Știință/Tehnologie +* Titlu: Compania Ky. câștigă un grant pentru a studia peptidele (AP) +* Corp: AP - O companie fondată de un cercetător în chimie de la Universitatea din Louisville a câștigat un grant pentru a dezvolta... + +Obiectivul nostru va fi să clasificăm articolul de știri într-una dintre categorii pe baza textului. + +## Reprezentarea textului + +Dacă dorim să rezolvăm sarcini de procesare a limbajului natural (NLP) cu rețele neuronale, avem nevoie de o metodă pentru a reprezenta textul ca tensori. Calculatoarele deja reprezintă caracterele textuale ca numere care corespund fonturilor de pe ecranul tău, folosind codificări precum ASCII sau UTF-8. + +Imagine care arată o diagramă ce mapează un caracter la o reprezentare ASCII și binară + +> [Sursa imaginii](https://www.seobility.net/en/wiki/ASCII) + +Ca oameni, înțelegem ce **reprezintă** fiecare literă și cum toate caracterele se unesc pentru a forma cuvintele unei propoziții. Totuși, calculatoarele, prin ele însele, nu au o astfel de înțelegere, iar rețeaua neuronală trebuie să învețe semnificația în timpul antrenării. + +Prin urmare, putem folosi diferite abordări pentru a reprezenta textul: + +* **Reprezentarea la nivel de caracter**, în care tratăm fiecare caracter ca un număr. Având *C* caractere diferite în corpusul nostru de text, cuvântul *Hello* ar fi reprezentat de un tensor de dimensiune 5x*C*. Fiecare literă ar corespunde unei coloane tensoriale în codificarea one-hot. +* **Reprezentarea la nivel de cuvânt**, în care creăm un **vocabular** al tuturor cuvintelor din textul nostru și apoi reprezentăm cuvintele folosind codificarea one-hot. Această abordare este oarecum mai bună, deoarece fiecare literă, în sine, nu are prea multă semnificație, iar utilizând concepte semantice de nivel mai înalt - cuvintele - simplificăm sarcina pentru rețeaua neuronală. Totuși, având în vedere dimensiunea mare a dicționarului, trebuie să gestionăm tensori dispersați de dimensiuni mari. + +Indiferent de reprezentare, mai întâi trebuie să convertim textul într-o secvență de **token-uri**, un token fiind fie un caracter, un cuvânt sau, uneori, chiar o parte a unui cuvânt. Apoi, convertim token-ul într-un număr, de obicei folosind un **vocabular**, iar acest număr poate fi introdus într-o rețea neuronală folosind codificarea one-hot. + +## N-Grame + +În limbajul natural, semnificația precisă a cuvintelor poate fi determinată doar în context. De exemplu, semnificațiile expresiilor *rețea neuronală* și *rețea de pescuit* sunt complet diferite. Una dintre modalitățile de a ține cont de acest lucru este să construim modelul nostru pe perechi de cuvinte, considerând perechile de cuvinte ca token-uri separate în vocabular. În acest fel, propoziția *Îmi place să merg la pescuit* va fi reprezentată de următoarea secvență de token-uri: *Îmi place*, *place să*, *să merg*, *merg la pescuit*. Problema cu această abordare este că dimensiunea dicționarului crește semnificativ, iar combinații precum *merg la pescuit* și *merg la cumpărături* sunt reprezentate de token-uri diferite, care nu împărtășesc nicio similaritate semantică, în ciuda aceluiași verb. + +În unele cazuri, putem lua în considerare utilizarea tri-gramelor -- combinații de trei cuvinte -- de asemenea. Astfel, această abordare este adesea numită **n-grame**. De asemenea, are sens să folosim n-grame cu reprezentarea la nivel de caracter, caz în care n-gramele vor corespunde aproximativ diferitelor silabe. + +## Bag-of-Words și TF/IDF + +Când rezolvăm sarcini precum clasificarea textului, trebuie să putem reprezenta textul printr-un vector de dimensiune fixă, pe care îl vom folosi ca intrare pentru clasificatorul dens final. Una dintre cele mai simple metode de a face acest lucru este să combinăm toate reprezentările individuale ale cuvintelor, de exemplu, prin adunarea lor. Dacă adunăm codificările one-hot ale fiecărui cuvânt, vom obține un vector de frecvențe, care arată de câte ori apare fiecare cuvânt în text. O astfel de reprezentare a textului se numește **bag of words** (BoW). + + + +> Imagine realizată de autor + +Un BoW reprezintă, în esență, ce cuvinte apar în text și în ce cantități, ceea ce poate fi într-adevăr un bun indicator al subiectului textului. De exemplu, un articol de știri despre politică este probabil să conțină cuvinte precum *președinte* și *țară*, în timp ce o publicație științifică ar avea termeni precum *colizor*, *descoperit*, etc. Astfel, frecvențele cuvintelor pot fi, în multe cazuri, un bun indicator al conținutului textului. + +Problema cu BoW este că anumite cuvinte comune, precum *și*, *este*, etc., apar în majoritatea textelor și au frecvențe ridicate, mascând cuvintele care sunt cu adevărat importante. Putem reduce importanța acestor cuvinte luând în considerare frecvența cu care apar în întreaga colecție de documente. Aceasta este ideea principală din spatele abordării TF/IDF, care este acoperită în detaliu în caietele atașate acestei lecții. + +Totuși, niciuna dintre aceste abordări nu poate lua în considerare pe deplin **semantica** textului. Avem nevoie de modele mai puternice de rețele neuronale pentru a face acest lucru, pe care le vom discuta mai târziu în această secțiune. + +## ✍️ Exerciții: Reprezentarea textului + +Continuă învățarea în următoarele caiete: + +* [Reprezentarea textului cu PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Reprezentarea textului cu TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Concluzie + +Până acum, am studiat tehnici care pot adăuga greutate frecvenței diferitelor cuvinte. Totuși, acestea nu pot reprezenta semnificația sau ordinea. Așa cum a spus faimosul lingvist J. R. Firth în 1935, "Semnificația completă a unui cuvânt este întotdeauna contextuală, iar niciun studiu al semnificației în afara contextului nu poate fi luat în serios." Vom învăța mai târziu în curs cum să capturăm informații contextuale din text folosind modelarea limbajului. + +## 🚀 Provocare + +Încearcă alte exerciții folosind bag-of-words și diferite modele de date. Poți găsi inspirație în această [competiție pe Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Recapitulare și studiu individual + +Exersează-ți abilitățile cu tehnicile de embedding și bag-of-words pe [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste). + +## [Temă: Caiete](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/13-TextRep/assignment.md b/translations/ro/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..47020da5 --- /dev/null +++ b/translations/ro/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Tema: Caiete de notițe + +Folosind caietele de notițe asociate acestei lecții (fie versiunea PyTorch, fie cea TensorFlow), rulează-le din nou utilizând propriul tău set de date, poate unul de pe Kaggle, utilizat cu atribuire. Rescrie caietul de notițe pentru a evidenția propriile tale descoperiri. Încearcă unele seturi de date inovatoare care ar putea fi surprinzătoare, cum ar fi [acesta despre observațiile OZN](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) de la NUFORC. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/14-Embeddings/README.md b/translations/ro/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..b8d3b16f --- /dev/null +++ b/translations/ro/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Încapsulări + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Când antrenam clasificatori bazându-ne pe BoW sau TF/IDF, lucram cu vectori de cuvinte de dimensiuni mari, având lungimea `vocab_size`, și transformam explicit vectorii de reprezentare pozițională de dimensiuni mici în reprezentări sparse one-hot. Totuși, această reprezentare one-hot nu este eficientă din punct de vedere al memoriei. În plus, fiecare cuvânt este tratat independent de celelalte, adică vectorii one-hot codificați nu exprimă nicio similaritate semantică între cuvinte. + +Ideea de **încapsulare** este de a reprezenta cuvintele prin vectori densi de dimensiuni mai mici, care reflectă într-un fel semnificația semantică a unui cuvânt. Vom discuta mai târziu cum să construim încapsulări semnificative pentru cuvinte, dar pentru moment să ne gândim la încapsulări ca la o modalitate de a reduce dimensiunea unui vector de cuvinte. + +Astfel, stratul de încapsulare ar lua un cuvânt ca intrare și ar produce un vector de ieșire de dimensiunea specificată `embedding_size`. Într-un sens, este foarte similar cu un strat `Linear`, dar în loc să ia un vector one-hot codificat, va putea lua un număr de cuvânt ca intrare, permițându-ne să evităm crearea de vectori one-hot codificați mari. + +Folosind un strat de încapsulare ca prim strat în rețeaua noastră de clasificare, putem trece de la un model bag-of-words la un model **embedding bag**, unde mai întâi convertim fiecare cuvânt din textul nostru în încapsularea corespunzătoare, și apoi calculăm o funcție agregată peste toate aceste încapsulări, cum ar fi `sum`, `average` sau `max`. + +![Imagine care arată un clasificator bazat pe încapsulări pentru cinci cuvinte dintr-o secvență.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.ro.png) + +> Imagine realizată de autor + +## ✍️ Exerciții: Încapsulări + +Continuă învățarea în următoarele notebook-uri: +* [Încapsulări cu PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Încapsulări TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Încapsulări Semantice: Word2Vec + +Deși stratul de încapsulare a învățat să mapaze cuvintele la o reprezentare vectorială, această reprezentare nu avea neapărat o semnificație semantică profundă. Ar fi ideal să învățăm o reprezentare vectorială astfel încât cuvintele similare sau sinonime să corespundă unor vectori apropiați între ei în termeni de o anumită distanță vectorială (de exemplu, distanța Euclidiană). + +Pentru a face acest lucru, trebuie să pre-antrenăm modelul de încapsulare pe o colecție mare de texte într-un mod specific. O modalitate de a antrena încapsulări semantice se numește [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Se bazează pe două arhitecturi principale utilizate pentru a produce o reprezentare distribuită a cuvintelor: + + - **Bag-of-words continuu** (CBoW) — în această arhitectură, antrenăm modelul să prezică un cuvânt din contextul înconjurător. Dat ngram-ul $(W_{-2},W_{-1},W_0,W_1,W_2)$, scopul modelului este să prezică $W_0$ din $(W_{-2},W_{-1},W_1,W_2)$. + - **Skip-gram continuu** este opusul lui CBoW. Modelul folosește fereastra de context a cuvintelor înconjurătoare pentru a prezice cuvântul curent. + +CBoW este mai rapid, în timp ce skip-gram este mai lent, dar face o treabă mai bună în reprezentarea cuvintelor rare. + +![Imagine care arată algoritmii CBoW și Skip-Gram pentru conversia cuvintelor în vectori.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ro.png) + +> Imagine din [acest articol](https://arxiv.org/pdf/1301.3781.pdf) + +Încapsulările pre-antrenate Word2Vec (precum și alte modele similare, cum ar fi GloVe) pot fi utilizate în locul stratului de încapsulare în rețelele neuronale. Totuși, trebuie să gestionăm vocabularul, deoarece vocabularul utilizat pentru pre-antrenarea Word2Vec/GloVe este probabil diferit de vocabularul din corpusul nostru de texte. Consultă notebook-urile de mai sus pentru a vedea cum poate fi rezolvată această problemă. + +## Încapsulări Contextuale + +O limitare cheie a reprezentărilor tradiționale de încapsulare pre-antrenate, cum ar fi Word2Vec, este problema dezambiguizării sensului cuvintelor. Deși încapsulările pre-antrenate pot captura o parte din semnificația cuvintelor în context, fiecare posibil sens al unui cuvânt este codificat în aceeași încapsulare. Acest lucru poate cauza probleme în modelele ulterioare, deoarece multe cuvinte, cum ar fi cuvântul „play”, au semnificații diferite în funcție de contextul în care sunt utilizate. + +De exemplu, cuvântul „play” în cele două propoziții de mai jos are semnificații destul de diferite: + +- Am fost la o **piesă** de teatru. +- John vrea să **se joace** cu prietenii săi. + +Încapsulările pre-antrenate de mai sus reprezintă ambele sensuri ale cuvântului „play” în aceeași încapsulare. Pentru a depăși această limitare, trebuie să construim încapsulări bazate pe **modelul lingvistic**, care este antrenat pe un corpus mare de texte și *știe* cum pot fi utilizate cuvintele în diferite contexte. Discutarea încapsulărilor contextuale este în afara scopului acestui tutorial, dar vom reveni la ele când vom vorbi despre modelele lingvistice mai târziu în curs. + +## Concluzie + +În această lecție, ai descoperit cum să construiești și să utilizezi straturi de încapsulare în TensorFlow și PyTorch pentru a reflecta mai bine semnificațiile semantice ale cuvintelor. + +## 🚀 Provocare + +Word2Vec a fost utilizat pentru unele aplicații interesante, inclusiv generarea de versuri și poezii. Aruncă o privire la [acest articol](https://www.politetype.com/blog/word2vec-color-poems) care explică cum autorul a folosit Word2Vec pentru a genera poezie. Urmărește și [acest videoclip de Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) pentru a descoperi o altă explicație a acestei tehnici. Apoi încearcă să aplici aceste tehnici pe propriul tău corpus de texte, poate obținut de pe Kaggle. + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Recapitulare și Studiu Individual + +Citește acest articol despre Word2Vec: [Estimarea Eficientă a Reprezentărilor Cuvintelor în Spațiul Vectorial](https://arxiv.org/pdf/1301.3781.pdf) + +## [Temă: Notebook-uri](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/14-Embeddings/assignment.md b/translations/ro/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..49df4c9b --- /dev/null +++ b/translations/ro/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Tema: Caiete de notițe + +Folosind caietele de notițe asociate acestei lecții (fie versiunea PyTorch, fie versiunea TensorFlow), rulează-le din nou utilizând propriul tău set de date, poate unul de pe Kaggle, utilizat cu atribuirea corespunzătoare. Rescrie caietul de notițe pentru a evidenția propriile tale descoperiri. Încearcă un tip diferit de set de date și documentează-ți concluziile, folosind text precum [aceste versuri ale Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Declinarea responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/15-LanguageModeling/README.md b/translations/ro/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..ebaed2f5 --- /dev/null +++ b/translations/ro/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Modelarea Limbajului + +Încorporările semantice, precum Word2Vec și GloVe, reprezintă de fapt un prim pas către **modelarea limbajului** - crearea unor modele care cumva *înțeleg* (sau *reprezintă*) natura limbajului. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Ideea principală din spatele modelării limbajului este antrenarea acestora pe seturi de date neetichetate într-un mod nesupravegheat. Acest lucru este important deoarece avem la dispoziție cantități uriașe de text neetichetat, în timp ce cantitatea de text etichetat va fi întotdeauna limitată de efortul pe care îl putem depune pentru etichetare. De cele mai multe ori, putem construi modele de limbaj care pot **prezice cuvinte lipsă** în text, deoarece este ușor să mascăm un cuvânt aleatoriu din text și să-l folosim ca exemplu de antrenament. + +## Antrenarea Încorporărilor + +În exemplele anterioare, am folosit încorporări semantice pre-antrenate, dar este interesant să vedem cum pot fi antrenate aceste încorporări. Există mai multe idei posibile care pot fi utilizate: + +* **Modelarea limbajului cu N-Gram**, unde prezicem un token analizând N token-uri anterioare (N-gram). +* **Continuous Bag-of-Words** (CBoW), unde prezicem token-ul din mijloc $W_0$ într-o secvență de token-uri $W_{-N}$, ..., $W_N$. +* **Skip-gram**, unde prezicem un set de token-uri vecine {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} pornind de la token-ul din mijloc $W_0$. + +![imagine dintr-un articol despre conversia cuvintelor în vectori](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.ro.png) + +> Imagine din [acest articol](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Exemple de Notebook-uri: Antrenarea modelului CBoW + +Continuă învățarea cu următoarele notebook-uri: + +* [Antrenarea CBoW Word2Vec cu TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Antrenarea CBoW Word2Vec cu PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Concluzie + +În lecția anterioară am văzut că încorporările de cuvinte funcționează ca prin magie! Acum știm că antrenarea încorporărilor de cuvinte nu este o sarcină foarte complexă și ar trebui să putem antrena propriile încorporări pentru texte specifice unui domeniu, dacă este necesar. + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Recapitulare și Studiu Individual + +* [Tutorial oficial PyTorch despre Modelarea Limbajului](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Tutorial oficial TensorFlow despre antrenarea modelului Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Utilizarea framework-ului **gensim** pentru a antrena cele mai utilizate încorporări în câteva linii de cod este descrisă [în această documentație](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Temă: Antrenează Modelul Skip-Gram](lab/README.md) + +În laborator, te provocăm să modifici codul din această lecție pentru a antrena un model skip-gram în loc de CBoW. [Citește detaliile](lab/README.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/ro/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..e40b46d4 --- /dev/null +++ b/translations/ro/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Antrenarea modelului Skip-Gram + +Temă de laborator din [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +În acest laborator, te provocăm să antrenezi un model Word2Vec folosind tehnica Skip-Gram. Antrenează o rețea cu embedding pentru a prezice cuvintele vecine într-o fereastră Skip-Gram de $N$ token-uri. Poți folosi [codul din această lecție](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) și să-l modifici ușor. + +## Setul de date + +Poți folosi orice carte. Găsești o mulțime de texte gratuite pe [Project Gutenberg](https://www.gutenberg.org/), de exemplu, iată un link direct către [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) de Lewis Carroll. Sau, poți folosi piesele lui Shakespeare, pe care le poți obține folosind următorul cod: + +```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') +``` + +## Explorează! + +Dacă ai timp și vrei să aprofundezi subiectul, încearcă să explorezi câteva aspecte: + +* Cum influențează dimensiunea embedding-ului rezultatele? +* Cum influențează diferitele stiluri de text rezultatele? +* Ia câteva tipuri foarte diferite de cuvinte și sinonimele lor, obține reprezentările lor vectoriale, aplică PCA pentru a reduce dimensiunile la 2 și plotează-le în spațiul 2D. Observi vreun tipar? + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/16-RNN/README.md b/translations/ro/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..2be785f7 --- /dev/null +++ b/translations/ro/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rețele Neuronale Recurente + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +În secțiunile anterioare, am utilizat reprezentări semantice bogate ale textului și un clasificator liniar simplu deasupra acestor embedding-uri. Această arhitectură captează sensul agregat al cuvintelor dintr-o propoziție, dar nu ia în considerare **ordinea** cuvintelor, deoarece operația de agregare deasupra embedding-urilor elimină această informație din textul original. Deoarece aceste modele nu pot modela ordonarea cuvintelor, ele nu pot rezolva sarcini mai complexe sau ambigue, cum ar fi generarea de text sau răspunsul la întrebări. + +Pentru a capta sensul unei secvențe de text, trebuie să utilizăm o altă arhitectură de rețea neuronală, numită **rețea neuronală recurentă**, sau RNN. În RNN, trecem propoziția prin rețea un simbol la un moment dat, iar rețeaua produce un **statut**, pe care îl trecem din nou prin rețea împreună cu următorul simbol. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.ro.png) + +> Imagine realizată de autor + +Având secvența de intrare de tokeni X0,...,Xn, RNN creează o secvență de blocuri de rețea neuronală și antrenează această secvență cap-coadă folosind backpropagation. Fiecare bloc de rețea primește o pereche (Xi,Si) ca intrare și produce Si+1 ca rezultat. Statutul final Sn sau (ieșirea Yn) este transmis unui clasificator liniar pentru a produce rezultatul. Toate blocurile de rețea împărtășesc aceleași greutăți și sunt antrenate cap-coadă folosind o singură trecere de backpropagation. + +Deoarece vectorii de statut S0,...,Sn sunt trecuți prin rețea, aceasta poate învăța dependențele secvențiale dintre cuvinte. De exemplu, atunci când cuvântul *nu* apare undeva în secvență, rețeaua poate învăța să nege anumite elemente din vectorul de statut, rezultând o negare. + +> ✅ Deoarece greutățile tuturor blocurilor RNN din imaginea de mai sus sunt împărtășite, aceeași imagine poate fi reprezentată ca un singur bloc (în dreapta) cu un circuit de feedback recurent, care transmite statutul de ieșire al rețelei înapoi la intrare. + +## Anatomia unei Celule RNN + +Să vedem cum este organizată o celulă RNN simplă. Aceasta acceptă statutul anterior Si-1 și simbolul curent Xi ca intrări și trebuie să producă statutul de ieșire Si (și, uneori, ne interesează și o altă ieșire Yi, ca în cazul rețelelor generative). + +O celulă RNN simplă are două matrici de greutăți interne: una transformă un simbol de intrare (să o numim W), iar cealaltă transformă un statut de intrare (H). În acest caz, ieșirea rețelei este calculată ca σ(W×Xi+H×Si-1+b), unde σ este funcția de activare și b este un bias suplimentar. + +Anatomia unei celule RNN + +> Imagine realizată de autor + +În multe cazuri, tokenii de intrare sunt trecuți prin stratul de embedding înainte de a intra în RNN pentru a reduce dimensionalitatea. În acest caz, dacă dimensiunea vectorilor de intrare este *emb_size*, iar vectorul de statut este *hid_size* - dimensiunea lui W este *emb_size*×*hid_size*, iar dimensiunea lui H este *hid_size*×*hid_size*. + +## Memorie pe Termen Lung și Scurt (LSTM) + +Una dintre principalele probleme ale RNN-urilor clasice este așa-numita problemă a **gradientelor care dispar**. Deoarece RNN-urile sunt antrenate cap-coadă într-o singură trecere de backpropagation, este dificil să se propage eroarea către primele straturi ale rețelei, iar astfel rețeaua nu poate învăța relații între tokeni distanți. Una dintre modalitățile de a evita această problemă este introducerea **gestionării explicite a statutului** prin utilizarea așa-numitelor **porți**. Există două arhitecturi bine cunoscute de acest tip: **Memorie pe Termen Lung și Scurt** (LSTM) și **Unitatea de Releu Gated** (GRU). + +![Imagine care arată un exemplu de celulă LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Sursa imaginii TBD + +Rețeaua LSTM este organizată într-un mod similar cu RNN, dar există două stări care sunt transmise de la un strat la altul: statutul actual C și vectorul ascuns H. La fiecare unitate, vectorul ascuns Hi este concatenat cu intrarea Xi, iar acestea controlează ceea ce se întâmplă cu statutul C prin intermediul **porților**. Fiecare poartă este o rețea neuronală cu activare sigmoid (ieșire în intervalul [0,1]), care poate fi considerată ca o mască bitwise atunci când este înmulțită cu vectorul de statut. Există următoarele porți (de la stânga la dreapta în imaginea de mai sus): + +* **Poarta de uitare** ia un vector ascuns și determină ce componente ale vectorului C trebuie uitate și care trebuie transmise mai departe. +* **Poarta de intrare** ia informații din vectorii de intrare și ascunși și le inserează în statut. +* **Poarta de ieșire** transformă statutul printr-un strat liniar cu activare *tanh*, apoi selectează unele dintre componentele sale folosind vectorul ascuns Hi pentru a produce un nou statut Ci+1. + +Componentele statutului C pot fi considerate ca niște semnale care pot fi activate sau dezactivate. De exemplu, atunci când întâlnim un nume *Alice* în secvență, putem presupune că se referă la un personaj feminin și activăm semnalul în statut că avem un substantiv feminin în propoziție. Când întâlnim ulterior expresia *și Tom*, vom activa semnalul că avem un substantiv plural. Astfel, prin manipularea statutului, putem presupune că urmărim proprietățile gramaticale ale părților propoziției. + +> ✅ O resursă excelentă pentru înțelegerea detaliilor interne ale LSTM este acest articol minunat [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## RNN-uri Bidirecționale și Multistrat + +Am discutat despre rețelele recurente care operează într-o singură direcție, de la începutul unei secvențe până la sfârșit. Pare natural, deoarece seamănă cu modul în care citim și ascultăm vorbirea. Totuși, deoarece în multe cazuri practice avem acces aleatoriu la secvența de intrare, ar putea avea sens să rulăm calculul recurent în ambele direcții. Astfel de rețele se numesc **RNN-uri bidirecționale**. Când lucrăm cu o rețea bidirecțională, vom avea nevoie de doi vectori de statut ascuns, câte unul pentru fiecare direcție. + +O rețea recurentă, fie unidirecțională, fie bidirecțională, captează anumite modele dintr-o secvență și le poate stoca într-un vector de statut sau le poate transmite ca ieșire. La fel ca în cazul rețelelor convoluționale, putem construi un alt strat recurent deasupra primului pentru a capta modele de nivel superior și a construi din modelele de nivel inferior extrase de primul strat. Acest lucru ne conduce la noțiunea de **RNN multistrat**, care constă din două sau mai multe rețele recurente, unde ieșirea stratului anterior este transmisă stratului următor ca intrare. + +![Imagine care arată un RNN multistrat cu LSTM](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.ro.jpg) + +*Imagine din [acest articol minunat](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) de Fernando López* + +## ✍️ Exerciții: Embedding-uri + +Continuă învățarea în următoarele notebook-uri: + +* [RNN-uri cu PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN-uri cu TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Concluzie + +În această unitate, am văzut că RNN-urile pot fi utilizate pentru clasificarea secvențelor, dar de fapt, ele pot gestiona multe alte sarcini, cum ar fi generarea de text, traducerea automată și altele. Vom analiza aceste sarcini în unitatea următoare. + +## 🚀 Provocare + +Citește literatură despre LSTM-uri și ia în considerare aplicațiile lor: + +- [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) + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Recapitulare și Studiu Individual + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) de Christopher Olah. + +## [Temă: Notebook-uri](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/16-RNN/assignment.md b/translations/ro/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..67633aa5 --- /dev/null +++ b/translations/ro/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Tema: Caiete de notițe + +Folosind caietele de notițe asociate acestei lecții (fie versiunea PyTorch, fie versiunea TensorFlow), rulați-le din nou utilizând propriul set de date, poate unul de pe Kaggle, utilizat cu atribuirea corespunzătoare. Rescrieți caietul de notițe pentru a evidenția propriile descoperiri. Încercați un alt tip de set de date și documentați-vă concluziile, folosind text precum [acest set de date din competiția Kaggle despre tweet-uri legate de vreme](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/ro/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..e48e9840 --- /dev/null +++ b/translations/ro/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Rețele generative + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rețelele Neuronale Recurente (RNN) și variantele lor cu celule cu porți, cum ar fi celulele Long Short Term Memory (LSTM) și Gated Recurrent Units (GRU), oferă un mecanism pentru modelarea limbajului, deoarece pot învăța ordinea cuvintelor și pot oferi predicții pentru următorul cuvânt dintr-o secvență. Acest lucru ne permite să folosim RNN pentru **sarcini generative**, cum ar fi generarea obișnuită de text, traducerea automată și chiar generarea de descrieri pentru imagini. + +> ✅ Gândește-te la toate momentele în care ai beneficiat de sarcini generative, cum ar fi completarea textului în timp ce tastezi. Fă niște cercetări despre aplicațiile tale preferate pentru a vedea dacă au folosit RNN. + +În arhitectura RNN discutată în unitatea anterioară, fiecare unitate RNN producea următoarea stare ascunsă ca ieșire. Totuși, putem adăuga și o altă ieșire fiecărei unități recurente, ceea ce ne-ar permite să generăm o **secvență** (egală ca lungime cu secvența originală). Mai mult, putem folosi unități RNN care nu acceptă o intrare la fiecare pas, ci doar iau un vector de stare inițială și apoi produc o secvență de ieșiri. + +Acest lucru permite diferite arhitecturi neuronale, așa cum sunt prezentate în imaginea de mai jos: + +![Imagine care arată modele comune de rețele neuronale recurente.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ro.jpg) + +> Imagine din articolul [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpaty](http://karpathy.github.io/) + +* **One-to-one** este o rețea neuronală tradițională cu o singură intrare și o singură ieșire +* **One-to-many** este o arhitectură generativă care acceptă o singură valoare de intrare și generează o secvență de valori de ieșire. De exemplu, dacă dorim să antrenăm o rețea pentru **descrierea imaginilor** care să producă o descriere textuală a unei imagini, putem folosi o imagine ca intrare, să o trecem printr-o CNN pentru a obține starea ascunsă și apoi să folosim un lanț recurent pentru a genera descrierea cuvânt cu cuvânt +* **Many-to-one** corespunde arhitecturilor RNN descrise în unitatea anterioară, cum ar fi clasificarea textului +* **Many-to-many**, sau **secvență-la-secvență**, corespunde sarcinilor precum **traducerea automată**, unde avem un prim RNN care colectează toate informațiile din secvența de intrare în starea ascunsă, iar un alt lanț RNN desfășoară această stare într-o secvență de ieșire. + +În această unitate, ne vom concentra pe modele generative simple care ne ajută să generăm text. Pentru simplitate, vom folosi tokenizarea la nivel de caracter. + +Vom antrena acest RNN să genereze text pas cu pas. La fiecare pas, vom lua o secvență de caractere de lungime `nchars` și vom cere rețelei să genereze următorul caracter de ieșire pentru fiecare caracter de intrare: + +![Imagine care arată un exemplu de generare RNN a cuvântului 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.ro.png) + +Când generăm text (în timpul inferenței), începem cu un **prompt**, care este trecut prin celulele RNN pentru a genera starea intermediară, iar apoi din această stare începe generarea. Generăm câte un caracter pe rând și transmitem starea și caracterul generat unei alte celule RNN pentru a genera următorul, până când generăm suficiente caractere. + + + +> Imagine realizată de autor + +## ✍️ Exerciții: Rețele generative + +Continuă învățarea în următoarele notebook-uri: + +* [Rețele generative cu PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Rețele generative cu TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Generare moale de text și temperatură + +Ieșirea fiecărei celule RNN este o distribuție de probabilitate a caracterelor. Dacă alegem întotdeauna caracterul cu cea mai mare probabilitate ca următor caracter în textul generat, textul poate deveni adesea "ciclic", repetând aceleași secvențe de caractere din nou și din nou, ca în acest exemplu: + +``` +today of the second the company and a second the company ... +``` + +Totuși, dacă ne uităm la distribuția de probabilitate pentru următorul caracter, este posibil ca diferența dintre câteva dintre cele mai mari probabilități să nu fie mare, de exemplu, un caracter poate avea probabilitatea 0.2, iar altul 0.19, etc. De exemplu, când căutăm următorul caracter în secvența '*play*', următorul caracter poate fi la fel de bine un spațiu sau **e** (ca în cuvântul *player*). + +Acest lucru ne conduce la concluzia că nu este întotdeauna "corect" să alegem caracterul cu probabilitatea cea mai mare, deoarece alegerea celui de-al doilea cel mai probabil poate duce tot la un text semnificativ. Este mai înțelept să **eșantionăm** caracterele din distribuția de probabilitate oferită de ieșirea rețelei. Putem folosi și un parametru, **temperatura**, care va aplatiza distribuția de probabilitate dacă dorim să adăugăm mai multă aleatorie sau o va face mai abruptă dacă dorim să ne concentrăm mai mult pe caracterele cu probabilitate mai mare. + +Explorează cum este implementată această generare moale de text în notebook-urile menționate mai sus. + +## Concluzie + +Deși generarea de text poate fi utilă în sine, beneficiile majore vin din abilitatea de a genera text folosind RNN dintr-un vector de caracteristici inițial. De exemplu, generarea de text este utilizată ca parte a traducerii automate (secvență-la-secvență, în acest caz vectorul de stare de la *encoder* este folosit pentru a genera sau *decoda* mesajul tradus) sau pentru generarea unei descrieri textuale a unei imagini (în acest caz vectorul de caracteristici provine dintr-un extractor CNN). + +## 🚀 Provocare + +Urmează câteva lecții pe Microsoft Learn pe acest subiect: + +* Generare de text cu [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) + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Recapitulare și studiu individual + +Iată câteva articole pentru a-ți extinde cunoștințele: + +* Diferite abordări pentru generarea de text cu Markov Chain, LSTM și GPT-2: [articol pe blog](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Exemplu de generare de text în [documentația Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Temă](lab/README.md) + +Am văzut cum să generăm text caracter cu caracter. În laborator, vei explora generarea de text la nivel de cuvânt. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/ro/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..48698300 --- /dev/null +++ b/translations/ro/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generarea de text la nivel de cuvinte folosind RNN-uri + +Temă de laborator din [Curriculum AI pentru Începători](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +În acest laborator, trebuie să luați orice carte și să o folosiți ca set de date pentru a antrena un generator de text la nivel de cuvinte. + +## Setul de date + +Puteți folosi orice carte doriți. Puteți găsi o mulțime de texte gratuite pe [Project Gutenberg](https://www.gutenberg.org/), de exemplu, aici este un link direct către [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) de Lewis Carroll. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/18-Transformers/README.md b/translations/ro/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..2083fd72 --- /dev/null +++ b/translations/ro/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mecanisme de Atenție și Transformere + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Una dintre cele mai importante probleme din domeniul NLP este **traducerea automată**, o sarcină esențială care stă la baza unor instrumente precum Google Translate. În această secțiune, ne vom concentra pe traducerea automată sau, mai general, pe orice sarcină de tip *secvență-la-secvență* (numită și **transducția propozițiilor**). + +Cu RNN-uri, sarcina secvență-la-secvență este implementată prin două rețele recurente, unde o rețea, **encoderul**, comprimă o secvență de intrare într-o stare ascunsă, iar cealaltă rețea, **decoderul**, desfășoară această stare ascunsă într-un rezultat tradus. Există câteva probleme cu această abordare: + +* Starea finală a rețelei encoder are dificultăți în a-și aminti începutul unei propoziții, ceea ce duce la o calitate slabă a modelului pentru propoziții lungi. +* Toate cuvintele dintr-o secvență au același impact asupra rezultatului. În realitate, însă, anumite cuvinte din secvența de intrare au un impact mai mare asupra ieșirilor secvențiale decât altele. + +**Mecanismele de Atenție** oferă o modalitate de a pondera impactul contextual al fiecărui vector de intrare asupra fiecărei predicții de ieșire a RNN-ului. Modul în care este implementat constă în crearea unor scurtături între stările intermediare ale RNN-ului de intrare și RNN-ul de ieșire. Astfel, când generăm simbolul de ieșire yt, vom lua în considerare toate stările ascunse de intrare hi, cu diferiți coeficienți de ponderare αt,i. + +![Imagine care arată un model encoder/decoder cu un strat de atenție aditiv](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.ro.png) + +> Modelul encoder-decoder cu mecanism de atenție aditiv din [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citat din [acest articol de blog](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matricea de atenție {αi,j} ar reprezenta gradul în care anumite cuvinte de intrare contribuie la generarea unui cuvânt dat în secvența de ieșire. Mai jos este un exemplu al unei astfel de matrice: + +![Imagine care arată o aliniere exemplară găsită de RNNsearch-50, preluată din Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.ro.png) + +> Figură din [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Mecanismele de atenție sunt responsabile pentru o mare parte din starea actuală sau aproape actuală a artei în NLP. Totuși, adăugarea atenției crește semnificativ numărul de parametri ai modelului, ceea ce a dus la probleme de scalare cu RNN-urile. O constrângere cheie a scalării RNN-urilor este că natura recurentă a modelelor face dificilă gruparea și paralelizarea antrenării. În cazul unui RNN, fiecare element al unei secvențe trebuie procesat în ordine secvențială, ceea ce înseamnă că nu poate fi paralelizat cu ușurință. + +![Encoder Decoder cu Atenție](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Figură din [Blogul Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Adoptarea mecanismelor de atenție combinată cu această constrângere a dus la crearea modelelor Transformer, care reprezintă acum starea artei, precum BERT sau Open-GPT3. + +## Modele Transformer + +Una dintre ideile principale din spatele transformatoarelor este evitarea naturii secvențiale a RNN-urilor și crearea unui model care poate fi paralelizat în timpul antrenării. Acest lucru este realizat prin implementarea a două idei: + +* codificarea pozițională +* utilizarea mecanismului de auto-atenție pentru a captura tipare în loc de RNN-uri (sau CNN-uri) (de aceea lucrarea care introduce transformatoarele se numește *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Codificare/Încorporare pozițională + +Ideea codificării poziționale este următoarea. +1. Când folosim RNN-uri, poziția relativă a tokenilor este reprezentată de numărul de pași, și astfel nu trebuie să fie reprezentată explicit. +2. Totuși, odată ce trecem la atenție, trebuie să cunoaștem pozițiile relative ale tokenilor într-o secvență. +3. Pentru a obține codificarea pozițională, augmentăm secvența noastră de tokeni cu o secvență de poziții ale tokenilor în secvență (adică o secvență de numere 0,1, ...). +4. Apoi combinăm poziția tokenului cu un vector de încorporare a tokenului. Pentru a transforma poziția (un număr întreg) într-un vector, putem folosi diferite abordări: + +* Încorporare antrenabilă, similară cu încorporarea tokenilor. Aceasta este abordarea pe care o considerăm aici. Aplicăm straturi de încorporare atât pe tokeni, cât și pe pozițiile lor, rezultând vectori de încorporare de aceleași dimensiuni, pe care îi adunăm apoi. +* Funcție fixă de codificare a poziției, așa cum este propusă în lucrarea originală. + + + +> Imagine de la autor + +Rezultatul pe care îl obținem cu încorporarea pozițională încorporează atât tokenul original, cât și poziția sa într-o secvență. + +### Auto-Atenție Multi-Head + +Următorul pas este capturarea unor tipare în cadrul secvenței noastre. Pentru a face acest lucru, transformatoarele folosesc un mecanism de **auto-atenție**, care este, în esență, atenție aplicată aceleași secvențe ca intrare și ieșire. Aplicarea auto-atenției ne permite să luăm în considerare **contextul** din propoziție și să vedem care cuvinte sunt inter-relaționate. De exemplu, ne permite să vedem care cuvinte sunt referite prin coreferințe, cum ar fi *it*, și să luăm contextul în considerare: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.ro.png) + +> Imagine din [Blogul Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +În transformatoare, folosim **Atenție Multi-Head** pentru a oferi rețelei puterea de a captura mai multe tipuri diferite de dependențe, de exemplu, relații pe termen lung vs. pe termen scurt între cuvinte, coreferințe vs. altceva, etc. + +[Notebook TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) conține mai multe detalii despre implementarea straturilor transformer. + +### Atenție Encoder-Decoder + +În transformatoare, atenția este utilizată în două locuri: + +* Pentru a captura tipare în textul de intrare folosind auto-atenție +* Pentru a realiza traducerea secvenței - este stratul de atenție între encoder și decoder. + +Atenția encoder-decoder este foarte similară cu mecanismul de atenție utilizat în RNN-uri, așa cum este descris la începutul acestei secțiuni. Acest diagramă animată explică rolul atenției encoder-decoder. + +![GIF animat care arată cum sunt realizate evaluările în modelele transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Deoarece fiecare poziție de intrare este mapată independent la fiecare poziție de ieșire, transformatoarele pot paraleliza mai bine decât RNN-urile, ceea ce permite modele de limbaj mult mai mari și mai expresive. Fiecare cap de atenție poate fi utilizat pentru a învăța relații diferite între cuvinte, ceea ce îmbunătățește sarcinile de procesare a limbajului natural. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) este o rețea transformer foarte mare, cu mai multe straturi: 12 straturi pentru *BERT-base* și 24 pentru *BERT-large*. Modelul este mai întâi pre-antrenat pe un corpus mare de date text (Wikipedia + cărți) folosind antrenare nesupravegheată (prezicerea cuvintelor mascate într-o propoziție). În timpul pre-antrenării, modelul absoarbe niveluri semnificative de înțelegere a limbajului, care pot fi apoi utilizate cu alte seturi de date prin ajustare fină. Acest proces se numește **învățare transfer**. + +![imagine de la http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.ro.png) + +> Imagine [sursă](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Exerciții: Transformere + +Continuă învățarea în următoarele notebook-uri: + +* [Transformere în PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformere în TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Concluzie + +În această lecție ai învățat despre Transformere și Mecanismele de Atenție, instrumente esențiale în trusa de unelte NLP. Există multe variații ale arhitecturilor Transformer, inclusiv BERT, DistilBERT, BigBird, OpenGPT3 și altele, care pot fi ajustate fin. Pachetul [HuggingFace](https://github.com/huggingface/) oferă un depozit pentru antrenarea multor dintre aceste arhitecturi atât cu PyTorch, cât și cu TensorFlow. + +## 🚀 Provocare + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Recapitulare și Studiu Individual + +* [Articol de blog](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), care explică lucrarea clasică [Attention is all you need](https://arxiv.org/abs/1706.03762) despre transformere. +* [O serie de articole de blog](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) despre transformere, care explică arhitectura în detaliu. + +## [Temă](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/18-Transformers/assignment.md b/translations/ro/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..64872f4d --- /dev/null +++ b/translations/ro/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Tema: Transformeri + +Experimentează cu Transformeri pe HuggingFace! Încearcă unele dintre scripturile pe care le oferă pentru a lucra cu diferitele modele disponibile pe site-ul lor: https://huggingface.co/docs/transformers/run_scripts. Încearcă unul dintre seturile lor de date, apoi importă unul propriu din acest curriculum sau de pe Kaggle și vezi dacă poți genera texte interesante. Creează un notebook cu concluziile tale. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/19-NER/README.md b/translations/ro/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..a732aa87 --- /dev/null +++ b/translations/ro/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,94 @@ + +# Recunoașterea Entităților Denumite + +Până acum, ne-am concentrat în principal pe o singură sarcină NLP - clasificarea. Totuși, există și alte sarcini NLP care pot fi realizate cu ajutorul rețelelor neuronale. Una dintre aceste sarcini este **[Recunoașterea Entităților Denumite](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), care se ocupă cu identificarea entităților specifice din text, cum ar fi locuri, nume de persoane, intervale de timp, formule chimice și altele. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Exemplu de utilizare a NER + +Să presupunem că dorești să dezvolți un chatbot de limbaj natural, similar cu Amazon Alexa sau Google Assistant. Modul în care funcționează chatbot-urile inteligente este să *înțeleagă* ce dorește utilizatorul prin clasificarea textului din propoziția de intrare. Rezultatul acestei clasificări este așa-numitul **intent**, care determină ce ar trebui să facă chatbot-ul. + +Bot NER + +> Imagine realizată de autor + +Totuși, utilizatorul poate furniza anumite parametri ca parte a frazei. De exemplu, când cere informații despre vreme, poate specifica o locație sau o dată. Un bot ar trebui să fie capabil să înțeleagă aceste entități și să completeze sloturile de parametri corespunzător înainte de a efectua acțiunea. Exact aici intervine NER. + +> ✅ Un alt exemplu ar fi [analiza articolelor științifice medicale](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Unul dintre principalele lucruri pe care trebuie să le căutăm sunt termenii medicali specifici, cum ar fi bolile și substanțele medicale. În timp ce un număr mic de boli poate fi extras probabil prin căutare de subșiruri, entitățile mai complexe, cum ar fi compușii chimici și denumirile medicamentelor, necesită o abordare mai complexă. + +## NER ca clasificare de tokeni + +Modelele NER sunt, în esență, **modele de clasificare a tokenilor**, deoarece pentru fiecare dintre tokenii de intrare trebuie să decidem dacă aparține unei entități sau nu, și dacă da - cărei clase de entitate îi aparține. + +Să luăm în considerare următorul titlu de articol: + +**Regurgitarea valvei tricuspide** și **carbonatul de litiu** **toxicitate** la un nou-născut. + +Entitățile aici sunt: + +* Regurgitarea valvei tricuspide este o boală (`DIS`) +* Carbonatul de litiu este o substanță chimică (`CHEM`) +* Toxicitatea este, de asemenea, o boală (`DIS`) + +Observă că o entitate poate cuprinde mai mulți tokeni. Și, ca în acest caz, trebuie să facem diferența între două entități consecutive. Astfel, este obișnuit să folosim două clase pentru fiecare entitate - una care specifică primul token al entității (adesea se folosește prefixul `B-`, pentru **b**eginning), și alta - continuarea unei entități (`I-`, pentru **i**nner token). De asemenea, folosim `O` ca o clasă pentru a reprezenta toți ceilalți tokeni (**o**ther). O astfel de etichetare a tokenilor se numește [eticheta BIO](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (sau IOB). După etichetare, titlul nostru va arăta astfel: + +Token | Etichetă +------|----- +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 + +Deoarece trebuie să construim o corespondență unu-la-unu între tokeni și clase, putem antrena un model neuronal **many-to-many** din această imagine: + +![Imagine care arată modele comune de rețele neuronale recurente.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.ro.jpg) + +> *Imagine din [acest articol de blog](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) de [Andrej Karpathy](http://karpathy.github.io/). Modelele de clasificare a tokenilor NER corespund arhitecturii de rețea din partea dreaptă a imaginii.* + +## Antrenarea modelelor NER + +Deoarece un model NER este, în esență, un model de clasificare a tokenilor, putem folosi RNN-uri cu care suntem deja familiarizați pentru această sarcină. În acest caz, fiecare bloc al rețelei recurente va returna ID-ul tokenului. Următorul notebook exemplu arată cum să antrenezi un LSTM pentru clasificarea tokenilor. + +## ✍️ Notebook-uri exemplu: NER + +Continuă învățarea în următorul notebook: + +* [NER cu TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Concluzie + +Un model NER este un **model de clasificare a tokenilor**, ceea ce înseamnă că poate fi utilizat pentru a efectua clasificarea tokenilor. Aceasta este o sarcină foarte comună în NLP, ajutând la recunoașterea entităților specifice din text, inclusiv locuri, nume, date și altele. + +## 🚀 Provocare + +Completează sarcina legată mai jos pentru a antrena un model de recunoaștere a entităților denumite pentru termeni medicali, apoi încearcă-l pe un alt set de date. + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Recapitulare & Studiu individual + +Citește articolul de blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) și urmează secțiunea de lecturi suplimentare din acel articol pentru a-ți aprofunda cunoștințele. + +## [Sarcină](lab/README.md) + +În sarcina pentru această lecție, va trebui să antrenezi un model de recunoaștere a entităților medicale. Poți începe cu antrenarea unui model LSTM, așa cum este descris în această lecție, și să continui cu utilizarea modelului BERT transformer. Citește [instrucțiunile](lab/README.md) pentru a obține toate detaliile. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/19-NER/lab/README.md b/translations/ro/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..5d7ba675 --- /dev/null +++ b/translations/ro/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Temă de laborator din [Curriculum AI pentru Începători](https://github.com/microsoft/ai-for-beginners). + +## Sarcina + +În acest laborator, trebuie să antrenezi un model de recunoaștere a entităților numite (NER) pentru termeni medicali. + +## Setul de date + +Pentru a antrena un model NER, avem nevoie de un set de date etichetat corespunzător cu entități medicale. [Setul de date BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) conține entități etichetate de boli și substanțe chimice din peste 1500 de lucrări. Poți descărca setul de date după ce te înregistrezi pe site-ul lor. + +Setul de date BC5CDR arată astfel: + +``` +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 +... +``` + +În acest set de date, titlul și rezumatul lucrării sunt în primele două linii, iar apoi urmează entitățile individuale, cu pozițiile de început și sfârșit în cadrul blocului titlu+rezumat. În plus față de tipul entității, primești ID-ul ontologic al acestei entități în cadrul unei ontologii medicale. + +Va trebui să scrii ceva cod Python pentru a converti acest set de date în format BIO. + +## Rețeaua + +Prima încercare de NER poate fi realizată folosind o rețea LSTM, așa cum ai văzut în exemplul din lecție. Totuși, în sarcinile NLP, [arhitectura transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), și în special [modelele de limbaj BERT](https://en.wikipedia.org/wiki/BERT_(language_model)) oferă rezultate mult mai bune. Modelele BERT pre-antrenate înțeleg structura generală a unei limbi și pot fi ajustate pentru sarcini specifice cu seturi de date relativ mici și costuri computaționale reduse. + +Deoarece intenționăm să aplicăm NER într-un scenariu medical, are sens să utilizăm un model BERT antrenat pe texte medicale. Microsoft Research a lansat un model pre-antrenat numit [PubMedBERT][PubMedBERT] ([publicație][PubMedBERT-Pub]), care a fost ajustat folosind texte din depozitul [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Standardul *de facto* pentru antrenarea modelelor transformer este biblioteca [Hugging Face Transformers](https://huggingface.co/). Aceasta conține și un depozit de modele pre-antrenate întreținute de comunitate, inclusiv PubMedBERT. Pentru a încărca și utiliza acest model, avem nevoie doar de câteva linii de cod: + +```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) +``` + +Aceasta ne oferă `model`-ul propriu-zis, construit pentru sarcina de clasificare a tokenilor folosind `classes` numărul de clase, precum și obiectul `tokenizer` care poate împărți textul de intrare în tokeni. Va trebui să convertești setul de date în format BIO, ținând cont de tokenizarea PubMedBERT. Poți folosi [acest fragment de cod Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) ca inspirație. + +## Concluzie + +Această sarcină este foarte apropiată de sarcina reală pe care este probabil să o ai dacă dorești să obții mai multe informații din volume mari de texte în limbaj natural. În cazul nostru, putem aplica modelul antrenat pe [setul de date al lucrărilor legate de COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) și să vedem ce informații putem obține. [Această postare pe blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) și [acest articol](https://www.mdpi.com/2504-2289/6/1/4) descriu cercetările care pot fi realizate pe acest corpus de lucrări folosind NER. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/20-LangModels/README.md b/translations/ro/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..6ead9054 --- /dev/null +++ b/translations/ro/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Modele Mari de Limbaj Pre-Antrenate + +În toate sarcinile noastre anterioare, am antrenat o rețea neuronală pentru a îndeplini o anumită sarcină folosind un set de date etichetat. Cu modelele mari de tip transformer, precum BERT, folosim modelarea limbajului într-un mod auto-supervizat pentru a construi un model de limbaj, care este apoi specializat pentru o sarcină specifică printr-un antrenament suplimentar pe un domeniu specific. Totuși, s-a demonstrat că modelele mari de limbaj pot rezolva multe sarcini fără NICIUN antrenament specific pe domeniu. O familie de modele capabile să facă acest lucru se numește **GPT**: Transformer Generativ Pre-Antrenat. + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generarea de Text și Perplexitatea + +Ideea unei rețele neuronale capabile să îndeplinească sarcini generale fără antrenament suplimentar este prezentată în lucrarea [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Ideea principală este că multe alte sarcini pot fi modelate folosind **generarea de text**, deoarece înțelegerea textului înseamnă, în esență, a fi capabil să îl produci. Deoarece modelul este antrenat pe o cantitate uriașă de text care cuprinde cunoștințele umane, acesta devine, de asemenea, informat despre o mare varietate de subiecte. + +> Înțelegerea și capacitatea de a produce text implică, de asemenea, cunoașterea lumii din jurul nostru. Oamenii învață, în mare măsură, citind, iar rețeaua GPT este similară în acest sens. + +Rețelele de generare de text funcționează prin prezicerea probabilității următorului cuvânt $$P(w_N)$$. Totuși, probabilitatea necondiționată a următorului cuvânt este egală cu frecvența acestui cuvânt în corpusul de text. GPT este capabil să ne ofere **probabilitatea condiționată** a următorului cuvânt, având în vedere cuvintele anterioare: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Puteți citi mai multe despre probabilități în [Curriculum-ul nostru de Știința Datelor pentru Începători](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Calitatea unui model de generare a limbajului poate fi definită folosind **perplexitatea**. Este o metrică intrinsecă care ne permite să măsurăm calitatea modelului fără un set de date specific sarcinii. Aceasta se bazează pe noțiunea de *probabilitate a unei propoziții* - modelul atribuie o probabilitate mare unei propoziții care este probabil să fie reală (adică modelul nu este **perplex** de aceasta) și o probabilitate mică propozițiilor care au mai puțin sens (de exemplu, *Poate face ce?*). Când oferim modelului propoziții dintr-un corpus de text real, ne-am aștepta ca acestea să aibă o probabilitate mare și o **perplexitate** scăzută. Matematic, aceasta este definită ca probabilitatea inversă normalizată a setului de testare: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Puteți experimenta cu generarea de text folosind [editorul de text bazat pe GPT de la Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. În acest editor, începeți să scrieți textul, iar apăsarea tastei **[TAB]** vă va oferi mai multe opțiuni de completare. Dacă acestea sunt prea scurte sau nu sunteți mulțumit de ele - apăsați din nou [TAB], și veți avea mai multe opțiuni, inclusiv fragmente mai lungi de text. + +## GPT este o Familie + +GPT nu este un singur model, ci mai degrabă o colecție de modele dezvoltate și antrenate de [OpenAI](https://openai.com). + +Sub umbrela modelelor GPT, avem: + +| [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) | +| -- | -- | -- | +| Model de limbaj cu până la 1,5 miliarde de parametri. | Model de limbaj cu până la 175 miliarde de parametri. | 100T parametri și acceptă atât intrări de tip imagine, cât și text, oferind ieșiri sub formă de text. | + +Modelele GPT-3 și GPT-4 sunt disponibile [ca serviciu cognitiv de la Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) și prin [API-ul OpenAI](https://openai.com/api/). + +## Ingineria Prompturilor + +Deoarece GPT a fost antrenat pe volume vaste de date pentru a înțelege limbajul și codul, acestea oferă răspunsuri la intrări (prompturi). Prompturile sunt intrările sau interogările pentru GPT, prin care se oferă instrucțiuni modelelor pentru sarcinile pe care urmează să le finalizeze. Pentru a obține un rezultat dorit, este necesar un prompt eficient, care implică selectarea cuvintelor, formatelor, frazelor sau chiar simbolurilor potrivite. Această abordare se numește [Ingineria Prompturilor](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Această documentație](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vă oferă mai multe informații despre ingineria prompturilor. + +## ✍️ Notebook Exemplu: [Experimentând cu OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Continuați învățarea cu următoarele notebook-uri: + +* [Generarea de text cu OpenAI-GPT și Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Concluzie + +Noile modele generale de limbaj pre-antrenate nu doar modelează structura limbajului, ci conțin și o cantitate vastă de limbaj natural. Astfel, ele pot fi utilizate eficient pentru a rezolva unele sarcini NLP în setări zero-shot sau few-shot. + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/5-NLP/README.md b/translations/ro/lessons/5-NLP/README.md new file mode 100644 index 00000000..8c239a67 --- /dev/null +++ b/translations/ro/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Procesarea Limbajului Natural + +![Rezumat al sarcinilor NLP într-un desen](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.ro.png) + +În această secțiune, ne vom concentra pe utilizarea Rețelelor Neuronale pentru a rezolva sarcini legate de **Procesarea Limbajului Natural (NLP)**. Există multe probleme NLP pe care ne dorim ca calculatoarele să le poată rezolva: + +* **Clasificarea textului** este o problemă tipică de clasificare care implică secvențe de text. Exemple includ clasificarea mesajelor e-mail ca spam sau non-spam, sau categorisirea articolelor ca sport, afaceri, politică etc. De asemenea, atunci când dezvoltăm chatboți, trebuie adesea să înțelegem ce a vrut să spună utilizatorul – în acest caz ne confruntăm cu **clasificarea intenției**. Adesea, în clasificarea intenției, trebuie să gestionăm multe categorii. +* **Analiza sentimentelor** este o problemă tipică de regresie, unde trebuie să atribuim un număr (un sentiment) care corespunde cât de pozitiv/negativ este sensul unei propoziții. O versiune mai avansată a analizei sentimentelor este **analiza sentimentelor bazată pe aspecte** (ABSA), unde atribuim sentimente nu întregii propoziții, ci diferitelor părți ale acesteia (aspecte), de exemplu: *La acest restaurant, mi-a plăcut bucătăria, dar atmosfera a fost groaznică*. +* **Recunoașterea Entităților Numite** (NER) se referă la problema extragerii anumitor entități din text. De exemplu, trebuie să înțelegem că în fraza *Trebuie să zbor la Paris mâine* cuvântul *mâine* se referă la DATA, iar *Paris* este o LOCAȚIE. +* **Extracția de cuvinte cheie** este similară cu NER, dar trebuie să extragem automat cuvinte importante pentru sensul propoziției, fără antrenare prealabilă pentru tipuri specifice de entități. +* **Clusterele de text** pot fi utile atunci când dorim să grupăm propoziții similare, de exemplu, cereri similare în conversațiile de asistență tehnică. +* **Răspunsul la întrebări** se referă la abilitatea unui model de a răspunde la o întrebare specifică. Modelul primește un pasaj de text și o întrebare ca intrări și trebuie să furnizeze un loc în text unde se află răspunsul la întrebare (sau, uneori, să genereze textul răspunsului). +* **Generarea de text** este abilitatea unui model de a genera text nou. Poate fi considerată o sarcină de clasificare care prezice următoarea literă/cuvânt pe baza unui *text prompt*. Modelele avansate de generare de text, cum ar fi GPT-3, pot rezolva alte sarcini NLP folosind o tehnică numită [programare prin prompturi](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) sau [ingineria prompturilor](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Sumarizarea textului** este o tehnică prin care dorim ca un computer să "citească" un text lung și să-l rezume în câteva propoziții. +* **Traducerea automată** poate fi privită ca o combinație între înțelegerea textului într-o limbă și generarea textului într-o altă limbă. + +Inițial, majoritatea sarcinilor NLP erau rezolvate folosind metode tradiționale, cum ar fi gramaticile. De exemplu, în traducerea automată, se foloseau parsere pentru a transforma propoziția inițială într-un arbore sintactic, apoi se extrăgeau structuri semantice de nivel superior pentru a reprezenta sensul propoziției, iar pe baza acestui sens și a gramaticii limbii țintă se genera rezultatul. În prezent, multe sarcini NLP sunt rezolvate mai eficient folosind rețele neuronale. + +> Multe metode clasice NLP sunt implementate în biblioteca Python [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Există o excelentă [Carte NLTK](https://www.nltk.org/book/) disponibilă online, care acoperă modul în care diferite sarcini NLP pot fi rezolvate folosind NLTK. + +În cadrul acestui curs, ne vom concentra în principal pe utilizarea Rețelelor Neuronale pentru NLP și vom folosi NLTK acolo unde este necesar. + +Am învățat deja despre utilizarea rețelelor neuronale pentru a lucra cu date tabelare și imagini. Principala diferență între aceste tipuri de date și text este că textul este o secvență de lungime variabilă, în timp ce dimensiunea intrării în cazul imaginilor este cunoscută în avans. Deși rețelele convoluționale pot extrage tipare din datele de intrare, tiparele din text sunt mai complexe. De exemplu, putem avea o negație separată de subiect printr-un număr arbitrar de cuvinte (de exemplu: *Nu îmi plac portocalele* vs. *Nu îmi plac acele portocale mari, colorate și gustoase*), iar acest lucru ar trebui interpretat tot ca un singur tipar. Astfel, pentru a gestiona limbajul, trebuie să introducem noi tipuri de rețele neuronale, cum ar fi *rețelele recurente* și *transformerele*. + +## Instalarea Bibliotecilor + +Dacă utilizați o instalare locală de Python pentru a rula acest curs, este posibil să fie nevoie să instalați toate bibliotecile necesare pentru NLP folosind următoarele comenzi: + +**Pentru PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Pentru TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Puteți încerca NLP cu TensorFlow pe [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Avertisment GPU + +În această secțiune, în unele exemple vom antrena modele destul de mari. +* **Utilizați un computer cu GPU**: Este recomandat să rulați notebook-urile pe un computer cu GPU pentru a reduce timpii de așteptare atunci când lucrați cu modele mari. +* **Constrângeri de memorie GPU**: Rularea pe un GPU poate duce la situații în care rămâneți fără memorie GPU, mai ales când antrenați modele mari. +* **Consum de memorie GPU**: Cantitatea de memorie GPU consumată în timpul antrenării depinde de diverși factori, inclusiv dimensiunea minibatch-ului. +* **Minimizați dimensiunea minibatch-ului**: Dacă întâmpinați probleme de memorie GPU, luați în considerare reducerea dimensiunii minibatch-ului în codul dvs. ca o soluție posibilă. +* **Eliberarea memoriei GPU în TensorFlow**: Versiunile mai vechi de TensorFlow pot să nu elibereze corect memoria GPU atunci când antrenați mai multe modele într-un singur kernel Python. Pentru a gestiona eficient utilizarea memoriei GPU, puteți configura TensorFlow să aloce memorie GPU doar atunci când este necesar. +* **Includerea codului**: Pentru a seta TensorFlow să crească alocarea memoriei GPU doar când este necesar, includeți următorul cod în notebook-urile dvs.: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Dacă sunteți interesat să învățați despre NLP dintr-o perspectivă clasică a ML, vizitați [această suită de lecții](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## În această secțiune +În această secțiune vom învăța despre: + +* [Reprezentarea textului ca tensori](13-TextRep/README.md) +* [Încorporări de cuvinte](14-Emdeddings/README.md) +* [Modelarea limbajului](15-LanguageModeling/README.md) +* [Rețele Neuronale Recurente](16-RNN/README.md) +* [Rețele Generative](17-GenerativeNetworks/README.md) +* [Transformere](18-Transformers/README.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/ro/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..9c40ef04 --- /dev/null +++ b/translations/ro/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Algoritmi Genetici + +## [Chestionar înainte de curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Algoritmii Genetici** (AG) se bazează pe o **abordare evolutivă** a inteligenței artificiale, în care metodele de evoluție a unei populații sunt utilizate pentru a obține o soluție optimă pentru o problemă dată. Aceștia au fost propuși în 1975 de [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Algoritmii Genetici se bazează pe următoarele idei: + +* Soluțiile valide ale problemei pot fi reprezentate ca **gene** +* **Încrucișarea** ne permite să combinăm două soluții pentru a obține o nouă soluție validă +* **Selecția** este utilizată pentru a alege soluții mai optime folosind o **funcție de fitness** +* **Mutațiile** sunt introduse pentru a destabiliza optimizarea și a ne scoate dintr-un minim local + +Dacă dorești să implementezi un Algoritm Genetic, ai nevoie de următoarele: + +* Să găsești o metodă de codificare a soluțiilor problemei folosind **gene** g∈Γ +* Pe setul de gene Γ trebuie să definești o **funcție de fitness** fit: Γ→**R**. Valorile mai mici ale funcției corespund soluțiilor mai bune. +* Să definești un mecanism de **încrucișare** pentru a combina două gene și a obține o nouă soluție validă crossover: Γ2→Γ. +* Să definești un mecanism de **mutație** mutate: Γ→Γ. + +În multe cazuri, încrucișarea și mutația sunt algoritmi destul de simpli pentru a manipula genele ca secvențe numerice sau vectori de biți. + +Implementarea specifică a unui algoritm genetic poate varia de la caz la caz, dar structura generală este următoarea: + +1. Selectează o populație inițială G⊂Γ +2. Selectează aleatoriu una dintre operațiile care vor fi efectuate în acest pas: încrucișare sau mutație +3. **Încrucișare**: + * Selectează aleatoriu două gene g1, g2 ∈ G + * Calculează încrucișarea g=crossover(g1,g2) + * Dacă fit(g)1) sau fit(g)2) - înlocuiește gena corespunzătoare din populație cu g. +4. **Mutație** - selectează o genă aleatorie g∈G și înlocuiește-o cu mutate(g) +5. Repetă de la pasul 2, până când obții o valoare suficient de mică a funcției fit sau până când se atinge limita numărului de pași. + +## Sarcini Tipice + +Sarcinile rezolvate în mod obișnuit de Algoritmii Genetici includ: + +1. Optimizarea programărilor +1. Împachetarea optimă +1. Tăierea optimă +1. Accelerarea căutării exhaustive + +## ✍️ Exerciții: Algoritmi Genetici + +Continuă învățarea în următoarele notebook-uri: + +Accesează [acest notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) pentru a vedea două exemple de utilizare a Algoritmilor Genetici: + +1. Împărțirea echitabilă a unei comori +1. Problema celor 8 regine + +## Concluzie + +Algoritmii Genetici sunt utilizați pentru a rezolva multe probleme, inclusiv probleme de logistică și căutare. Domeniul este inspirat de cercetări care au îmbinat subiecte din Psihologie și Știința Calculatoarelor. + +## 🚀 Provocare + +"Algoritmii genetici sunt simpli de implementat, dar comportamentul lor este dificil de înțeles." [sursa](https://wikipedia.org/wiki/Genetic_algorithm) Fă câteva cercetări pentru a găsi o implementare a unui algoritm genetic, cum ar fi rezolvarea unui puzzle Sudoku, și explică cum funcționează sub forma unei schițe sau a unui diagram de flux. + +## [Chestionar după curs](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Recapitulare și Studiu Individual + +Urmărește [acest videoclip excelent](https://www.youtube.com/watch?v=qv6UVOQ0F44) care vorbește despre cum un calculator poate învăța să joace Super Mario folosind rețele neuronale antrenate de algoritmi genetici. Vom învăța mai multe despre cum calculatoarele învață să joace astfel de jocuri [în secțiunea următoare](../22-DeepRL/README.md). + +## [Temă: Ecuația Diofantică](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Scopul tău este să rezolvi așa-numita **ecuație diofantică** - o ecuație cu rădăcini întregi. De exemplu, consideră ecuația a+2b+3c+4d=30. Trebuie să găsești rădăcinile întregi care satisfac această ecuație. + +*Această temă este inspirată de [acest articol](https://habr.com/post/128704/).* + +Sugestii: + +1. Poți considera rădăcinile în intervalul [0;30] +1. Ca genă, poți utiliza lista valorilor rădăcinilor + +Folosește [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) ca punct de plecare. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să aveți în vedere că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/6-Other/22-DeepRL/README.md b/translations/ro/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..d4ea36b7 --- /dev/null +++ b/translations/ro/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Învățare prin Recompensă Profundă + +Învățarea prin recompensă (RL) este considerată unul dintre paradigmele de bază ale învățării automate, alături de învățarea supravegheată și nesupravegheată. În timp ce în învățarea supravegheată ne bazăm pe un set de date cu rezultate cunoscute, RL se bazează pe **învățarea prin acțiune**. De exemplu, atunci când vedem pentru prima dată un joc pe calculator, începem să jucăm, chiar dacă nu cunoaștem regulile, și în scurt timp ne îmbunătățim abilitățile doar prin procesul de joc și ajustarea comportamentului. + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Pentru a realiza RL, avem nevoie de: + +* Un **mediu** sau **simulator** care stabilește regulile jocului. Trebuie să putem rula experimente în simulator și să observăm rezultatele. +* O **funcție de recompensă**, care indică cât de reușit a fost experimentul nostru. În cazul învățării să jucăm un joc pe calculator, recompensa ar fi scorul final. + +Pe baza funcției de recompensă, ar trebui să putem ajusta comportamentul și să ne îmbunătățim abilitățile, astfel încât data viitoare să jucăm mai bine. Principala diferență între alte tipuri de învățare automată și RL este că, în RL, de obicei nu știm dacă câștigăm sau pierdem până la finalul jocului. Astfel, nu putem spune dacă o anumită mișcare este bună sau nu - primim recompensa doar la sfârșitul jocului. + +În timpul RL, de obicei realizăm multe experimente. În fiecare experiment, trebuie să echilibrăm între urmarea strategiei optime pe care am învățat-o până acum (**exploatare**) și explorarea unor stări noi posibile (**explorare**). + +## OpenAI Gym + +Un instrument excelent pentru RL este [OpenAI Gym](https://gym.openai.com/) - un **mediu de simulare**, care poate simula multe medii diferite, de la jocuri Atari până la fizica echilibrării unui stâlp. Este unul dintre cele mai populare medii de simulare pentru antrenarea algoritmilor de învățare prin recompensă și este întreținut de [OpenAI](https://openai.com/). + +> **Note**: Puteți vedea toate mediile disponibile în OpenAI Gym [aici](https://gym.openai.com/envs/#classic_control). + +## Echilibrarea CartPole + +Probabil ați văzut cu toții dispozitive moderne de echilibrare, cum ar fi *Segway* sau *Gyroscooters*. Acestea sunt capabile să se echilibreze automat prin ajustarea roților ca răspuns la un semnal de la un accelerometru sau giroscop. În această secțiune, vom învăța cum să rezolvăm o problemă similară - echilibrarea unui stâlp. Este similar cu situația în care un artist de circ trebuie să echilibreze un stâlp pe mâna sa - dar această echilibrare a stâlpului are loc doar într-o dimensiune. + +O versiune simplificată a echilibrării este cunoscută sub numele de problema **CartPole**. În lumea CartPole, avem un slider orizontal care se poate mișca la stânga sau la dreapta, iar scopul este să echilibrăm un stâlp vertical deasupra sliderului în timp ce acesta se mișcă. + +un cartpole + +Pentru a crea și utiliza acest mediu, avem nevoie de câteva linii de cod 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}") +``` + +Fiecare mediu poate fi accesat exact în același mod: +* `env.reset` începe un nou experiment +* `env.step` efectuează un pas de simulare. Primește o **acțiune** din **spațiul de acțiuni** și returnează o **observație** (din spațiul de observații), precum și o recompensă și un indicator de terminare. + +În exemplul de mai sus, efectuăm o acțiune aleatorie la fiecare pas, motiv pentru care durata experimentului este foarte scurtă: + +![cartpole fără echilibrare](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Scopul unui algoritm RL este să antreneze un model - așa-numita **politică** π - care va returna acțiunea ca răspuns la o stare dată. De asemenea, putem considera politica ca fiind probabilistică, de exemplu, pentru orice stare *s* și acțiune *a*, aceasta va returna probabilitatea π(*a*|*s*) că ar trebui să luăm *a* în starea *s*. + +## Algoritmul Policy Gradients + +Cel mai evident mod de a modela o politică este prin crearea unei rețele neuronale care va lua stările ca intrare și va returna acțiunile corespunzătoare (sau mai degrabă probabilitățile tuturor acțiunilor). Într-un sens, ar fi similar cu o sarcină normală de clasificare, cu o diferență majoră - nu știm în avans ce acțiuni ar trebui să luăm la fiecare pas. + +Ideea aici este să estimăm aceste probabilități. Construim un vector de **recompense cumulative** care arată recompensa totală la fiecare pas al experimentului. De asemenea, aplicăm **discounting-ul recompenselor** prin înmulțirea recompenselor anterioare cu un coeficient γ=0.99, pentru a diminua rolul recompenselor anterioare. Apoi, întărim acei pași de-a lungul traseului experimentului care generează recompense mai mari. + +> Aflați mai multe despre algoritmul Policy Gradient și vedeți-l în acțiune în [notebook-ul de exemplu](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmul Actor-Critic + +O versiune îmbunătățită a abordării Policy Gradients se numește **Actor-Critic**. Ideea principală din spatele acestuia este că rețeaua neuronală ar fi antrenată să returneze două lucruri: + +* Politica, care determină ce acțiune să luăm. Această parte se numește **actor**. +* Estimarea recompensei totale pe care ne putem aștepta să o obținem în această stare - această parte se numește **critic**. + +Într-un sens, această arhitectură seamănă cu un [GAN](../../4-ComputerVision/10-GANs/README.md), unde avem două rețele care sunt antrenate una împotriva celeilalte. În modelul actor-critic, actorul propune acțiunea pe care trebuie să o luăm, iar criticul încearcă să fie critic și să estimeze rezultatul. Totuși, scopul nostru este să antrenăm aceste rețele în unison. + +Pentru că știm atât recompensele cumulative reale, cât și rezultatele returnate de critic în timpul experimentului, este relativ ușor să construim o funcție de pierdere care va minimiza diferența dintre ele. Aceasta ne va oferi **pierderi critic**. Putem calcula **pierderi actor** folosind aceeași abordare ca în algoritmul Policy Gradient. + +După rularea unuia dintre aceste algoritme, ne putem aștepta ca CartPole-ul nostru să se comporte astfel: + +![cartpole echilibrat](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Exerciții: Policy Gradients și Actor-Critic RL + +Continuați învățarea în următoarele notebook-uri: + +* [RL în TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL în PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Alte Sarcini RL + +Învățarea prin recompensă este în prezent un domeniu de cercetare în plină expansiune. Unele exemple interesante de învățare prin recompensă sunt: + +* Învățarea unui computer să joace **jocuri Atari**. Partea provocatoare în această problemă este că nu avem o stare simplă reprezentată ca un vector, ci mai degrabă o captură de ecran - și trebuie să folosim CNN pentru a converti această imagine într-un vector de caracteristici sau pentru a extrage informații despre recompensă. Jocurile Atari sunt disponibile în Gym. +* Învățarea unui computer să joace jocuri de masă, cum ar fi Șah și Go. Recent, programe de ultimă generație precum **Alpha Zero** au fost antrenate de la zero prin doi agenți care joacă unul împotriva celuilalt și se îmbunătățesc la fiecare pas. +* În industrie, RL este utilizat pentru a crea sisteme de control din simulare. Un serviciu numit [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) este special conceput pentru acest lucru. + +## Concluzie + +Am învățat acum cum să antrenăm agenți pentru a obține rezultate bune doar oferindu-le o funcție de recompensă care definește starea dorită a jocului și oferindu-le oportunitatea de a explora inteligent spațiul de căutare. Am încercat cu succes două algoritmi și am obținut un rezultat bun într-o perioadă relativ scurtă de timp. Totuși, acesta este doar începutul călătoriei voastre în RL, și ar trebui să luați în considerare un curs separat dacă doriți să aprofundați. + +## 🚀 Provocare + +Explorați aplicațiile enumerate în secțiunea 'Alte Sarcini RL' și încercați să implementați una! + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Recapitulare și Studiu Individual + +Aflați mai multe despre învățarea prin recompensă clasică în [Curriculum-ul nostru de Învățare Automată pentru Începători](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Urmăriți [acest video excelent](https://www.youtube.com/watch?v=qv6UVOQ0F44) despre cum un computer poate învăța să joace Super Mario. + +## Temă: [Antrenează o Mașină de Munte](lab/README.md) + +Scopul vostru în această temă va fi să antrenați un mediu diferit din Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/6-Other/22-DeepRL/lab/README.md b/translations/ro/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..3ff98348 --- /dev/null +++ b/translations/ro/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Mediul + +Mediul Mountain Car constă într-o mașină prinsă într-o vale. Scopul tău este să sari afară din vale și să ajungi la steag. Acțiunile pe care le poți efectua sunt accelerarea spre stânga, spre dreapta sau să nu faci nimic. Poți observa poziția mașinii de-a lungul axei x și viteza. + +## Notebook de Pornire + +Începe laboratorul deschizând [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Concluzie + +Ar trebui să înveți pe parcursul acestui laborator că adoptarea algoritmilor RL pentru un mediu nou este adesea destul de simplă, deoarece OpenAI Gym are aceeași interfață pentru toate mediile, iar algoritmii, în general, nu depind foarte mult de natura mediului. Poți chiar să restructurezi codul Python astfel încât să treci orice mediu ca parametru pentru algoritmul RL. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/6-Other/23-MultiagentSystems/README.md b/translations/ro/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..f2364e04 --- /dev/null +++ b/translations/ro/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Sisteme Multi-Agent + +Una dintre modalitățile posibile de a obține inteligență este abordarea așa-numită **emergentă** (sau **sinergică**), care se bazează pe faptul că comportamentul combinat al multor agenți relativ simpli poate duce la un comportament general mai complex (sau inteligent) al sistemului în ansamblu. Teoretic, aceasta se bazează pe principiile [Inteligenței Colective](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentismului](https://en.wikipedia.org/wiki/Global_brain) și [Ciberneticii Evolutive](https://en.wikipedia.org/wiki/Global_brain), care afirmă că sistemele de nivel superior dobândesc un fel de valoare adăugată atunci când sunt combinate corespunzător din sisteme de nivel inferior (așa-numitul *principiu al tranziției metasistemului*). + +## [Chestionar înainte de lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Direcția **Sistemelor Multi-Agent** a apărut în AI în anii 1990 ca răspuns la creșterea Internetului și a sistemelor distribuite. Unul dintre manualele clasice de AI, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se concentrează pe perspectiva AI clasică din punctul de vedere al sistemelor multi-agent. + +Central pentru abordarea multi-agent este noțiunea de **Agent** - o entitate care trăiește într-un anumit **mediu**, pe care îl poate percepe și asupra căruia poate acționa. Aceasta este o definiție foarte largă, iar agenții pot fi clasificați în multe tipuri diferite: + +* După capacitatea lor de a raționa: + - Agenții **reactivi** au, de obicei, un comportament simplu de tip cerere-răspuns + - Agenții **deliberativi** utilizează un fel de raționament logic și/sau capacități de planificare +* După locul unde agentul își execută codul: + - Agenții **statici** funcționează pe un nod de rețea dedicat + - Agenții **mobili** își pot muta codul între nodurile de rețea +* După comportamentul lor: + - Agenții **pasivi** nu au scopuri specifice. Acești agenți pot reacționa la stimuli externi, dar nu vor iniția acțiuni de la sine. + - Agenții **activi** au anumite scopuri pe care le urmăresc + - Agenții **cognitivi** implică planificare și raționament complex + +Sistemele multi-agent sunt utilizate în prezent într-o serie de aplicații: + +* În jocuri, mulți personaje non-jucător folosesc un fel de AI și pot fi considerați agenți inteligenți +* În producția video, randarea scenelor 3D complexe care implică mulțimi se face, de obicei, folosind simulări multi-agent +* În modelarea sistemelor, abordarea multi-agent este utilizată pentru a simula comportamentul unui model complex. De exemplu, abordarea multi-agent a fost utilizată cu succes pentru a prezice răspândirea bolii COVID-19 la nivel mondial. O abordare similară poate fi utilizată pentru a modela traficul dintr-un oraș și pentru a vedea cum reacționează la schimbările regulilor de circulație. +* În sistemele complexe de automatizare, fiecare dispozitiv poate acționa ca un agent independent, ceea ce face ca întregul sistem să fie mai puțin monolitic și mai robust. + +Nu vom petrece mult timp aprofundând sistemele multi-agent, dar vom analiza un exemplu de **Modelare Multi-Agent**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) este un mediu de modelare multi-agent bazat pe o versiune modificată a limbajului de programare [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Acest limbaj a fost dezvoltat pentru a învăța concepte de programare copiilor și permite controlul unui agent numit **turtle** (broască țestoasă), care se poate deplasa, lăsând o urmă în spate. Acest lucru permite crearea de figuri geometrice complexe, fiind o modalitate foarte vizuală de a înțelege comportamentul unui agent. + +În NetLogo, putem crea mai multe broaște țestoase folosind comanda `create-turtles`. Putem apoi comanda tuturor broaștelor țestoase să facă anumite acțiuni (în exemplul de mai jos - să se deplaseze înainte cu 10 puncte): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Desigur, nu este interesant când toate broaștele țestoase fac același lucru, așa că putem `ask` grupuri de broaște țestoase, de exemplu, cele care se află în apropierea unui anumit punct. De asemenea, putem crea broaște țestoase de diferite *rase* folosind comanda `breed [cats cat]`. Aici `cat` este numele unei rase, iar trebuie să specificăm atât forma singulară, cât și cea plurală, deoarece diferite comenzi folosesc forme diferite pentru claritate. + +> ✅ Nu vom învăța limbajul NetLogo în detaliu - puteți vizita excelenta resursă [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) dacă sunteți interesați să aflați mai multe. + +Puteți [descărca](https://ccl.northwestern.edu/netlogo/download.shtml) și instala NetLogo pentru a-l încerca. + +### Biblioteca de modele + +Un lucru grozav despre NetLogo este că conține o bibliotecă de modele funcționale pe care le puteți încerca. Accesați **File → Models Library**, și aveți multe categorii de modele din care să alegeți. + +NetLogo Models Library + +> O captură de ecran a bibliotecii de modele de Dmitry Soshnikov + +Puteți deschide unul dintre modele, de exemplu **Biology → Flocking**. + +### Principii principale + +După deschiderea modelului, veți fi dus la ecranul principal NetLogo. Iată un model exemplu care descrie populația de lupi și oi, având resurse finite (iarbă). + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.ro.png) + +> Captură de ecran de Dmitry Soshnikov + +Pe acest ecran, puteți vedea: + +* Secțiunea **Interface**, care conține: + - Câmpul principal, unde trăiesc toți agenții + - Diferite controale: butoane, glisoare etc. + - Grafice pe care le puteți utiliza pentru a afișa parametrii simulării +* Fila **Code**, care conține editorul unde puteți scrie programul NetLogo + +În cele mai multe cazuri, interfața va avea un buton **Setup**, care inițializează starea simulării, și un buton **Go**, care începe execuția. Acestea sunt gestionate de manipulatoare corespunzătoare în cod, care arată astfel: + +``` +to go [ +... +] +``` + +Lumea NetLogo constă din următoarele obiecte: + +* **Agenți** (broaște țestoase) care se pot deplasa pe câmp și pot face ceva. Comandați agenții folosind sintaxa `ask turtles [...]`, iar codul din paranteze este executat de toți agenții în *modul broască țestoasă*. +* **Patch-uri** sunt zone pătrate ale câmpului, pe care trăiesc agenții. Puteți face referire la toți agenții de pe același patch sau puteți schimba culorile patch-urilor și alte proprietăți. De asemenea, puteți `ask patches` să facă ceva. +* **Observatorul** este un agent unic care controlează lumea. Toate manipulatoarele de butoane sunt executate în *modul observator*. + +> ✅ Frumusețea unui mediu multi-agent constă în faptul că codul care rulează în modul broască țestoasă sau în modul patch este executat simultan de toți agenții în paralel. Astfel, scriind puțin cod și programând comportamentul unui agent individual, puteți crea un comportament complex al sistemului de simulare în ansamblu. + +### Flocking + +Ca exemplu de comportament multi-agent, să analizăm **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking este un model complex foarte asemănător cu modul în care zboară stolurile de păsări. Privindu-le zburând, puteți crede că urmează un fel de algoritm colectiv sau că posedă o formă de *inteligență colectivă*. Totuși, acest comportament complex apare atunci când fiecare agent individual (în acest caz, o *pasăre*) observă doar alți agenți pe o distanță scurtă și urmează trei reguli simple: + +* **Aliniere** - se îndreaptă către direcția medie a agenților vecini +* **Coeziune** - încearcă să se îndrepte către poziția medie a vecinilor (*atracție pe termen lung*) +* **Separare** - când se apropie prea mult de alte păsări, încearcă să se îndepărteze (*repulsie pe termen scurt*) + +Puteți rula exemplul de flocking și observa comportamentul. De asemenea, puteți ajusta parametrii, cum ar fi *gradul de separare* sau *raza de vizibilitate*, care definește cât de departe poate vedea fiecare pasăre. Observați că, dacă reduceți raza de vizibilitate la 0, toate păsările devin oarbe, iar flocking-ul se oprește. Dacă reduceți separarea la 0, toate păsările se adună într-o linie dreaptă. + +> ✅ Treceți la fila **Code** și vedeți unde sunt implementate cele trei reguli de flocking (aliniere, coeziune și separare) în cod. Observați cum facem referire doar la agenții care sunt în câmpul vizual. + +### Alte modele de explorat + +Există câteva modele interesante pe care le puteți experimenta: + +* **Art → Fireworks** arată cum un foc de artificii poate fi considerat un comportament colectiv al fluxurilor individuale de foc +* **Social Science → Traffic Basic** și **Social Science → Traffic Grid** arată modelul traficului urban într-o grilă 1D și 2D, cu sau fără semafoare. Fiecare mașină din simulare urmează următoarele reguli: + - Dacă spațiul din față este gol - accelerează (până la o anumită viteză maximă) + - Dacă vede un obstacol în față - frânează (și puteți ajusta cât de departe poate vedea un șofer) +* **Social Science → Party** arată cum oamenii se grupează în timpul unei petreceri. Puteți găsi combinația de parametri care duce la cea mai rapidă creștere a fericirii grupului. + +După cum puteți vedea din aceste exemple, simulările multi-agent pot fi o modalitate foarte utilă de a înțelege comportamentul unui sistem complex format din indivizi care urmează aceeași logică sau una similară. De asemenea, poate fi utilizat pentru a controla agenți virtuali, cum ar fi [NPC-uri](https://en.wikipedia.org/wiki/NPC) în jocuri pe calculator sau agenți în lumi animate 3D. + +## Agenți Deliberativi + +Agenții descriși mai sus sunt foarte simpli, reacționând la schimbările din mediu folosind un fel de algoritm. Astfel, ei sunt **agenți reactivi**. Totuși, uneori agenții pot raționa și planifica acțiunile lor, caz în care sunt numiți **deliberativi**. + +Un exemplu tipic ar fi un agent personal care primește o instrucțiune de la un om pentru a rezerva un tur de vacanță. Să presupunem că există mulți agenți care trăiesc pe internet și care îl pot ajuta. Acesta ar trebui să contacteze alți agenți pentru a vedea ce zboruri sunt disponibile, care sunt prețurile hotelurilor pentru diferite date și să încerce să negocieze cel mai bun preț. Când planul de vacanță este complet și confirmat de proprietar, poate continua cu rezervarea. + +Pentru a face acest lucru, agenții trebuie să **comunice**. Pentru o comunicare de succes, ei au nevoie de: + +* Unele **limbaje standard pentru schimbul de cunoștințe**, cum ar fi [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) și [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Aceste limbaje sunt concepute pe baza [teoriei actului de vorbire](https://en.wikipedia.org/wiki/Speech_act). +* Aceste limbaje ar trebui să includă și **protocoale pentru negocieri**, bazate pe diferite **tipuri de licitații**. +* O **ontologie comună** de utilizat, astfel încât să se refere la aceleași concepte cunoscând semantica lor +* O modalitate de a **descoperi** ce pot face diferiți agenți, bazată tot pe un fel de ontologie + +Agenții deliberativi sunt mult mai complexi decât cei reactivi, deoarece nu doar reacționează la schimbările din mediu, ci trebuie să fie capabili să *inițieze* acțiuni. Una dintre arhitecturile propuse pentru agenții deliberativi este agentul Belief-Desire-Intention (BDI): + +* **Beliefs** formează un set de cunoștințe despre mediul agentului. Acesta poate fi structurat ca o bază de cunoștințe sau un set de reguli pe care agentul le poate aplica unei situații specifice din mediu. +* **Desires** definesc ceea ce agentul dorește să facă, adică scopurile sale. De exemplu, scopul agentului asistent personal de mai sus este să rezerve un tur, iar scopul unui agent hotelier este să maximizeze profitul. +* **Intentions** sunt acțiuni specifice pe care un agent le planifică pentru a-și atinge scopurile. Acțiunile modifică, de obicei, mediul și determină comunicarea cu alți agenți. + +Există câteva platforme disponibile pentru construirea sistemelor multi-agent, cum ar fi [JADE](https://jade.tilab.com/). [Acest articol](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) conține o revizuire a platformelor multi-agent, împreună cu o scurtă istorie a sistemelor multi-agent și diferitele scenarii de utilizare ale acestora. + +## Concluzie + +Sistemele Multi-Agent pot lua forme foarte diferite și pot fi utilizate în multe aplicații diferite. +Toate tind să se concentreze pe comportamentul mai simplu al unui agent individual și să obțină un comportament mai complex al sistemului general datorită **efectului sinergic**. + +## 🚀 Provocare + +Aplicați această lecție în lumea reală și încercați să conceptualizați un sistem multi-agent care poate rezolva o problemă. Ce ar trebui să facă, de exemplu, un sistem multi-agent pentru a optimiza ruta unui autobuz școlar? Cum ar putea funcționa într-o brutărie? + +## [Chestionar după lecție](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Revizuire și Studiu Individual + +Revizuiți utilizarea acestui tip de sistem în industrie. Alegeți un domeniu, cum ar fi producția sau industria jocurilor video, și descoperiți cum sistemele multi-agent pot fi utilizate pentru a rezolva probleme unice. + +## [Temă NetLogo](assignment.md) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/ro/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..d4192068 --- /dev/null +++ b/translations/ro/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Tema NetLogo + +Alege unul dintre modelele din biblioteca NetLogo și folosește-l pentru a simula o situație din viața reală cât mai fidel posibil. Un exemplu bun ar fi să modifici modelul Virus din folderul Alternative Visualizations pentru a arăta cum poate fi utilizat pentru a modela răspândirea COVID-19. Poți construi un model care să imite răspândirea reală a unui virus? + +Arată-ți munca salvând o copie și realizând un videoclip demonstrativ în care explici cum este conectat modelul la o situație din lumea reală. + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de oameni. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/7-Ethics/README.md b/translations/ro/lessons/7-Ethics/README.md new file mode 100644 index 00000000..248cf918 --- /dev/null +++ b/translations/ro/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Inteligență Artificială Etică și Responsabilă + +Ai aproape terminat acest curs și sper că până acum ai înțeles clar că inteligența artificială (IA) se bazează pe o serie de metode matematice formale care ne permit să găsim relații în date și să antrenăm modele pentru a replica anumite aspecte ale comportamentului uman. În acest moment al istoriei, considerăm IA ca fiind un instrument foarte puternic pentru a extrage tipare din date și pentru a aplica aceste tipare în rezolvarea unor probleme noi. + +## [Chestionar înainte de curs](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Totuși, în science fiction vedem adesea povești în care IA reprezintă un pericol pentru omenire. De obicei, aceste povești se concentrează pe un fel de rebeliune a IA, când aceasta decide să se confrunte cu ființele umane. Acest lucru implică faptul că IA are un fel de emoție sau poate lua decizii neprevăzute de dezvoltatorii săi. + +Tipul de IA despre care am învățat în acest curs nu este altceva decât aritmetică pe matrice mari. Este un instrument foarte puternic care ne ajută să ne rezolvăm problemele și, ca orice alt instrument puternic, poate fi folosit atât în scopuri bune, cât și rele. Important este că poate fi *folosit greșit*. + +## Principiile unei IA Responsabile + +Pentru a evita utilizarea greșită, accidentală sau intenționată, a IA, Microsoft enunță importantele [Principii ale unei IA Responsabile](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Următoarele concepte stau la baza acestor principii: + +* **Echitate** este legată de problema importantă a *prejudecăților modelului*, care pot fi cauzate de utilizarea unor date părtinitoare pentru antrenare. De exemplu, când încercăm să prezicem probabilitatea ca o persoană să obțină un loc de muncă ca dezvoltator software, modelul este probabil să acorde o preferință mai mare bărbaților - doar pentru că setul de date de antrenare a fost probabil părtinitor către un public masculin. Trebuie să echilibrăm cu atenție datele de antrenare și să investigăm modelul pentru a evita prejudecățile și să ne asigurăm că modelul ia în considerare caracteristici mai relevante. +* **Fiabilitate și Siguranță**. Prin natura lor, modelele IA pot face greșeli. O rețea neuronală returnează probabilități, iar noi trebuie să ținem cont de acest lucru atunci când luăm decizii. Fiecare model are o anumită precizie și un anumit recall, iar noi trebuie să înțelegem acest lucru pentru a preveni daunele pe care le pot provoca sfaturile greșite. +* **Confidențialitate și Securitate** au implicații specifice pentru IA. De exemplu, atunci când folosim anumite date pentru a antrena un model, aceste date devin cumva "integrate" în model. Pe de o parte, acest lucru crește securitatea și confidențialitatea, pe de altă parte - trebuie să ne amintim ce date au fost utilizate pentru antrenarea modelului. +* **Incluziune** înseamnă că nu construim IA pentru a înlocui oamenii, ci mai degrabă pentru a-i sprijini și pentru a face munca noastră mai creativă. Este, de asemenea, legată de echitate, deoarece atunci când lucrăm cu comunități subreprezentate, majoritatea seturilor de date pe care le colectăm sunt probabil părtinitoare, iar noi trebuie să ne asigurăm că aceste comunități sunt incluse și tratate corect de IA. +* **Transparență**. Aceasta include asigurarea faptului că suntem întotdeauna clari cu privire la utilizarea IA. De asemenea, acolo unde este posibil, dorim să folosim sisteme IA care sunt *interpretabile*. +* **Responsabilitate**. Când modelele IA iau anumite decizii, nu este întotdeauna clar cine este responsabil pentru acele decizii. Trebuie să ne asigurăm că înțelegem unde se află responsabilitatea pentru deciziile IA. În majoritatea cazurilor, ne-am dori să includem ființe umane în procesul de luare a deciziilor importante, astfel încât oamenii să fie cei care își asumă responsabilitatea. + +## Instrumente pentru o IA Responsabilă + +Microsoft a dezvoltat [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), care conține un set de instrumente: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard care include: + + - EconML - un instrument pentru Analiza Cauzală, care se concentrează pe întrebări de tip "ce-ar fi dacă" + - DiCE - un instrument pentru Analiza Contrafactuală care îți permite să vezi ce caracteristici trebuie schimbate pentru a influența decizia modelului + +Pentru mai multe informații despre Etica în IA, te rugăm să vizitezi [această lecție](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) din Curriculum-ul de Învățare Automată, care include teme. + +## Recapitulare și Studiu Individual + +Parcurge acest [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) pentru a afla mai multe despre IA responsabilă. + +## [Chestionar după curs](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/README.md b/translations/ro/lessons/README.md new file mode 100644 index 00000000..487e6d62 --- /dev/null +++ b/translations/ro/lessons/README.md @@ -0,0 +1,17 @@ + +# Prezentare generală + +![Prezentare generală într-un desen](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.ro.png) + +> Notiță ilustrată de [Tomomi Imura](https://twitter.com/girlie_mac) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/X-Extras/X1-MultiModal/README.md b/translations/ro/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..c07d837a --- /dev/null +++ b/translations/ro/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Rețele Multi-Modale + +După succesul modelelor transformer în rezolvarea sarcinilor NLP, aceleași sau arhitecturi similare au fost aplicate și în sarcinile de viziune computerizată. Există un interes tot mai mare în construirea de modele care să *combine* capabilitățile de viziune și limbaj natural. Unul dintre aceste eforturi a fost realizat de OpenAI și se numește CLIP și DALL.E. + +## Contrastive Image Pre-Training (CLIP) + +Ideea principală a CLIP este de a putea compara descrieri textuale cu o imagine și de a determina cât de bine corespunde imaginea descrierii. + +![CLIP Architecture](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.ro.png) + +> *Imagine din [acest articol](https://openai.com/blog/clip/)* + +Modelul este antrenat pe imagini obținute de pe Internet și pe descrierile lor. Pentru fiecare lot, luăm N perechi de (imagine, text) și le convertim în reprezentări vectoriale I, ..., I / T, ..., T. Aceste reprezentări sunt apoi potrivite între ele. Funcția de pierdere este definită pentru a maximiza similaritatea cosinusului între vectorii corespunzători unei perechi (de exemplu, I și T) și pentru a minimiza similaritatea cosinusului între toate celelalte perechi. Acesta este motivul pentru care această abordare se numește **contrastivă**. + +Biblioteca/modelul CLIP este disponibilă pe [GitHub-ul OpenAI](https://github.com/openai/CLIP). Abordarea este descrisă în [acest articol](https://openai.com/blog/clip/) și în detaliu în [această lucrare](https://arxiv.org/pdf/2103.00020.pdf). + +Odată ce acest model este pre-antrenat, putem să-i oferim un lot de imagini și un lot de descrieri textuale, iar rezultatul va fi un tensor cu probabilități. CLIP poate fi utilizat pentru mai multe sarcini: + +**Clasificarea Imaginilor** + +Să presupunem că trebuie să clasificăm imagini între, să zicem, pisici, câini și oameni. În acest caz, putem oferi modelului o imagine și o serie de descrieri textuale: "*o imagine cu o pisică*", "*o imagine cu un câine*", "*o imagine cu un om*". În vectorul rezultat de 3 probabilități, trebuie doar să selectăm indexul cu cea mai mare valoare. + +![CLIP for Image Classification](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.ro.png) + +> *Imagine din [acest articol](https://openai.com/blog/clip/)* + +**Căutare de Imagini Bazată pe Text** + +Putem face și invers. Dacă avem o colecție de imagini, putem transmite această colecție modelului și o descriere textuală - aceasta ne va oferi imaginea care este cea mai similară cu descrierea dată. + +## ✍️ Exemplu: [Utilizarea CLIP pentru Clasificarea Imaginilor și Căutarea de Imagini](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Deschideți notebook-ul [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) pentru a vedea CLIP în acțiune. + +## Generarea de Imagini cu VQGAN+CLIP + +CLIP poate fi utilizat și pentru **generarea de imagini** dintr-o descriere textuală. Pentru a face acest lucru, avem nevoie de un **model generator** care să poată genera imagini pe baza unui vector de intrare. Unul dintre aceste modele se numește [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Ideile principale ale VQGAN care îl diferențiază de GAN-ul obișnuit sunt următoarele: +* Utilizarea arhitecturii transformer autoregresive pentru a genera o secvență de părți vizuale bogate în context care compun imaginea. Aceste părți vizuale sunt învățate de [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Utilizarea unui discriminator de sub-imagini care detectează dacă părțile imaginii sunt "reale" sau "false" (spre deosebire de abordarea "totul sau nimic" din GAN-ul tradițional). + +Aflați mai multe despre VQGAN pe site-ul [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Una dintre diferențele importante între VQGAN și GAN-ul tradițional este că cel din urmă poate produce o imagine decentă din orice vector de intrare, în timp ce VQGAN este probabil să producă o imagine incoerentă. Astfel, trebuie să ghidăm procesul de creare a imaginii, iar acest lucru poate fi realizat folosind CLIP. + +![VQGAN+CLIP Architecture](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.ro.png) + +Pentru a genera o imagine corespunzătoare unei descrieri textuale, începem cu un vector de codificare aleatoriu care este transmis prin VQGAN pentru a produce o imagine. Apoi, CLIP este utilizat pentru a produce o funcție de pierdere care arată cât de bine corespunde imaginea descrierii textuale. Scopul este de a minimiza această pierdere, utilizând backpropagation pentru a ajusta parametrii vectorului de intrare. + +O bibliotecă excelentă care implementează VQGAN+CLIP este [Pixray](http://github.com/pixray/pixray). + +![Imagine produsă de Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.ro.png) | ![Imagine produsă de Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.ro.png) | ![Imagine produsă de Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.ro.png) +----|----|---- +Imagine generată din descrierea *un portret în acuarelă, prim-plan, al unui tânăr profesor de literatură cu o carte* | Imagine generată din descrierea *un portret în ulei, prim-plan, al unei tinere profesoare de informatică cu un computer* | Imagine generată din descrierea *un portret în ulei, prim-plan, al unui profesor bătrân de matematică în fața unei table negre* + +> Imagini din colecția **Artificial Teachers** de [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E este o versiune a GPT-3 antrenată pentru a genera imagini din descrieri. A fost antrenată cu 12 miliarde de parametri. + +Spre deosebire de CLIP, DALL-E primește atât textul, cât și imaginea ca un flux unic de tokeni pentru ambele. Prin urmare, din mai multe descrieri, puteți genera imagini bazate pe text. + +### [DALL-E 2](https://openai.com/dall-e-2) +Principala diferență între DALL-E 1 și 2 este că aceasta generează imagini și artă mai realiste. + +Exemple de imagini generate cu DALL-E: +![Imagine produsă de 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.ro.png) | ![Imagine produsă de 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.ro.png) | ![Imagine produsă de 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.ro.png) +----|----|---- +Imagine generată din descrierea *un portret în acuarelă, prim-plan, al unui tânăr profesor de literatură cu o carte* | Imagine generată din descrierea *un portret în ulei, prim-plan, al unei tinere profesoare de informatică cu un computer* | Imagine generată din descrierea *un portret în ulei, prim-plan, al unui profesor bătrân de matematică în fața unei table negre* + +## Referințe + +* Lucrarea VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Lucrarea CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/sketchnotes/LICENSE.md b/translations/ro/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..e5539d7d --- /dev/null +++ b/translations/ro/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,116 @@ + +Drepturi, această licență se aplică și pentru baza de date respectivă, cu condiția să respectați condițiile stabilite în Secțiunea 3 (Attribution) și Secțiunea 3(b) (ShareAlike); și + + c. nu puteți aplica măsuri tehnologice eficiente sau impune alte restricții care să limiteze drepturile acordate de această licență asupra bazei de date. + +Secțiunea 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. Cu excepția cazului în care este convenit altfel în mod explicit de către Licențiator, și în măsura maximă permisă de legea aplicabilă, Licențiatorul oferă Materialul Licențiat „ca atare” și „așa cum este disponibil”, fără garanții de niciun fel, fie exprimate, fie implicite, inclusiv, dar fără a se limita la, garanții de comercializare, adecvare pentru un anumit scop, absența defectelor latente sau ascunse, acuratețe sau absența încălcării drepturilor altora. Unele jurisdicții nu permit excluderea garanțiilor implicite, astfel încât această excludere poate să nu se aplice în cazul dumneavoastră. + + b. În măsura maximă permisă de legea aplicabilă, nici Licențiatorul, nici părțile care oferă material licențiat conform acestei licențe nu vor fi responsabile față de dumneavoastră pentru nicio pierdere, cost, cheltuială sau daune de orice fel rezultate din această licență sau din utilizarea Materialului Licențiat, chiar dacă Licențiatorul a fost informat despre posibilitatea unor astfel de pierderi, costuri, cheltuieli sau daune. Unele jurisdicții nu permit limitarea răspunderii pentru daune accidentale sau indirecte, astfel încât această limitare poate să nu se aplice în cazul dumneavoastră. + + c. Disclaimerul de garanții și limitarea răspunderii prevăzute mai sus vor fi interpretate în cel mai larg sens permis de legea aplicabilă. + +Secțiunea 6 -- Termen și Reziliere. + + a. Termen. Această Licență Publică se aplică atâta timp cât drepturile de autor și Drepturile Similare asupra Materialului Licențiat sunt în vigoare. Cu toate acestea, dacă nu respectați condițiile acestei Licențe Publice, drepturile dumneavoastră sub această licență vor înceta automat. + + b. Reinstaurarea drepturilor. + + 1. Dacă drepturile dumneavoastră au încetat în temeiul Secțiunii 6(a), acestea vor fi reinstaurate automat: + + a. la data la care încălcarea este remediată, cu condiția ca aceasta să fie remediată în termen de 30 de zile de la descoperirea încălcării; sau + + b. la data la care Licențiatorul vă acordă în mod expres o reinstaurare a drepturilor. + + 2. Pentru a evita orice dubiu, această Secțiune 6(b) nu afectează niciun drept al Licențiatorului de a solicita despăgubiri pentru încălcări ale acestei Licențe Publice. + + c. Supraviețuirea. Secțiunile 1, 5, 6, 7 și 8 vor rămâne în vigoare chiar și după încetarea acestei Licențe Publice. + +Secțiunea 7 -- Alte Termeni și Condiții. + + a. Licențiatorul nu va fi obligat să respecte niciun termen sau condiție suplimentară sau diferită comunicată de dumneavoastră, cu excepția cazului în care este convenit în mod expres. + + b. Orice aranjament, înțelegere sau acord separat pe care îl puteți avea cu Licențiatorul în legătură cu Materialul Licențiat nu este afectat de această Licență Publică. + +Secțiunea 8 -- Interpretare. + + a. Această Licență Publică nu reduce, limitează sau restricționează nicio utilizare permisă de excepțiile și limitările aplicabile drepturilor de autor și Drepturilor Similare. + + b. În măsura în care este posibil, dacă o prevedere a acestei Licențe Publice este considerată inaplicabilă, aceasta va fi ajustată pentru a deveni aplicabilă. Dacă prevederea nu poate fi ajustată, aceasta va fi eliminată din această Licență Publică fără a afecta aplicabilitatea celorlalte prevederi. + + c. Nicio prevedere a acestei Licențe Publice nu va fi considerată ca limitând sau renunțând la orice privilegiu și imunitate aplicabilă Licențiatorului sau dumneavoastră, inclusiv cele derivate din procese legale internaționale. + + +Drepturi, apoi baza de date în care aveți Drepturi Sui Generis asupra Bazei de Date (dar nu asupra conținutului individual al acesteia) este Material Adaptat, + +inclusiv în scopurile Secțiunii 3(b); și +c. Trebuie să respectați condițiile din Secțiunea 3(a) dacă distribuiți toate sau o parte substanțială din conținutul bazei de date. + +Pentru evitarea oricăror ambiguități, această Secțiune 4 completează și nu înlocuiește obligațiile dumneavoastră conform acestei Licențe Publice, în cazul în care Drepturile Licențiate includ alte Drepturi de Autor și Drepturi Similare. + +--- + +Secțiunea 5 -- Declarație de renunțare la garanții și limitarea răspunderii. + +a. CU EXCEPȚIA CAZULUI ÎN CARE LICENȚIATORUL SE ANGAJEAZĂ SEPARAT, ÎN MĂSURA POSIBILĂ, LICENȚIATORUL OFERĂ MATERIALUL LICENȚIAT „CA ATARE” ȘI „AȘA CUM ESTE DISPONIBIL” ȘI NU FACE NICIO DECLARAȚIE SAU GARANȚIE DE NICIUN FEL CU PRIVIRE LA MATERIALUL LICENȚIAT, FIE EXPRESĂ, IMPLICITĂ, LEGALĂ SAU ALTFEL. ACEST LUCRU INCLUDE, FĂRĂ LIMITARE, GARANȚII PRIVIND TITLUL, VANDABILITATEA, ADECVAREA PENTRU UN SCOP ANUME, NEÎNCĂLCAREA, ABSENȚA DEFECTELOR LATENTE SAU ALTE DEFECTE, ACURATEȚEA, SAU PREZENȚA SAU ABSENȚA ERORILOR, INDIFERENT DACĂ SUNT CUNOSCUTE SAU DESCOPERITE. UNDE DECLARAȚIILE DE RENUNȚARE LA GARANȚII NU SUNT PERMISE ÎN TOTALITATE SAU PARȚIAL, ACEASTĂ DECLARAȚIE DE RENUNȚARE POATE SĂ NU SE APLICE DUMNEAVOASTRĂ. + +b. ÎN MĂSURA POSIBILĂ, ÎN NICIUN CAZ LICENȚIATORUL NU VA FI RĂSPUNZĂTOR FAȚĂ DE DUMNEAVOASTRĂ PE NICIO TEORIE JURIDICĂ (INCLUSIV, FĂRĂ LIMITARE, NEGLIJENȚĂ) SAU ALTFEL PENTRU NICIUN FEL DE PIERDERI DIRECTE, SPECIALE, INDIRECTE, INCIDENTALE, CONSECUTIVE, PUNITIVE, EXEMPLARE SAU ALTE PIERDERI, COSTURI, CHELTUIELI SAU DAUNE REZULTATE DIN ACEASTĂ LICENȚĂ PUBLICĂ SAU DIN UTILIZAREA MATERIALULUI LICENȚIAT, CHIAR DACĂ LICENȚIATORUL A FOST AVERTIZAT CU PRIVIRE LA POSIBILITATEA UNOR ASTFEL DE PIERDERI, COSTURI, CHELTUIELI SAU DAUNE. UNDE LIMITAREA RĂSPUNDERII NU ESTE PERMISĂ ÎN TOTALITATE SAU PARȚIAL, ACEASTĂ LIMITARE POATE SĂ NU SE APLICE DUMNEAVOASTRĂ. + +c. Declarația de renunțare la garanții și limitarea răspunderii prevăzute mai sus trebuie interpretate într-un mod care, în măsura posibilă, să se apropie cel mai mult de o renunțare absolută și o exonerare de orice răspundere. + +--- + +Secțiunea 6 -- Durată și încetare. + +a. Această Licență Publică se aplică pe durata Drepturilor de Autor și Drepturilor Similare licențiate aici. Totuși, dacă nu respectați această Licență Publică, drepturile dumneavoastră conform acestei Licențe Publice se încheie automat. + +b. În cazul în care dreptul dumneavoastră de a utiliza Materialul Licențiat a fost încheiat conform Secțiunii 6(a), acesta se reinstaurează: + +1. automat, începând cu data la care încălcarea este remediată, cu condiția ca aceasta să fie remediată în termen de 30 de zile de la descoperirea încălcării; sau +2. prin reinstaurare expresă de către Licențiator. + +Pentru evitarea oricăror ambiguități, această Secțiune 6(b) nu afectează niciun drept pe care Licențiatorul îl poate avea pentru a solicita remedii pentru încălcările dumneavoastră ale acestei Licențe Publice. + +c. Pentru evitarea oricăror ambiguități, Licențiatorul poate, de asemenea, să ofere Materialul Licențiat conform unor termeni sau condiții separate sau să înceteze distribuirea Materialului Licențiat în orice moment; totuși, acest lucru nu va încheia această Licență Publică. + +d. Secțiunile 1, 5, 6, 7 și 8 rămân valabile după încetarea acestei Licențe Publice. + +--- + +Secțiunea 7 -- Alte termeni și condiții. + +a. Licențiatorul nu va fi obligat de niciun termen sau condiție suplimentară sau diferită comunicată de dumneavoastră, cu excepția cazului în care este convenit în mod expres. + +b. Orice aranjamente, înțelegeri sau acorduri privind Materialul Licențiat care nu sunt menționate aici sunt separate și independente de termenii și condițiile acestei Licențe Publice. + +--- + +Secțiunea 8 -- Interpretare. + +a. Pentru evitarea oricăror ambiguități, această Licență Publică nu reduce, limitează, restricționează sau impune condiții asupra niciunei utilizări ale Materialului Licențiat care ar putea fi realizate legal fără permisiune conform acestei Licențe Publice. + +b. În măsura posibilă, dacă orice prevedere a acestei Licențe Publice este considerată inaplicabilă, aceasta va fi reformată automat la minimul necesar pentru a o face aplicabilă. Dacă prevederea nu poate fi reformată, aceasta va fi separată de această Licență Publică fără a afecta aplicabilitatea termenilor și condițiilor rămase. + +c. Niciun termen sau condiție ale acestei Licențe Publice nu va fi renunțat și nicio nerespectare nu va fi consimțită decât dacă este convenit în mod expres de către Licențiator. + +d. Nimic din această Licență Publică nu constituie sau poate fi interpretat ca o limitare sau renunțare la orice privilegii și imunități care se aplică Licențiatorului sau dumneavoastră, inclusiv față de procesele legale ale oricărei jurisdicții sau autorități. + +--- + +======================================================================= + +Creative Commons nu este parte a licențelor sale publice. Cu toate acestea, Creative Commons poate alege să aplice una dintre licențele sale publice materialului pe care îl publică și, în aceste cazuri, va fi considerat „Licențiatorul”. Textul licențelor publice Creative Commons este dedicat domeniului public conform CC0 Public Domain Dedication. Cu excepția scopului limitat de a indica faptul că materialul este distribuit sub o licență publică Creative Commons sau altfel permis conform politicilor Creative Commons publicate la creativecommons.org/policies, Creative Commons nu autorizează utilizarea mărcii „Creative Commons” sau a oricărei alte mărci sau logo Creative Commons fără consimțământul său scris prealabil, inclusiv, fără limitare, în legătură cu orice modificări neautorizate ale oricărei licențe publice sau alte aranjamente, înțelegeri sau acorduri privind utilizarea materialului licențiat. Pentru evitarea oricăror ambiguități, acest paragraf nu face parte din licențele publice. + +Creative Commons poate fi contactat la creativecommons.org. + +**Declinarea responsabilității**: +Acest document a fost tradus utilizând serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși depunem eforturi pentru a asigura acuratețea, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/ro/lessons/sketchnotes/README.md b/translations/ro/lessons/sketchnotes/README.md new file mode 100644 index 00000000..e1d31ae3 --- /dev/null +++ b/translations/ro/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Toate notițele vizuale ale curriculumului pot fi descărcate de aici. + +🎨 Creat de: 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/) + +**Declinare de responsabilitate**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file diff --git a/translations/sk/README.md b/translations/sk/README.md new file mode 100644 index 00000000..94c15dbe --- /dev/null +++ b/translations/sk/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) + +# Umelá inteligencia pre začiatočníkov - učebný plán + +|![ Sketchnote od [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI pre začiatočníkov - _Sketchnote od [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Preskúmajte svet **umelej inteligencie** (AI) s naším 12-týždňovým učebným plánom, ktorý obsahuje 24 lekcií! Zahŕňa praktické lekcie, kvízy a laboratórne cvičenia. Učebný plán je vhodný pre začiatočníkov a pokrýva nástroje ako TensorFlow a PyTorch, ako aj etiku v AI. + +## Čo sa naučíte + +**[Myšlienková mapa kurzu](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +V tomto učebnom pláne sa naučíte: + +* Rôzne prístupy k umelej inteligencii, vrátane "starého dobrého" symbolického prístupu s **reprezentáciou znalostí** a odôvodňovaním ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Neurónové siete** a **hlboké učenie**, ktoré sú jadrom modernej AI. Koncepty za týmito dôležitými témami si vysvetlíme pomocou kódu v dvoch najpopulárnejších frameworkoch - [TensorFlow](http://Tensorflow.org) a [PyTorch](http://pytorch.org). +* **Neurónové architektúry** na prácu s obrazmi a textom. Pokryjeme nedávne modely, ale môžeme byť trochu pozadu v porovnaní s najnovšími technológiami. +* Menej populárne prístupy k AI, ako sú **genetické algoritmy** a **systémy s viacerými agentmi**. + +Čo tento učebný plán nepokrýva: + +> [Nájdite všetky doplnkové zdroje pre tento kurz v našej kolekcii na Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Obchodné prípady použitia **AI v biznise**. Zvážte absolvovanie učebného plánu [Úvod do AI pre obchodných používateľov](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn alebo [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), vyvinutého v spolupráci s [INSEAD](https://www.insead.edu/). +* **Klasické strojové učenie**, ktoré je dobre popísané v našom učebnom pláne [Strojové učenie pre začiatočníkov](http://github.com/Microsoft/ML-for-Beginners). +* Praktické aplikácie AI postavené pomocou **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Na tento účel odporúčame začať s modulmi Microsoft Learn pre [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), **[Generative AI with Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** a ďalšie. +* Špecifické ML **cloudové frameworky**, ako napríklad [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) alebo [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Zvážte použitie učebných plánov [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) a [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Konverzačná AI** a **chatboty**. Existuje samostatný učebný plán [Vytvorte konverzačné AI riešenia](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), a môžete sa tiež odvolať na [tento blogový príspevok](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) pre viac detailov. +* **Hlboká matematika** za hlbokým učením. Na tento účel odporúčame knihu [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) od Iana Goodfellowa, Yoshua Bengia a Aarona Courvillea, ktorá je tiež dostupná online na [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Pre jemný úvod do tém _AI v cloude_ môžete zvážiť absolvovanie učebného plánu [Začnite s umelou inteligenciou na Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Obsah + +| | Odkaz na lekciu | PyTorch/Keras/TensorFlow | Laboratórium | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Nastavenie kurzu](./lessons/0-course-setup/setup.md) | [Nastavte si vývojové prostredie](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Úvod do AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Úvod a história AI](./lessons/1-Intro/README.md) | - | - | +| II | **Symbolická AI** | +| 02 | [Reprezentácia znalostí a expertné systémy](./lessons/2-Symbolic/README.md) | [Expertné systémy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontológia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Konceptuálny graf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Úvod do neurónových sietí**](./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órium](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Viacvrstvový perceptron a vytvorenie vlastného frameworku](./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órium](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Úvod do frameworkov (PyTorch/TensorFlow) a 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órium](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Počítačové videnie**](./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)| [Preskúmajte počítačové videnie na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Úvod do počítačového videnia. 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órium](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolučné neurónové siete](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Architektúry 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órium](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Predtrénované siete a transferové učenie](./lessons/4-ComputerVision/08-TransferLearning/README.md) a [Triky pri trénovaní](./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 | [Autoenkódery a 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 | [Generatívne protivnícke siete a prenos umeleckého štýlu](./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 | [Detekcia objektov](./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 | [Semantická segmentácia. 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 | [**Spracovanie prirodzeného jazyka**](./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) | [Preskúmajte spracovanie prirodzeného jazyka na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Reprezentácia textu. 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 | [Semantické vektorové reprezentácie. Word2Vec a 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 | [Jazykové modelovanie. Trénovanie vlastných vektorov](./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 | [Rekurentné neurónové siete](./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 | [Generatívne rekurentné siete](./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 | [Transformery. 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 | [Rozpoznávanie pomenovaných entít](./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 | [Veľké jazykové modely, programovanie pomocou promptov a úlohy s malým počtom príkladov](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Iné techniky AI** || | +| 21 | [Genetické algoritmy](./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 | [Hlboké posilňovacie učenie](./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 | [Multiagentové systémy](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etika AI** | | | +| 24 | [Etika AI a zodpovedná AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Zásady zodpovednej AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Doplnky** | | | +| 25 | [Multimodálne siete, CLIP a 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) | | + +## Každá lekcia obsahuje + +* Materiály na predčítanie +* Spustiteľné Jupyter Notebooks, ktoré sú často špecifické pre daný framework (**PyTorch** alebo **TensorFlow**). Spustiteľný notebook obsahuje aj množstvo teoretického materiálu, takže na pochopenie témy je potrebné prejsť aspoň jednu verziu notebooku (buď PyTorch alebo TensorFlow). +* **Laboratóriá** dostupné pre niektoré témy, ktoré vám dávajú príležitosť vyskúšať si aplikáciu naučeného materiálu na konkrétny problém. +* Niektoré sekcie obsahujú odkazy na moduly [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), ktoré pokrývajú súvisiace témy. + +## Začíname + +- Vytvorili sme [lekciu na nastavenie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), ktorá vám pomôže s nastavením vášho vývojového prostredia. - Pre pedagógov sme vytvorili aj [lekciu na nastavenie učebných osnov](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Ako [spustiť kód vo VSCode alebo Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Postupujte podľa týchto krokov: + +Forknite repozitár: Kliknite na tlačidlo "Fork" v pravom hornom rohu tejto stránky. + +Klonujte repozitár: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Nezabudnite si označiť (🌟) tento repozitár, aby ste ho neskôr ľahšie našli. + +## Spoznajte ďalších študentov + +Pridajte sa na náš [oficiálny AI Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), kde sa môžete stretnúť a sieťovať s ďalšími študentmi, ktorí absolvujú tento kurz, a získať podporu. + +Ak máte spätnú väzbu na produkt alebo otázky počas budovania, navštívte náš [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) + +## Kvízy +> **Poznámka k kvízom**: Všetky kvízy sa nachádzajú v priečinku Quiz-app v etc\quiz-app. Sú prepojené priamo z lekcií a aplikáciu kvízov je možné spustiť lokálne alebo nasadiť na Azure; postupujte podľa pokynov v priečinku `quiz-app`. Postupne sa lokalizujú. +## Hľadáme pomoc + +Máte návrhy alebo ste našli pravopisné či programové chyby? Vytvorte issue alebo pull request. + +## Špeciálne poďakovanie + +* **✍️ Hlavný autor:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Editor:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ilustrátor sketchnotov:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Tvorca kvízov:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Hlavní prispievatelia:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Ďalšie učebné materiály + +Náš tím vytvára aj ďalšie učebné materiály! Pozrite si: + +- [Generatívna AI pre začiatočníkov](https://aka.ms/genai-beginners) +- [Generatívna AI pre začiatočníkov .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generatívna AI s JavaScriptom](https://github.com/microsoft/generative-ai-with-javascript) +- [Generatívna AI s Javou](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI pre začiatočníkov](https://aka.ms/ai-beginners) +- [Data Science pre začiatočníkov](https://aka.ms/datascience-beginners) +- [ML pre začiatočníkov](https://aka.ms/ml-beginners) +- [Kybernetická bezpečnosť pre začiatočníkov](https://github.com/microsoft/Security-101) +- [Webový vývoj pre začiatočníkov](https://aka.ms/webdev-beginners) +- [IoT pre začiatočníkov](https://aka.ms/iot-beginners) +- [XR vývoj pre začiatočníkov](https://github.com/microsoft/xr-development-for-beginners) +- [Ovládnutie GitHub Copilot pre agentické použitie](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Ovládnutie GitHub Copilot pre vývojárov C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Vyberte si vlastné dobrodružstvo s Copilotom](https://github.com/microsoft/CopilotAdventures) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/SECURITY.md b/translations/sk/SECURITY.md new file mode 100644 index 00000000..9343caf7 --- /dev/null +++ b/translations/sk/SECURITY.md @@ -0,0 +1,49 @@ + +## Bezpečnosť + +Spoločnosť Microsoft berie bezpečnosť našich softvérových produktov a služieb vážne, čo zahŕňa všetky repozitáre zdrojového kódu spravované prostredníctvom našich organizácií na GitHube, medzi ktoré patria [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) a [naše GitHub organizácie](https://opensource.microsoft.com/). + +Ak sa domnievate, že ste našli bezpečnostnú zraniteľnosť v akomkoľvek repozitári vlastnenom spoločnosťou Microsoft, ktorá spĺňa [definíciu bezpečnostnej zraniteľnosti spoločnosti Microsoft](https://aka.ms/opensource/security/definition), nahláste nám ju podľa nižšie uvedených pokynov. + +## Nahlasovanie bezpečnostných problémov + +**Prosím, nenahlasujte bezpečnostné zraniteľnosti prostredníctvom verejných GitHub issues.** + +Namiesto toho ich nahláste Microsoft Security Response Center (MSRC) na [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Ak uprednostňujete odoslanie bez prihlásenia, pošlite e-mail na adresu [secure@microsoft.com](mailto:secure@microsoft.com). Ak je to možné, zašifrujte svoju správu pomocou nášho PGP kľúča; stiahnite si ho zo stránky [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Odpoveď by ste mali dostať do 24 hodín. Ak z nejakého dôvodu nedostanete odpoveď, kontaktujte nás znova e-mailom, aby ste sa uistili, že sme dostali vašu pôvodnú správu. Ďalšie informácie nájdete na stránke [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Prosím, zahrňte nižšie uvedené požadované informácie (v čo najväčšom rozsahu), aby sme lepšie pochopili povahu a rozsah možného problému: + + * Typ problému (napr. pretečenie vyrovnávacej pamäte, SQL injekcia, cross-site scripting atď.) + * Úplné cesty k zdrojovým súborom súvisiacim s prejavom problému + * Umiestnenie postihnutého zdrojového kódu (tag/vetva/commit alebo priamy URL odkaz) + * Akákoľvek špeciálna konfigurácia potrebná na reprodukciu problému + * Krok za krokom inštrukcie na reprodukciu problému + * Dôkaz konceptu alebo exploit kód (ak je to možné) + * Dopad problému, vrátane toho, ako by útočník mohol problém zneužiť + +Tieto informácie nám pomôžu rýchlejšie spracovať vašu správu. + +Ak nahlasujete v rámci programu odmien za chyby, podrobnejšie správy môžu prispieť k vyššej odmene. Navštívte našu stránku [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) pre viac informácií o našich aktívnych programoch. + +## Preferované jazyky + +Uprednostňujeme, aby všetka komunikácia prebiehala v angličtine. + +## Politika + +Spoločnosť Microsoft sa riadi princípom [Koordinovaného zverejňovania zraniteľností](https://aka.ms/opensource/security/cvd). + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/CODE_OF_CONDUCT.md b/translations/sk/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3e24f9cc --- /dev/null +++ b/translations/sk/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Kódex správania pre otvorený zdroj od Microsoftu + +Tento projekt prijal [Kódex správania pre otvorený zdroj od Microsoftu](https://opensource.microsoft.com/codeofconduct/). + +Zdroje: + +- [Kódex správania pre otvorený zdroj od Microsoftu](https://opensource.microsoft.com/codeofconduct/) +- [Často kladené otázky o kódexe správania](https://opensource.microsoft.com/codeofconduct/faq/) +- Kontaktujte [opencode@microsoft.com](mailto:opencode@microsoft.com) s otázkami alebo obavami + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/CONTRIBUTING.md b/translations/sk/etc/CONTRIBUTING.md new file mode 100644 index 00000000..3c9976bb --- /dev/null +++ b/translations/sk/etc/CONTRIBUTING.md @@ -0,0 +1,31 @@ + +# Prispievanie + +Tento projekt víta príspevky a návrhy. Väčšina príspevkov vyžaduje, aby ste súhlasili s Licenčnou zmluvou prispievateľa (CLA), ktorá potvrdzuje, že máte právo a skutočne udeľujete práva na používanie vášho príspevku. Podrobnosti nájdete na https://cla.microsoft.com. + +Keď odošlete pull request, CLA-bot automaticky určí, či je potrebné poskytnúť CLA, a primerane označí PR (napr. štítok, komentár). Jednoducho postupujte podľa pokynov poskytnutých botom. Toto budete musieť urobiť iba raz vo všetkých repozitároch, ktoré používajú našu CLA. + +Tento projekt prijal [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Viac informácií nájdete v [FAQ k Etickému kódexu](https://opensource.microsoft.com/codeofconduct/faq/) +alebo kontaktujte [opencode@microsoft.com](mailto:opencode@microsoft.com) s akýmikoľvek ďalšími otázkami alebo pripomienkami. + +# Hľadáme príspevky + +Momentálne aktívne hľadáme príspevky na nasledujúce témy: + +- [ ] Napísať sekciu o hlbokom posilňovacom učení +- [ ] Zlepšiť sekciu + notebook o detekcii objektov +- [ ] PyTorch Lightning (pre [túto sekciu](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Napísať sekciu + ukážky o rozpoznávaní pomenovaných entít +- [ ] Vytvoriť ukážky na trénovanie vlastných embeddingov pre [túto sekciu](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/Mindmap.md b/translations/sk/etc/Mindmap.md new file mode 100644 index 00000000..e420cb42 --- /dev/null +++ b/translations/sk/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# AI + +## [Úvod do AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definícia AI + - História AI + - Prístupy k AI + - Zhora nadol/Symbolické + - Zdola nahor/Neurónové + - Evolučné + - Synergetické / Emergentné AI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Symbolická AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Reprezentácia znalostí + - [Expertné systémy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontológie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Sémantický web + +## [Neurónové siete](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) + - [Viacvrstvové siete](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Úvod do frameworkov](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) + +## [Počítačové videnie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Na MS Learn + - [Základy AI: Preskúmajte počítačové videnie](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Počítačové videnie s PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Počítačové videnie s TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Úvod do počítačového videnia. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvolučné siete](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Architektúry 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) + - [Tréningové triky](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoenkódery a VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generatívne protivnícke siete](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Prenos štýlu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Detekcia objektov](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentácia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Spracovanie prirodzeného jazyka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Na MS Learn + - [Základy AI: Preskúmajte NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP s PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP s TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Reprezentácia textu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Bag of Words + - TF/IDF + - [Sémantické vektory](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modelovanie jazyka](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurentné neurónové siete](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generatívne rekurentné siete](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformery a BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Rozpoznávanie pomenovaných entít](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generovanie textu a GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Ďalšie techniky + - [Genetické algoritmy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Hlboké posilňovacie učenie](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Multiagentné systémy](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etika AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn o zodpovednej AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Doplnky + - [Multimodálne siete](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 + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/SUPPORT.md b/translations/sk/etc/SUPPORT.md new file mode 100644 index 00000000..98e0fe72 --- /dev/null +++ b/translations/sk/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Podpora + +## Ako nahlásiť problémy a získať pomoc + +Tento projekt používa GitHub Issues na sledovanie chýb a požiadaviek na funkcie. Pred nahlásením nového problému si prosím prehľadajte existujúce problémy, aby ste sa vyhli duplicite. Pre nové problémy nahláste svoju chybu alebo požiadavku na funkciu ako nový Issue. + +Pre pomoc a otázky týkajúce sa používania tohto projektu použite Diskusné fóra. + +## Podpora od spoločnosti Microsoft + +Podpora pre tento projekt je obmedzená na zdroje uvedené vyššie. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/TRANSLATIONS.md b/translations/sk/etc/TRANSLATIONS.md new file mode 100644 index 00000000..bd927dd9 --- /dev/null +++ b/translations/sk/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Prispievajte prekladom lekcií + +Radi privítame preklady lekcií v tomto učebnom pláne! + +## Pokyny + +V každom priečinku lekcie a úvodnom priečinku lekcie sa nachádzajú priečinky, ktoré obsahujú preložené súbory vo formáte Markdown. + +> Poznámka: prosím, neprekladajte žiadny kód v súboroch s ukážkami kódu; jediné, čo treba preložiť, sú README, zadania a kvízy. Ďakujeme! + +Preložené súbory by mali dodržiavať tento názvoslovný konvenciu: + +**README._[language]_.md** + +kde _[language]_ je dvojpísmenová skratka jazyka podľa štandardu ISO 639-1 (napr. `README.es.md` pre španielčinu a `README.nl.md` pre holandčinu). + +**assignment._[language]_.md** + +Podobne ako README, prosím, preložte aj zadania. + +**Kvízy** + +1. Pridajte svoj preklad do aplikácie kvízov pridaním súboru sem: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, s vhodným názvoslovím (en.json, fr.json). **Prosím, nelokalizujte slová 'true' alebo 'false'. Ďakujeme!** + +2. Pridajte kód svojho jazyka do rozbaľovacieho menu v súbore App.vue aplikácie kvízov. + +3. Upravte [index.js súbor prekladov](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) aplikácie kvízov, aby ste pridali svoj jazyk. + +4. Nakoniec upravte VŠETKY odkazy na kvízy vo svojich preložených README.md súboroch tak, aby smerovali priamo na váš preložený kvíz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 sa stane https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**ĎAKUJEME** + +Veľmi si vážime vaše úsilie! + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/etc/quiz-app/README.md b/translations/sk/etc/quiz-app/README.md new file mode 100644 index 00000000..da39d0fe --- /dev/null +++ b/translations/sk/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# Kvízy + +Tieto kvízy sú prednáškové a po prednáškové kvízy pre AI učebný plán na https://aka.ms/ai-beginners + +## Pridanie preloženého súboru kvízov + +Pridajte preklad kvízu vytvorením zodpovedajúcich štruktúr kvízov v priečinkoch `assets/translations`. Kanonické kvízy sa nachádzajú v `assets/translations/en`. Kvízy sú rozdelené do niekoľkých skupín podľa lekcií. Uistite sa, že číslovanie zodpovedá správnej sekcii kvízu. V tomto učebnom pláne je celkovo 40 kvízov, pričom číslovanie začína od 0. + +Po úprave prekladov upravte súbor index.js v priečinku prekladov, aby ste importovali všetky súbory podľa konvencií v `en`. + +Upravte súbor `index.js` v `assets/translations`, aby ste importovali nové preložené súbory. + +Potom upravte rozbaľovací zoznam v `App.vue` v tejto aplikácii, aby ste pridali svoj jazyk. Zlaďte lokalizovanú skratku s názvom priečinka pre váš jazyk. + +Nakoniec upravte všetky odkazy na kvízy v preložených lekciách, ak existujú, aby obsahovali túto lokalizáciu ako parameter dotazu: napríklad `?loc=fr`. + +## Nastavenie projektu + +``` +npm install +``` + +### Kompilácia a automatické načítanie pre vývoj + +``` +npm run serve +``` + +### Kompilácia a minimalizácia pre produkciu + +``` +npm run build +``` + +### Kontrola a oprava súborov + +``` +npm run lint +``` + +### Prispôsobenie konfigurácie + +Pozrite si [Referenciu konfigurácie](https://cli.vuejs.org/config/). + +Kredity: Vďaka pôvodnej verzii tejto aplikácie na kvízy: https://github.com/arpan45/simple-quiz-vue + +## Nasadenie na Azure + +Tu je krok za krokom návod, ako začať: + +1. Forknite GitHub repozitár +Uistite sa, že váš kód statickej webovej aplikácie je vo vašom GitHub repozitári. Forknite tento repozitár. + +2. Vytvorte Azure Static Web App +- Vytvorte si [Azure účet](http://azure.microsoft.com) +- Prejdite na [Azure portál](https://portal.azure.com) +- Kliknite na „Vytvoriť zdroj“ a vyhľadajte „Static Web App“. +- Kliknite na „Vytvoriť“. + +3. Konfigurácia Static Web App +- Základy: Predplatné: Vyberte svoje Azure predplatné. +- Resource Group: Vytvorte novú skupinu zdrojov alebo použite existujúcu. +- Názov: Zadajte názov pre vašu statickú webovú aplikáciu. +- Región: Vyberte región najbližší vašim používateľom. + +- #### Detaily nasadenia: +- Zdroj: Vyberte „GitHub“. +- GitHub účet: Autorizujte Azure na prístup k vášmu GitHub účtu. +- Organizácia: Vyberte svoju GitHub organizáciu. +- Repozitár: Vyberte repozitár obsahujúci vašu statickú webovú aplikáciu. +- Branch: Vyberte vetvu, z ktorej chcete nasadzovať. + +- #### Detaily zostavenia: +- Predvoľby zostavenia: Vyberte framework, s ktorým je vaša aplikácia vytvorená (napr. React, Angular, Vue, atď.). +- Umiestnenie aplikácie: Špecifikujte priečinok obsahujúci kód vašej aplikácie (napr. / ak je v koreňovom adresári). +- Umiestnenie API: Ak máte API, špecifikujte jeho umiestnenie (voliteľné). +- Umiestnenie výstupu: Špecifikujte priečinok, kde sa generuje výstup zostavenia (napr. build alebo dist). + +4. Kontrola a vytvorenie +Skontrolujte svoje nastavenia a kliknite na „Vytvoriť“. Azure nastaví potrebné zdroje a vytvorí GitHub Actions workflow vo vašom repozitári. + +5. GitHub Actions Workflow +Azure automaticky vytvorí GitHub Actions workflow súbor vo vašom repozitári (.github/workflows/azure-static-web-apps-.yml). Tento workflow bude spracovávať proces zostavenia a nasadenia. + +6. Monitorovanie nasadenia +Prejdite na kartu „Actions“ vo vašom GitHub repozitári. +Mali by ste vidieť spustený workflow. Tento workflow zostaví a nasadí vašu statickú webovú aplikáciu na Azure. +Po dokončení workflowu bude vaša aplikácia dostupná na poskytnutej Azure URL. + +### Príklad workflow súboru + +Tu je príklad, ako môže vyzerať GitHub Actions workflow súbor: +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 +``` + +### Ďalšie zdroje +- [Dokumentácia Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentácia GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/0-course-setup/for-teachers.md b/translations/sk/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..34ab4632 --- /dev/null +++ b/translations/sk/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Pre pedagógov + +Chceli by ste použiť tento učebný plán vo svojej triede? Neváhajte! + +V skutočnosti ho môžete použiť priamo na GitHube pomocou GitHub Classroom. + +Na to si forknite toto repozitórium. Budete potrebovať vytvoriť repozitórium pre každú lekciu, takže budete musieť extrahovať každý priečinok do samostatného repozitória. Týmto spôsobom môže [GitHub Classroom](https://classroom.github.com/classrooms) spracovať každú lekciu samostatne. + +Tieto [podrobné pokyny](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vám poskytnú predstavu, ako nastaviť svoju triedu. + +## Použitie repozitória v aktuálnej podobe + +Ak by ste chceli použiť toto repozitórium tak, ako je, bez použitia GitHub Classroom, aj to je možné. Budete musieť komunikovať so svojimi študentmi, ktorou lekciou sa majú spoločne zaoberať. + +V online formáte (Zoom, Teams alebo iné) môžete vytvoriť skupinové miestnosti pre kvízy a mentorovať študentov, aby sa pripravili na učenie. Potom pozvite študentov na kvízy a požiadajte ich, aby svoje odpovede odoslali ako 'issues' v určitom čase. To isté môžete urobiť s úlohami, ak chcete, aby študenti pracovali spolu verejne. + +Ak preferujete súkromnejší formát, požiadajte svojich študentov, aby si forkovali učebný plán, lekciu po lekcii, do svojich vlastných GitHub repozitórií ako súkromné repozitóriá, a dajte vám prístup. Potom môžu dokončiť kvízy a úlohy súkromne a odoslať ich vám prostredníctvom issues vo vašom triednom repozitóriu. + +Existuje mnoho spôsobov, ako to môže fungovať v online triede. Dajte nám prosím vedieť, čo vám funguje najlepšie! + +## Prosíme, dajte nám vedieť váš názor + +Chceme, aby tento učebný plán fungoval pre vás a vašich študentov. Prosíme, poskytnite nám spätnú väzbu na diskusných fórach! + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/0-course-setup/how-to-run.md b/translations/sk/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..5b09cd0f --- /dev/null +++ b/translations/sk/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Ako spustiť kód + +Tento kurz obsahuje množstvo spustiteľných príkladov a cvičení, ktoré si budete chcieť vyskúšať. Na to, aby ste to mohli urobiť, potrebujete možnosť spúšťať Python kód v Jupyter Notebooks, ktoré sú súčasťou tohto kurzu. Existuje niekoľko možností, ako kód spustiť: + +## Spustenie lokálne na vašom počítači + +Ak chcete kód spustiť lokálne na svojom počítači, budete potrebovať nainštalovanú nejakú verziu Pythonu. Osobne odporúčam nainštalovať **[miniconda](https://conda.io/en/latest/miniconda.html)** - je to pomerne ľahká inštalácia, ktorá podporuje správcu balíčkov `conda` pre rôzne Python **virtuálne prostredia**. + +Po nainštalovaní minicondy budete musieť naklonovať repozitár a vytvoriť virtuálne prostredie, ktoré sa bude používať pre tento kurz: + +```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 +``` + +### Použitie Visual Studio Code s rozšírením Python + +Pravdepodobne najlepší spôsob, ako používať tento kurz, je otvoriť ho v [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) s [rozšírením Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note**: Po naklonovaní a otvorení adresára vo VS Code vám editor automaticky navrhne nainštalovať rozšírenia pre Python. Budete tiež musieť nainštalovať miniconda, ako je popísané vyššie. + +> **Note**: Ak vám VS Code navrhne otvoriť repozitár v kontajneri, musíte to odmietnuť, aby ste mohli použiť lokálnu inštaláciu Pythonu. + +### Použitie Jupyter v prehliadači + +Jupyter prostredie môžete používať aj priamo z prehliadača na svojom počítači. V skutočnosti, klasický Jupyter aj Jupyter Hub poskytujú veľmi pohodlné vývojové prostredie s automatickým dopĺňaním, zvýrazňovaním kódu a podobne. + +Ak chcete spustiť Jupyter lokálne, prejdite do adresára kurzu a spustite: + +```bash +jupyter notebook +``` +alebo +```bash +jupyterhub +``` +Potom môžete prejsť na akýkoľvek `.ipynb` súbor, otvoriť ho a začať pracovať. + +### Spustenie v kontajneri + +Alternatívou k inštalácii Pythonu by mohlo byť spustenie kódu v kontajneri. Keďže náš repozitár obsahuje špeciálny priečinok `.devcontainer`, ktorý určuje, ako zostaviť kontajner pre tento repozitár, VS Code vám ponúkne možnosť otvoriť kód v kontajneri. To bude vyžadovať inštaláciu Dockeru a je to o niečo zložitejšie, takže to odporúčame skúsenejším používateľom. + +## Spustenie v cloude + +Ak nechcete inštalovať Python lokálne a máte prístup k nejakým cloudovým zdrojom, dobrou alternatívou by mohlo byť spustenie kódu v cloude. Existuje niekoľko spôsobov, ako to urobiť: + +* Použitie **[GitHub Codespaces](https://github.com/features/codespaces)**, čo je virtuálne prostredie vytvorené pre vás na GitHube, prístupné cez prehliadačové rozhranie VS Code. Ak máte prístup k Codespaces, stačí kliknúť na tlačidlo **Code** v repozitári, spustiť codespace a môžete začať pracovať okamžite. +* Použitie **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) je bezplatný výpočtový zdroj poskytovaný v cloude pre ľudí, ako ste vy, na testovanie kódu na GitHube. Na úvodnej stránke je tlačidlo na otvorenie repozitára v Bindri - to vás rýchlo presmeruje na stránku Binder, ktorá zostaví podkladový kontajner a spustí Jupyter webové rozhranie pre vás bez problémov. + +> **Note**: Aby sa zabránilo zneužitiu, Binder má prístup k niektorým webovým zdrojom zablokovaný. To môže zabrániť fungovaniu niektorého kódu, ktorý sťahuje modely a/alebo datasety z verejného internetu. Možno budete musieť nájsť nejaké obchádzky. Tiež, výpočtové zdroje poskytované Binderom sú pomerne základné, takže tréning bude pomalý, najmä v neskorších, zložitejších lekciách. + +## Spustenie v cloude s GPU + +Niektoré z neskorších lekcií v tomto kurze by veľmi profitovali z podpory GPU, pretože inak bude tréning bolestivo pomalý. Existuje niekoľko možností, ktoré môžete využiť, najmä ak máte prístup k cloudu buď cez [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), alebo cez vašu inštitúciu: + +* Vytvorte [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) a pripojte sa k nej cez Jupyter. Potom môžete naklonovať repozitár priamo na stroj a začať sa učiť. NC-series VM majú podporu GPU. + +> **Note**: Niektoré predplatné, vrátane Azure for Students, neposkytujú podporu GPU automaticky. Možno budete musieť požiadať o ďalšie GPU jadrá prostredníctvom technickej podpory. + +* Vytvorte [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) a potom použite funkciu Notebook tam. [Toto video](https://azure-for-academics.github.io/quickstart/azureml-papers/) ukazuje, ako naklonovať repozitár do Azure ML notebooku a začať ho používať. + +Môžete tiež použiť Google Colab, ktorý ponúka určitú bezplatnú podporu GPU, a nahrať tam Jupyter Notebooks, aby ste ich mohli spúšťať jeden po druhom. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/0-course-setup/setup.md b/translations/sk/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..5b6faa98 --- /dev/null +++ b/translations/sk/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Začíname s touto učebnou osnovou + +## Ste študent? + +Začnite s nasledujúcimi zdrojmi: + +* [Stránka pre študentov](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Na tejto stránke nájdete zdroje pre začiatočníkov, balíčky pre študentov a dokonca aj spôsoby, ako získať poukaz na certifikát zadarmo. Toto je stránka, ktorú si chcete uložiť do záložiek a pravidelne kontrolovať, pretože obsah meníme aspoň raz mesačne. +* [Microsoft Learn ambasádori pre študentov](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Pripojte sa k celosvetovej komunite študentských ambasádorov, toto môže byť vaša cesta do Microsoftu. + +**Študenti**, existuje niekoľko spôsobov, ako používať túto učebnú osnovu. Po prvé, môžete si jednoducho prečítať text a prezrieť si kód priamo na GitHube. Ak chcete spustiť kód v niektorom z notebookov - [prečítajte si naše pokyny](./etc/how-to-run.md) a nájdite ďalšie rady, ako to urobiť [v tomto blogovom príspevku](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Pokyny, ako spustiť kód v tejto učebnej osnove](./how-to-run.md) + +## Samostatné štúdium + +Ak by ste chceli absolvovať kurz ako projekt samostatného štúdia, odporúčame vám forknúť celý repozitár do svojho GitHub účtu a dokončiť cvičenia sami alebo v skupine: + +* Začnite prednáškovým kvízom. +* Prečítajte si úvodný text k prednáške. +* Ak prednáška obsahuje ďalšie notebooky, prejdite si ich, čítajte a spúšťajte kód. Ak sú k dispozícii notebooky pre TensorFlow aj PyTorch, môžete sa sústrediť na jeden z nich - vyberte si svoj obľúbený framework. +* Notebooky často obsahujú výzvy, ktoré vyžadujú, aby ste upravili kód a experimentovali. +* Absolvujte kvíz po prednáške. +* Ak je k modulu pripojené laboratórium - dokončite zadanie. +* Navštívte [Diskusnú tabuľu](https://github.com/microsoft/AI-For-Beginners/discussions) a "učte sa nahlas". + +> Pre ďalšie štúdium odporúčame sledovať tieto [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) moduly a vzdelávacie cesty. + +**Učitelia**, [zahrnuli sme niekoľko návrhov](/for-teachers.md), ako používať túto učebnú osnovu. + +--- + +## Pedagogika + +Pri tvorbe tejto učebnej osnovy sme si zvolili dva pedagogické princípy: zabezpečiť, aby bola praktická **založená na projektoch** a aby obsahovala **časté kvízy**. + +Zabezpečením, že obsah je v súlade s projektmi, sa proces stáva pre študentov pútavejším a zlepšuje sa uchovávanie konceptov. Okrem toho nízko-náročný kvíz pred hodinou nastaví študentov na učenie sa témy, zatiaľ čo druhý kvíz po hodine zabezpečí ďalšie uchovávanie informácií. Táto učebná osnova bola navrhnutá tak, aby bola flexibilná a zábavná, a môže byť absolvovaná celá alebo len jej časť. Projekty začínajú malé a postupne sa stávajú zložitejšími na konci 12-týždňového cyklu. + +> **Poznámka o kvízoch**: Všetky kvízy sú obsiahnuté [v tejto aplikácii](https://red-field-0a6ddfd03.1.azurestaticapps.net/), celkovo 50 kvízov po tri otázky. Sú prepojené v rámci lekcií, ale aplikáciu kvízov je možné spustiť lokálne; postupujte podľa pokynov v priečinku `etc/quiz-app`. + +## Offline prístup + +Túto dokumentáciu môžete spustiť offline pomocou [Docsify](https://docsify.js.org/#/). Forknite tento repozitár, [nainštalujte Docsify](https://docsify.js.org/#/quickstart) na svojom lokálnom počítači a potom v koreňovom priečinku tohto repozitára zadajte `docsify serve`. Webová stránka bude spustená na porte 3000 na vašom localhoste: `localhost:3000`. PDF verziu učebnej osnovy nájdete [na tomto odkaze](../../../../../../../../../etc/pdf/readme.pdf). + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/1-Intro/README.md b/translations/sk/lessons/1-Intro/README.md new file mode 100644 index 00000000..017218a5 --- /dev/null +++ b/translations/sk/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +S postupom času sa výpočtové zdroje stali lacnejšími a dostupnosť dát sa zvýšila, čo umožnilo prístupom založeným na neurónových sieťach dosahovať vynikajúce výsledky v porovnaní s ľuďmi v mnohých oblastiach, ako je počítačové videnie alebo rozpoznávanie reči. V poslednom desaťročí sa pojem Umelá inteligencia často používa ako synonymum pre neurónové siete, pretože väčšina úspechov AI, o ktorých počujeme, je založená práve na nich. + +Môžeme pozorovať, ako sa prístupy menili, napríklad pri vytváraní počítačového programu na hranie šachu: + +* Skoré šachové programy boli založené na vyhľadávaní – program sa explicitne snažil odhadnúť možné ťahy súpera na niekoľko nasledujúcich ťahov a vybral optimálny ťah na základe najlepšej pozície, ktorú bolo možné dosiahnuť v niekoľkých ťahoch. To viedlo k vývoju tzv. [alpha-beta prerezávacieho](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) vyhľadávacieho algoritmu. +* Vyhľadávacie stratégie fungujú dobre na konci hry, kde je vyhľadávací priestor obmedzený malým počtom možných ťahov. Na začiatku hry je však vyhľadávací priestor obrovský a algoritmus sa dá zlepšiť učením z existujúcich zápasov medzi ľudskými hráčmi. Následné experimenty využívali tzv. [prístup založený na prípadoch](https://en.wikipedia.org/wiki/Case-based_reasoning), kde program hľadal prípady v databáze znalostí, ktoré sú veľmi podobné aktuálnej pozícii v hre. +* Moderné programy, ktoré porážajú ľudských hráčov, sú založené na neurónových sieťach a [posilňovacom učení](https://en.wikipedia.org/wiki/Reinforcement_learning), kde sa programy učia hrať výlučne tým, že dlhodobo hrajú proti sebe a učia sa zo svojich vlastných chýb – podobne ako ľudia, keď sa učia hrať šach. Počítačový program však môže odohrať oveľa viac hier za oveľa kratší čas, a tak sa môže učiť oveľa rýchlejšie. + +✅ Urobte si malý prieskum o iných hrách, ktoré boli hrané AI. + +Podobne môžeme vidieť, ako sa menil prístup k vytváraniu „hovoriacich programov“ (ktoré by mohli prejsť Turingovým testom): + +* Skoré programy tohto druhu, ako napríklad [Eliza](https://en.wikipedia.org/wiki/ELIZA), boli založené na veľmi jednoduchých gramatických pravidlách a preformulovaní vstupnej vety na otázku. +* Moderní asistenti, ako Cortana, Siri alebo Google Assistant, sú všetko hybridné systémy, ktoré používajú neurónové siete na prevod reči na text a rozpoznanie nášho zámeru, a potom využívajú nejaké logické uvažovanie alebo explicitné algoritmy na vykonanie požadovaných akcií. +* V budúcnosti môžeme očakávať úplný model založený na neurónových sieťach, ktorý bude schopný samostatne spracovať dialóg. Nedávne GPT a [Turing-NLG](https://turing.microsoft.com/) rodiny neurónových sietí ukazujú v tomto smere veľký úspech. + +> Obrázok od Dmitry Soshnikov, [fotografia](https://unsplash.com/photos/r8LmVbUKgns) od [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Nedávny výskum v oblasti AI + +Obrovský nárast výskumu neurónových sietí začal okolo roku 2010, keď sa začali sprístupňovať veľké verejné dátové súbory. Obrovská zbierka obrázkov nazvaná [ImageNet](https://en.wikipedia.org/wiki/ImageNet), ktorá obsahuje približne 14 miliónov anotovaných obrázkov, dala vzniknúť [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Presnosť ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +V roku 2012 boli [Konvolučné neurónové siete](../4-ComputerVision/07-ConvNets/README.md) prvýkrát použité na klasifikáciu obrázkov, čo viedlo k výraznému poklesu chybovosti klasifikácie (z takmer 30 % na 16,4 %). V roku 2015 architektúra ResNet od Microsoft Research [dosiahla presnosť na úrovni človeka](https://doi.org/10.1109/ICCV.2015.123). + +Odvtedy neurónové siete preukázali veľmi úspešné správanie v mnohých úlohách: + +--- + +Rok | Dosiahnutá úroveň človeka +-----|-------- +2015 | [Klasifikácia obrázkov](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Rozpoznávanie konverzačnej reči](https://arxiv.org/abs/1610.05256) +2018 | [Automatický preklad](https://arxiv.org/abs/1803.05567) (z čínštiny do angličtiny) +2020 | [Popisovanie obrázkov](https://arxiv.org/abs/2009.13682) + +V posledných rokoch sme boli svedkami obrovských úspechov veľkých jazykových modelov, ako sú BERT a GPT-3. Toto sa stalo najmä vďaka tomu, že je dostupné veľké množstvo všeobecných textových dát, ktoré umožňujú trénovať modely na zachytenie štruktúry a významu textov, predtrénovať ich na všeobecných textových zbierkach a následne špecializovať tieto modely na konkrétnejšie úlohy. Viac sa o [Spracovaní prirodzeného jazyka](../5-NLP/README.md) dozvieme neskôr v tomto kurze. + +## 🚀 Výzva + +Preskúmajte internet a určte, kde je podľa vás AI najefektívnejšie využívaná. Je to v aplikácii na mapovanie, v službe na prevod reči na text alebo vo videohre? Preskúmajte, ako bol systém vytvorený. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Prehľad & Samoštúdium + +Preskúmajte históriu AI a ML prečítaním [tejto lekcie](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Vyberte si prvok zo sketchnote na začiatku tejto lekcie alebo tejto a preskúmajte ho podrobnejšie, aby ste pochopili kultúrny kontext, ktorý ovplyvnil jeho vývoj. + +**Úloha**: [Game Jam](assignment.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/1-Intro/assignment.md b/translations/sk/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..7da9082b --- /dev/null +++ b/translations/sk/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Hry sú oblasťou, ktorá bola výrazne ovplyvnená vývojom AI a ML. V tejto úlohe napíšte krátku prácu o hre, ktorú máte radi a ktorá bola ovplyvnená vývojom AI. Mala by to byť dostatočne stará hra, aby bola ovplyvnená viacerými typmi počítačových spracovateľských systémov. Dobrým príkladom je šach alebo Go, ale pozrite sa aj na videohry ako Pong alebo Pac-Man. Napíšte esej, ktorá sa zaoberá minulosťou, súčasnosťou a budúcnosťou AI v danej hre. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/2-Symbolic/README.md b/translations/sk/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..7fd85650 --- /dev/null +++ b/translations/sk/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Reprezentácia znalostí a expertné systémy + +![Zhrnutie obsahu Symbolickej AI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sk.png) + +> Sketchnote od [Tomomi Imura](https://twitter.com/girlie_mac) + +Hľadanie umelej inteligencie je založené na snahe o získanie znalostí, aby sme dokázali chápať svet podobne ako ľudia. Ale ako to dosiahnuť? + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +V začiatkoch AI bol populárny prístup zhora nadol pri vytváraní inteligentných systémov (diskutovaný v predchádzajúcej lekcii). Myšlienka spočívala v extrakcii znalostí od ľudí do strojovo čitateľnej formy, ktorú by bolo možné automaticky použiť na riešenie problémov. Tento prístup bol založený na dvoch hlavných myšlienkach: + +* Reprezentácia znalostí +* Odvodzovanie + +## Reprezentácia znalostí + +Jedným z dôležitých konceptov v Symbolickej AI sú **znalosti**. Je dôležité odlíšiť znalosti od *informácií* alebo *dát*. Napríklad, môžeme povedať, že knihy obsahujú znalosti, pretože ich štúdiom sa môžeme stať odborníkmi. Avšak to, čo knihy obsahujú, sa v skutočnosti nazýva *dáta*, a čítaním kníh a integráciou týchto dát do nášho modelu sveta ich premieňame na znalosti. + +> ✅ **Znalosti** sú niečo, čo máme v našej hlave a predstavujú naše chápanie sveta. Získavajú sa aktívnym procesom **učenia**, ktorý integruje kúsky informácií, ktoré prijímame, do nášho aktívneho modelu sveta. + +Najčastejšie znalosti nedefinujeme striktne, ale zosúladíme ich s inými súvisiacimi konceptmi pomocou [DIKW pyramídy](https://en.wikipedia.org/wiki/DIKW_pyramid). Obsahuje nasledujúce koncepty: + +* **Dáta** sú niečo, čo je reprezentované na fyzických médiách, ako je písaný text alebo hovorené slová. Dáta existujú nezávisle od ľudí a môžu byť medzi nimi prenášané. +* **Informácie** sú spôsob, akým interpretujeme dáta v našej hlave. Napríklad, keď počujeme slovo *počítač*, máme určitú predstavu o tom, čo to je. +* **Znalosti** sú informácie integrované do nášho modelu sveta. Napríklad, keď sa naučíme, čo je počítač, začneme mať predstavy o tom, ako funguje, koľko stojí a na čo sa dá použiť. Táto sieť vzájomne prepojených konceptov tvorí naše znalosti. +* **Múdrosť** je ešte jedna úroveň nášho chápania sveta a predstavuje *meta-znalosti*, napríklad predstavu o tom, ako a kedy by sa mali znalosti použiť. + +*Obrázok [z Wikipédie](https://commons.wikimedia.org/w/index.php?curid=37705247), od Longlivetheux - Vlastná práca, CC BY-SA 4.0* + +Problém **reprezentácie znalostí** teda spočíva v nájdení efektívneho spôsobu, ako reprezentovať znalosti vo forme dát v počítači, aby boli automaticky použiteľné. To možno vnímať ako spektrum: + +![Spektrum reprezentácie znalostí](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sk.png) + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +* Naľavo sú veľmi jednoduché typy reprezentácií znalostí, ktoré môžu byť efektívne použité počítačmi. Najjednoduchšou je algoritmická reprezentácia, keď sú znalosti reprezentované počítačovým programom. Toto však nie je najlepší spôsob reprezentácie znalostí, pretože nie je flexibilný. Znalosti v našej hlave sú často nealgoritmické. +* Napravo sú reprezentácie ako prirodzený text. Je to najvýkonnejšie, ale nemôže byť použité na automatické odvodzovanie. + +> ✅ Zamyslite sa na chvíľu nad tým, ako reprezentujete znalosti vo svojej hlave a premieňate ich na poznámky. Existuje konkrétny formát, ktorý vám pomáha pri zapamätaní? + +## Klasifikácia počítačových reprezentácií znalostí + +Rôzne metódy reprezentácie znalostí v počítači môžeme klasifikovať do nasledujúcich kategórií: + +* **Sieťové reprezentácie** sú založené na tom, že v našej hlave máme sieť vzájomne prepojených konceptov. Môžeme sa pokúsiť reprodukovať rovnaké siete ako graf v počítači - tzv. **sémantická sieť**. + +1. **Trojičky objekt-atribút-hodnota** alebo **páry atribút-hodnota**. Keďže graf môže byť reprezentovaný v počítači ako zoznam uzlov a hrán, môžeme reprezentovať sémantickú sieť zoznamom trojičiek obsahujúcich objekty, atribúty a hodnoty. Napríklad, vytvoríme nasledujúce trojičky o programovacích jazykoch: + +Objekt | Atribút | Hodnota +-------|---------|-------- +Python | je | Neotypovaný jazyk +Python | vynálezca | Guido van Rossum +Python | bloková syntax | odsadenie +Neotypovaný jazyk | nemá | definície typov + +> ✅ Zamyslite sa, ako by sa trojičky dali použiť na reprezentáciu iných typov znalostí. + +2. **Hierarchické reprezentácie** zdôrazňujú fakt, že často vytvárame hierarchiu objektov vo svojej hlave. Napríklad vieme, že kanárik je vták, a všetky vtáky majú krídla. Máme tiež predstavu o tom, akú farbu má kanárik zvyčajne a aká je jeho rýchlosť letu. + + - **Reprezentácia rámcov** je založená na reprezentácii každého objektu alebo triedy objektov ako **rámca**, ktorý obsahuje **sloty**. Sloty majú možné predvolené hodnoty, obmedzenia hodnôt alebo uložené procedúry, ktoré môžu byť volané na získanie hodnoty slotu. Všetky rámce tvoria hierarchiu podobnú hierarchii objektov v objektovo orientovaných programovacích jazykoch. + - **Scenáre** sú špeciálny druh rámcov, ktoré reprezentujú komplexné situácie, ktoré sa môžu rozvíjať v čase. + +**Python** + +Slot | Hodnota | Predvolená hodnota | Interval | +-----|---------|---------------------|----------| +Názov | Python | | | +Je-A | Neotypovaný jazyk | | | +Prípad premenných | | CamelCase | | +Dĺžka programu | | | 5-5000 riadkov | +Bloková syntax | Odsadenie | | | + +3. **Procedurálne reprezentácie** sú založené na reprezentácii znalostí zoznamom akcií, ktoré môžu byť vykonané, keď nastane určitá podmienka. + - Produkčné pravidlá sú if-then vyhlásenia, ktoré nám umožňujú robiť závery. Napríklad, lekár môže mať pravidlo hovoriace, že **AK** má pacient vysokú horúčku **ALEBO** vysokú hladinu C-reaktívneho proteínu v krvnom teste **POTOM** má zápal. Keď sa stretneme s jednou z podmienok, môžeme urobiť záver o zápale a potom ho použiť pri ďalšom odvodzovaní. + - Algoritmy môžu byť považované za ďalšiu formu procedurálnej reprezentácie, hoci sa takmer nikdy nepoužívajú priamo v systémoch založených na znalostiach. + +4. **Logika** bola pôvodne navrhnutá Aristotelom ako spôsob reprezentácie univerzálnych ľudských znalostí. + - Predikátová logika ako matematická teória je príliš bohatá na to, aby bola výpočtovo realizovateľná, preto sa zvyčajne používa jej podmnožina, ako napríklad Hornove klauzuly používané v Prologu. + - Deskriptívna logika je rodina logických systémov používaných na reprezentáciu a odvodzovanie hierarchií objektov distribuovaných reprezentácií znalostí, ako je *sémantický web*. + +## Expertné systémy + +Jedným z prvých úspechov symbolickej AI boli tzv. **expertné systémy** - počítačové systémy navrhnuté tak, aby pôsobili ako odborník v obmedzenej oblasti problémov. Boli založené na **báze znalostí** získanej od jedného alebo viacerých ľudských odborníkov a obsahovali **odvodzovací mechanizmus**, ktorý vykonával odvodzovanie na jej základe. + +![Štruktúra človeka](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sk.png) | ![Systém založený na znalostiach](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sk.png) +---------------------------------------------|------------------------------------------------ +Zjednodušená štruktúra ľudského nervového systému | Architektúra systému založeného na znalostiach + +Expertné systémy sú postavené podobne ako systém ľudského odvodzovania, ktorý obsahuje **krátkodobú pamäť** a **dlhodobú pamäť**. Podobne v systémoch založených na znalostiach rozlišujeme nasledujúce komponenty: + +* **Pamäť problému**: obsahuje znalosti o probléme, ktorý sa práve rieši, napr. teplotu alebo krvný tlak pacienta, či má zápal alebo nie, atď. Tieto znalosti sa tiež nazývajú **statické znalosti**, pretože obsahujú snímku toho, čo aktuálne vieme o probléme - tzv. *stav problému*. +* **Báza znalostí**: reprezentuje dlhodobé znalosti o oblasti problémov. Získava sa manuálne od ľudských odborníkov a nemení sa od konzultácie ku konzultácii. Pretože nám umožňuje navigovať z jedného stavu problému do druhého, nazýva sa tiež **dynamické znalosti**. +* **Odvodzovací mechanizmus**: orchestruje celý proces hľadania v priestore stavov problému, kladenia otázok používateľovi, keď je to potrebné. Je tiež zodpovedný za nájdenie správnych pravidiel, ktoré sa majú aplikovať na každý stav. + +Ako príklad si vezmime nasledujúci expertný systém na určenie zvieraťa na základe jeho fyzických charakteristík: + +![AND-OR strom](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sk.png) + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +Tento diagram sa nazýva **AND-OR strom** a je grafickou reprezentáciou množiny produkčných pravidiel. Nakreslenie stromu je užitočné na začiatku získavania znalostí od odborníka. Na reprezentáciu znalostí v počítači je však pohodlnejšie používať pravidlá: + +``` +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 +``` + +Môžete si všimnúť, že každá podmienka na ľavej strane pravidla a akcia sú v podstate trojičky objekt-atribút-hodnota (OAV). **Pracovná pamäť** obsahuje množinu OAV trojičiek, ktoré zodpovedajú problému, ktorý sa práve rieši. **Mechanizmus pravidiel** hľadá pravidlá, pre ktoré je podmienka splnená, a aplikuje ich, čím pridáva ďalšiu trojičku do pracovnej pamäti. + +> ✅ Nakreslite svoj vlastný AND-OR strom na tému, ktorá vás zaujíma! + +### Dopredné vs. spätné odvodzovanie + +Proces opísaný vyššie sa nazýva **dopredné odvodzovanie**. Začína s niektorými počiatočnými údajmi o probléme dostupnými v pracovnej pamäti a potom vykonáva nasledujúcu odvodzovaciu slučku: + +1. Ak je cieľový atribút prítomný v pracovnej pamäti - zastavte a poskytnite výsledok +2. Vyhľadajte všetky pravidlá, ktorých podmienka je aktuálne splnená - získajte **konfliktnú množinu** pravidiel. +3. Vykonajte **riešenie konfliktov** - vyberte jedno pravidlo, ktoré bude vykonané v tomto kroku. Môžu existovať rôzne stratégie riešenia konfliktov: + - Vyberte prvé použiteľné pravidlo v báze znalostí + - Vyberte náhodné pravidlo + - Vyberte *špecifickejšie* pravidlo, t.j. to, ktoré spĺňa najviac podmienok na "ľavej strane" (LHS) +4. Aplikujte vybrané pravidlo a vložte nový kúsok znalostí do stavu problému +5. Opakujte od kroku 1. + +Avšak v niektorých prípadoch môžeme chcieť začať s prázdnymi znalosťami o probléme a klásť otázky, ktoré nám pomôžu dospieť k záveru. Napríklad pri diagnostike pacienta zvyčajne nevykonávame všetky lekárske analýzy vopred pred začatím diagnostiky. Skôr chceme vykonať analýzy, keď je potrebné urobiť rozhodnutie. + +Tento proces môže byť modelovaný pomocou **spätného odvodzovania**. Je riadený **cieľom** - hodnotou atribútu, ktorú hľadáme: + +1. Vyberte všetky pravidlá, ktoré môžu poskytnúť hodnotu cieľa (t.j. s cieľom na RHS ("pravej strane")) - konfliktnú množinu +1. Ak neexistujú pravidlá pre tento atribút alebo existuje pravidlo hovoriace, že by sme mali hodnotu získať od používateľa - opýtajte sa na ňu, inak: +1. Použite stratégiu riešenia konfliktov na výber jedného pravidla, ktoré použijeme ako *hypotézu* - pokúsime sa ju dokázať +1. Rekurzívne opakujte proces pre všetky atribúty na LHS pravidla, pokúšajúc sa ich dokázať ako ciele +1. Ak proces v ktoromkoľvek bode zlyhá - použite iné pravidlo v kroku 3. + +> ✅ V ktorých situáciách je vhodnejšie dopredné odvodzovanie? A čo spätné odvodzovanie? + +### Implementácia expertných systémov + +Expertné systémy môžu byť implementované pomocou rôznych nástrojov: + +* Priamo ich naprogramovanie v nejakom vysokoúrovňovom programovacom jazyku. Toto nie je najlepší nápad, pretože hlavnou výhodou systému založeného na znalostiach je, že znalosti sú oddelené od odvodzovania, a potenciálne by odborník na danú oblasť mal byť schopný písať pravidlá bez pochopenia detailov procesu odvodzovania. +* Použitie **shellu expertných systémov**, t.j. systému špeciálne navrhnutého na naplnenie znalostí pomocou nejakého jazyka reprezentácie znalostí. + +## ✍️ Cvičenie: Odvodzovanie zvierat + +Pozrite si [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) pre príklad implementácie expertného systému s dopredným a spätným odvodzovaním. +> **Poznámka**: Tento príklad je pomerne jednoduchý a iba poskytuje predstavu o tom, ako vyzerá expertný systém. Keď začnete vytvárať takýto systém, všimnete si *inteligentné* správanie až po dosiahnutí určitého počtu pravidiel, približne 200+. V určitom bode sa pravidlá stanú príliš zložité na to, aby ste si ich všetky zapamätali, a vtedy sa môžete začať pýtať, prečo systém robí určité rozhodnutia. Avšak dôležitou vlastnosťou systémov založených na znalostiach je, že vždy môžete *vysvetliť*, ako bolo každé rozhodnutie urobené. +## Ontológie a Sémantický web + +Na konci 20. storočia vznikla iniciatíva využívať reprezentáciu znalostí na anotáciu internetových zdrojov, aby bolo možné nájsť zdroje, ktoré zodpovedajú veľmi špecifickým dopytom. Táto iniciatíva sa nazývala **Sémantický web** a bola založená na niekoľkých konceptoch: + +- Špeciálna reprezentácia znalostí založená na **[logikách deskripcie](https://en.wikipedia.org/wiki/Description_logic)** (DL). Táto reprezentácia je podobná rámcovej reprezentácii znalostí, pretože vytvára hierarchiu objektov s vlastnosťami, ale má formálnu logickú sémantiku a inferenciu. Existuje celá rodina DL, ktoré vyvažujú medzi expresivitou a algoritmickou zložitosťou inferencie. +- Distribuovaná reprezentácia znalostí, kde sú všetky koncepty reprezentované globálnym URI identifikátorom, čo umožňuje vytvárať hierarchie znalostí, ktoré pokrývajú celý internet. +- Rodina jazykov založených na XML na popis znalostí: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Kľúčovým konceptom v Sémantickom webe je koncept **ontológie**. Ontológia označuje explicitnú špecifikáciu problémovej domény pomocou formálnej reprezentácie znalostí. Najjednoduchšia ontológia môže byť len hierarchia objektov v problémovej doméne, ale zložitejšie ontológie budú zahŕňať pravidlá, ktoré môžu byť použité na inferenciu. + +V Sémantickom webe sú všetky reprezentácie založené na trojiciach. Každý objekt a každá relácia sú jednoznačne identifikované URI. Napríklad, ak chceme uviesť fakt, že tento AI kurz bol vytvorený Dmitrijom Soshnikovom 1. januára 2022, môžeme použiť tieto trojice: + + + +``` +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 +``` + +> ✅ Tu `http://www.example.com/terms/creation-date` a `http://purl.org/dc/elements/1.1/creator` sú známe a univerzálne akceptované URI na vyjadrenie konceptov *tvorca* a *dátum vytvorenia*. + +V zložitejšom prípade, ak chceme definovať zoznam tvorcov, môžeme použiť niektoré dátové štruktúry definované v RDF. + + + +> Diagramy vyššie od [Dmitrija Soshnikova](http://soshnikov.com) + +Pokrok v budovaní Sémantického webu bol do istej miery spomalený úspechom vyhľadávačov a techník spracovania prirodzeného jazyka, ktoré umožňujú extrahovať štruktúrované dáta z textu. Avšak v niektorých oblastiach stále existujú významné snahy o udržiavanie ontológií a znalostných báz. Niekoľko projektov, ktoré stoja za zmienku: + +* [WikiData](https://wikidata.org/) je kolekcia strojovo čitateľných znalostných báz spojených s Wikipédiou. Väčšina dát je extrahovaná z *InfoBoxov* na stránkach Wikipédie, čo sú štruktúrované časti obsahu. Môžete [dotazovať](https://query.wikidata.org/) WikiData pomocou SPARQL, špeciálneho dotazovacieho jazyka pre Sémantický web. Tu je ukážkový dotaz, ktorý zobrazuje najčastejšie farby očí medzi ľuďmi: + +```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/) je ďalšia iniciatíva podobná WikiData. + +> ✅ Ak chcete experimentovať s vytváraním vlastných ontológií alebo otváraním existujúcich, existuje skvelý vizuálny editor ontológií nazývaný [Protégé](https://protege.stanford.edu/). Stiahnite si ho alebo použite online. + + + +*Webový editor Protégé otvorený s ontológiou rodiny Romanovcov. Screenshot od Dmitrija Soshnikova* + +## ✍️ Cvičenie: Ontológia rodiny + +Pozrite si [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) pre príklad použitia techník Sémantického webu na odvodzovanie rodinných vzťahov. Vezmeme rodokmeň reprezentovaný v bežnom formáte GEDCOM a ontológiu rodinných vzťahov a vytvoríme graf všetkých rodinných vzťahov pre danú skupinu jednotlivcov. + +## Microsoft Concept Graph + +Vo väčšine prípadov sú ontológie starostlivo vytvárané ručne. Avšak je tiež možné **extrahovať** ontológie z neštruktúrovaných dát, napríklad z textov v prirodzenom jazyku. + +Jedným z takýchto pokusov bol projekt Microsoft Research, ktorý viedol k vzniku [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Je to veľká kolekcia entít zoskupených pomocou vzťahu `is-a` (je-to). Umožňuje odpovedať na otázky ako "Čo je Microsoft?" - odpoveďou môže byť niečo ako "spoločnosť s pravdepodobnosťou 0,87 a značka s pravdepodobnosťou 0,75". + +Graf je dostupný buď ako REST API, alebo ako veľký stiahnuteľný textový súbor, ktorý uvádza všetky páry entít. + +## ✍️ Cvičenie: Konceptuálny graf + +Vyskúšajte notebook [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb), aby ste videli, ako môžeme použiť Microsoft Concept Graph na zoskupenie spravodajských článkov do niekoľkých kategórií. + +## Záver + +V súčasnosti sa AI často považuje za synonymum pre *strojové učenie* alebo *neurónové siete*. Avšak človek tiež vykazuje explicitné uvažovanie, čo je niečo, čo neurónové siete momentálne nedokážu zvládnuť. V reálnych projektoch sa explicitné uvažovanie stále používa na vykonávanie úloh, ktoré vyžadujú vysvetlenia alebo schopnosť kontrolovane meniť správanie systému. + +## 🚀 Výzva + +V notebooku Family Ontology priradenom k tejto lekcii máte možnosť experimentovať s inými rodinnými vzťahmi. Skúste objaviť nové spojenia medzi ľuďmi v rodokmeni. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Prehľad a samostatné štúdium + +Preskúmajte internet a objavte oblasti, kde sa ľudia snažili kvantifikovať a kodifikovať znalosti. Pozrite si Bloomovu taxonómiu a vráťte sa v histórii, aby ste sa dozvedeli, ako sa ľudia snažili pochopiť svoj svet. Preskúmajte prácu Linnéa na vytvorení taxonómie organizmov a pozorujte, ako Dmitrij Mendelejev vytvoril spôsob na opis a zoskupenie chemických prvkov. Aké ďalšie zaujímavé príklady nájdete? + +**Úloha**: [Vytvorte ontológiu](assignment.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/2-Symbolic/assignment.md b/translations/sk/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..133802a3 --- /dev/null +++ b/translations/sk/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Vytvorenie ontológie + +Vytvorenie znalostnej bázy spočíva v kategorizácii modelu, ktorý reprezentuje fakty o určitej téme. Vyberte si tému - napríklad osobu, miesto alebo vec - a potom vytvorte model tejto témy. Použite niektoré z techník a stratégií na tvorbu modelov, ktoré sú popísané v tejto lekcii. Príkladom by mohlo byť vytvorenie ontológie obývačky s nábytkom, osvetlením a podobne. Ako sa obývačka líši od kuchyne? Kúpeľne? Ako viete, že ide o obývačku a nie o jedáleň? Použite [Protégé](https://protege.stanford.edu/) na vytvorenie svojej ontológie. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..b1dde588 --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Úvod do neurónových sietí: Perceptron + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Jedným z prvých pokusov o implementáciu niečoho podobného moderným neurónovým sieťam bol projekt Franka Rosenblatta z Cornell Aeronautical Laboratory v roku 1957. Išlo o hardvérovú implementáciu nazvanú "Mark-1", ktorá bola navrhnutá na rozpoznávanie primitívnych geometrických tvarov, ako sú trojuholníky, štvorce a kruhy. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Obrázky [z Wikipédie](https://en.wikipedia.org/wiki/Perceptron) + +Vstupný obraz bol reprezentovaný maticou 20x20 fotobuniek, takže neurónová sieť mala 400 vstupov a jeden binárny výstup. Jednoduchá sieť obsahovala jeden neurón, nazývaný tiež **jednotka prahovej logiky**. Váhy neurónovej siete fungovali ako potenciometre, ktoré bolo potrebné manuálne nastaviť počas fázy učenia. + +> ✅ Potenciometer je zariadenie, ktoré umožňuje používateľovi nastaviť odpor v obvode. + +> New York Times v tom čase napísali o perceptrone: *embryo elektronického počítača, od ktorého [Námorníctvo] očakáva, že bude schopné chodiť, rozprávať, vidieť, písať, reprodukovať sa a byť si vedomé svojej existencie.* + +## Model perceptronu + +Predpokladajme, že máme N vlastností v našom modeli, v takom prípade by vstupný vektor bol vektor veľkosti N. Perceptron je model **binárnej klasifikácie**, t.j. dokáže rozlíšiť medzi dvoma triedami vstupných údajov. Predpokladáme, že pre každý vstupný vektor x bude výstup nášho perceptronu buď +1 alebo -1, v závislosti od triedy. Výstup sa vypočíta pomocou vzorca: + +y(x) = f(wTx) + +kde f je aktivačná funkcia typu krok. + + + + +## Tréning perceptronu + +Na tréning perceptronu potrebujeme nájsť vektor váh w, ktorý klasifikuje väčšinu hodnôt správne, t.j. vedie k najmenšej **chybe**. Táto chyba E je definovaná **kritériom perceptronu** nasledovne: + +E(w) = -∑wTxiti + +kde: + +* súčet sa berie na tých tréningových dátových bodoch i, ktoré vedú k nesprávnej klasifikácii +* xi je vstupný údaj a ti je buď -1 alebo +1 pre negatívne a pozitívne príklady. + +Toto kritérium sa považuje za funkciu váh w, ktorú potrebujeme minimalizovať. Často sa používa metóda nazývaná **gradientný zostup**, pri ktorej začíname s nejakými počiatočnými váhami w(0), a potom v každom kroku aktualizujeme váhy podľa vzorca: + +w(t+1) = w(t) - η∇E(w) + +Tu η je tzv. **rýchlosť učenia** a ∇E(w) označuje **gradient** E. Po výpočte gradientu dostaneme: + +w(t+1) = w(t) + ∑ηxiti + +Algoritmus v Pythone vyzerá takto: + +```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 +``` + +## Záver + +V tejto lekcii ste sa naučili o perceptrone, ktorý je modelom binárnej klasifikácie, a ako ho trénovať pomocou vektora váh. + +## 🚀 Výzva + +Ak si chcete vyskúšať vytvoriť vlastný perceptron, skúste [tento lab na Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), ktorý používa [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Prehľad a samostatné štúdium + +Ak chcete vidieť, ako môžeme použiť perceptron na riešenie jednoduchého problému, ako aj reálnych problémov, a pokračovať v učení, prejdite na [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) notebook. + +Tu je zaujímavý [článok o perceptronoch](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Úloha](lab/README.md) + +V tejto lekcii sme implementovali perceptron pre úlohu binárnej klasifikácie a použili sme ho na klasifikáciu medzi dvoma ručne písanými číslicami. V tomto laboratóriu máte za úlohu vyriešiť problém klasifikácie číslic úplne, t.j. určiť, ktorá číslica najpravdepodobnejšie zodpovedá danému obrázku. + +* [Pokyny](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..0e57833e --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Klasifikácia viacerých tried pomocou perceptrónu + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Pomocou kódu, ktorý sme vyvinuli v tejto lekcii na binárnu klasifikáciu ručne písaných číslic MNIST, vytvorte klasifikátor viacerých tried, ktorý bude schopný rozpoznať akékoľvek číslo. Vypočítajte presnosť klasifikácie na tréningovej a testovacej množine a zobrazte maticu zámien. + +## Tipy + +1. Pre každú číslicu vytvorte dataset pre binárny klasifikátor „táto číslica vs. všetky ostatné číslice“. +1. Natrénujte 10 rôznych perceptrónov na binárnu klasifikáciu (jeden pre každú číslicu). +1. Definujte funkciu, ktorá bude klasifikovať vstupnú číslicu. + +> **Tip**: Ak skombinujeme váhy všetkých 10 perceptrónov do jednej matice, mali by sme byť schopní aplikovať všetkých 10 perceptrónov na vstupné číslice jedným násobením matíc. Najpravdepodobnejšiu číslicu potom môžeme nájsť jednoduchým použitím operácie `argmax` na výstupe. + +## Začiatočný notebook + +Začnite úlohu otvorením [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb). + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..03cd5a25 --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Úvod do neurónových sietí. Viacvrstvový perceptron + +V predchádzajúcej časti ste sa oboznámili s najjednoduchším modelom neurónovej siete – jednovrstvovým perceptronom, lineárnym modelom pre dvojtriednu klasifikáciu. + +V tejto časti rozšírime tento model na flexibilnejší rámec, ktorý nám umožní: + +* vykonávať **viactriednu klasifikáciu** okrem dvojtriednej +* riešiť **regresné problémy** okrem klasifikácie +* oddeliť triedy, ktoré nie sú lineárne separovateľné + +Taktiež si vyvinieme vlastný modulárny rámec v Pythone, ktorý nám umožní konštruovať rôzne architektúry neurónových sietí. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizácia strojového učenia + +Začnime formalizáciou problému strojového učenia. Predpokladajme, že máme tréningovú množinu dát **X** s označeniami **Y**, a potrebujeme vytvoriť model *f*, ktorý bude robiť čo najpresnejšie predikcie. Kvalita predikcií sa meria pomocou **stratovej funkcie** ℒ. Často sa používajú nasledujúce stratové funkcie: + +* Pre regresné problémy, keď potrebujeme predpovedať číslo, môžeme použiť **absolútnu chybu** ∑i|f(x(i))-y(i)| alebo **kvadratickú chybu** ∑i(f(x(i))-y(i))2 +* Pre klasifikáciu používame **0-1 stratu** (čo je v podstate to isté ako **presnosť** modelu) alebo **logistickú stratu**. + +Pre jednovrstvový perceptron bola funkcia *f* definovaná ako lineárna funkcia *f(x)=wx+b* (kde *w* je matica váh, *x* je vektor vstupných vlastností a *b* je vektor biasu). Pre rôzne architektúry neurónových sietí môže mať táto funkcia zložitejšiu formu. + +> V prípade klasifikácie je často žiaduce získať pravdepodobnosti príslušných tried ako výstup siete. Na konverziu ľubovoľných čísel na pravdepodobnosti (napr. na normalizáciu výstupu) často používame funkciu **softmax** σ, a funkcia *f* sa stáva *f(x)=σ(wx+b)*. + +V definícii *f* vyššie sa *w* a *b* nazývajú **parametre** θ=⟨*w,b*⟩. Na základe množiny dát ⟨**X**,**Y**⟩ môžeme vypočítať celkovú chybu na celej množine dát ako funkciu parametrov θ. + +> ✅ **Cieľom trénovania neurónovej siete je minimalizovať chybu zmenou parametrov θ** + +## Optimalizácia pomocou gradientného zostupu + +Existuje známa metóda optimalizácie funkcií nazývaná **gradientný zostup**. Myšlienka spočíva v tom, že môžeme vypočítať deriváciu (v multidimenzionálnom prípade nazývanú **gradient**) stratovej funkcie vzhľadom na parametre a meniť parametre tak, aby sa chyba znižovala. To môžeme formalizovať nasledovne: + +* Inicializujte parametre náhodnými hodnotami w(0), b(0) +* Opakujte nasledujúci krok mnohokrát: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Počas trénovania by sa optimalizačné kroky mali počítať s ohľadom na celú množinu dát (pamätajte, že strata sa počíta ako súčet cez všetky tréningové vzorky). V praxi však berieme malé časti množiny dát nazývané **minibatch-e** a počítame gradienty na základe podmnožiny dát. Pretože podmnožina sa zakaždým vyberá náhodne, takáto metóda sa nazýva **stochastický gradientný zostup** (SGD). + +## Viacvrstvové perceptrony a spätná propagácia + +Jednovrstvová sieť, ako sme videli vyššie, je schopná klasifikovať lineárne separovateľné triedy. Na vytvorenie bohatšieho modelu môžeme kombinovať niekoľko vrstiev siete. Matematicky to znamená, že funkcia *f* bude mať zložitejšiu formu a bude sa počítať v niekoľkých krokoch: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Tu je α **nelineárna aktivačná funkcia**, σ je softmax funkcia a parametre θ=<*w1,b1,w2,b2*>. + +Algoritmus gradientného zostupu zostáva rovnaký, ale výpočet gradientov je zložitejší. Na základe pravidla reťazovej derivácie môžeme vypočítať derivácie nasledovne: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Pravidlo reťazovej derivácie sa používa na výpočet derivácií stratovej funkcie vzhľadom na parametre. + +Všimnite si, že ľavá časť všetkých týchto výrazov je rovnaká, a preto môžeme efektívne počítať derivácie začínajúc stratovou funkciou a postupujúc "späť" cez výpočtový graf. Preto sa metóda trénovania viacvrstvového perceptronu nazýva **spätná propagácia** alebo 'backprop'. + +výpočtový graf + +> TODO: citácia obrázku + +> ✅ Spätnú propagáciu si podrobnejšie preberieme v našom príklade v notebooku. + +## Záver + +V tejto lekcii sme si vytvorili vlastnú knižnicu neurónových sietí a použili sme ju na jednoduchú dvojrozmernú klasifikačnú úlohu. + +## 🚀 Výzva + +V priloženom notebooku implementujete vlastný rámec na vytváranie a trénovanie viacvrstvových perceptronov. Budete môcť detailne vidieť, ako moderné neurónové siete fungujú. + +Pokračujte do notebooku [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) a prejdite si ho. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Prehľad a samoštúdium + +Spätná propagácia je bežný algoritmus používaný v AI a ML, stojí za to ju [študovať podrobnejšie](https://wikipedia.org/wiki/Backpropagation). + +## [Zadanie](lab/README.md) + +V tomto laboratóriu máte za úlohu použiť rámec, ktorý ste vytvorili v tejto lekcii, na riešenie klasifikácie ručne písaných číslic MNIST. + +* [Inštrukcie](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..b23f4092 --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# Klasifikácia MNIST pomocou nášho vlastného rámca + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Riešte problém klasifikácie ručne písaných číslic MNIST pomocou perceptronu s 1, 2 a 3 vrstvami. Použite rámec neurónových sietí, ktorý sme vyvinuli počas lekcie. + +## Začiatočný notebook + +Začnite laboratórnu úlohu otvorením [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Otázky + +Na záver tejto úlohy sa pokúste odpovedať na nasledujúce otázky: + +- Ovplyvňuje aktivačná funkcia medzi vrstvami výkon siete? +- Potrebujeme na túto úlohu sieť s 2 alebo 3 vrstvami? +- Narazili ste na nejaké problémy pri trénovaní siete? Najmä keď sa počet vrstiev zvýšil. +- Ako sa správa váha siete počas trénovania? Môžete vykresliť maximálnu absolútnu hodnotu váh v závislosti od epochy, aby ste pochopili súvislosť. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..487d0633 --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Frameworky pre neurónové siete + +Ako sme sa už naučili, na efektívne trénovanie neurónových sietí musíme urobiť dve veci: + +* Operovať s tenzormi, napr. násobiť, sčítať a počítať niektoré funkcie ako sigmoid alebo softmax +* Počítať gradienty všetkých výrazov, aby sme mohli vykonávať optimalizáciu pomocou gradientného zostupu + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Kým knižnica `numpy` dokáže vykonávať prvú časť, potrebujeme mechanizmus na výpočet gradientov. V [našom frameworku](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), ktorý sme vyvinuli v predchádzajúcej sekcii, sme museli manuálne programovať všetky derivácie vo vnútri metódy `backward`, ktorá vykonáva spätnú propagáciu. Ideálne by mal framework umožniť výpočet gradientov *akéhokoľvek výrazu*, ktorý môžeme definovať. + +Ďalšou dôležitou vecou je schopnosť vykonávať výpočty na GPU alebo iných špecializovaných výpočtových jednotkách, ako napríklad [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Trénovanie hlbokých neurónových sietí vyžaduje *veľké množstvo* výpočtov, a možnosť paralelizovať tieto výpočty na GPU je veľmi dôležitá. + +> ✅ Termín 'paralelizovať' znamená rozložiť výpočty na viaceré zariadenia. + +V súčasnosti sú najpopulárnejšie frameworky pre neurónové siete: [TensorFlow](http://TensorFlow.org) a [PyTorch](https://pytorch.org/). Oba poskytujú nízkoúrovňové API na operácie s tenzormi na CPU aj GPU. Na vrchole nízkoúrovňového API existuje aj vysokoúrovňové API, nazývané [Keras](https://keras.io/) a [PyTorch Lightning](https://pytorchlightning.ai/) zodpovedajúco. + +Nízkoúrovňové API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +Vysokoúrovňové API| [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Nízkoúrovňové API** v oboch frameworkoch umožňujú vytvárať tzv. **výpočtové grafy**. Tento graf definuje, ako vypočítať výstup (zvyčajne funkciu straty) s danými vstupnými parametrami, a môže byť posunutý na výpočet na GPU, ak je dostupný. Existujú funkcie na diferenciáciu tohto výpočtového grafu a výpočet gradientov, ktoré môžu byť následne použité na optimalizáciu parametrov modelu. + +**Vysokoúrovňové API** považujú neurónové siete za **sekvenciu vrstiev** a uľahčujú konštrukciu väčšiny neurónových sietí. Trénovanie modelu zvyčajne vyžaduje prípravu dát a následné zavolanie funkcie `fit`, ktorá vykoná prácu. + +Vysokoúrovňové API umožňujú veľmi rýchlo konštruovať typické neurónové siete bez starostí o množstvo detailov. Zároveň nízkoúrovňové API ponúkajú oveľa väčšiu kontrolu nad procesom trénovania, a preto sa často používajú vo výskume, keď pracujete s novými architektúrami neurónových sietí. + +Je tiež dôležité pochopiť, že môžete používať obe API spoločne, napr. môžete vyvinúť vlastnú architektúru vrstvy siete pomocou nízkoúrovňového API a potom ju použiť vo väčšej sieti konštruovanej a trénovanej pomocou vysokoúrovňového API. Alebo môžete definovať sieť pomocou vysokoúrovňového API ako sekvenciu vrstiev a potom použiť vlastný nízkoúrovňový tréningový cyklus na vykonanie optimalizácie. Obe API používajú rovnaké základné koncepty a sú navrhnuté tak, aby spolu dobre fungovali. + +## Učenie + +V tomto kurze ponúkame väčšinu obsahu pre PyTorch aj TensorFlow. Môžete si vybrať preferovaný framework a prejsť iba zodpovedajúce notebooky. Ak si nie ste istí, ktorý framework si vybrať, prečítajte si diskusie na internete o **PyTorch vs. TensorFlow**. Môžete sa tiež pozrieť na oba frameworky, aby ste získali lepšie pochopenie. + +Kde je to možné, použijeme vysokoúrovňové API pre jednoduchosť. Veríme však, že je dôležité pochopiť, ako neurónové siete fungujú od základov, preto na začiatku začíname prácou s nízkoúrovňovým API a tenzormi. Ak však chcete začať rýchlo a nechcete tráviť veľa času učením týchto detailov, môžete ich preskočiť a ísť priamo do notebookov s vysokoúrovňovým API. + +## ✍️ Cvičenia: Frameworky + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +Nízkoúrovňové API | [TensorFlow+Keras Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +Vysokoúrovňové API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Po zvládnutí frameworkov si zopakujme koncept overfittingu. + +# Overfitting + +Overfitting je mimoriadne dôležitý koncept v strojovom učení, a je veľmi dôležité ho správne pochopiť! + +Zvážte nasledujúci problém aproximácie 5 bodov (reprezentovaných `x` na grafoch nižšie): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sk.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sk.jpg) +-------------------------|-------------------------- +**Lineárny model, 2 parametre** | **Nelineárny model, 7 parametrov** +Chyba trénovania = 5.3 | Chyba trénovania = 0 +Chyba validácie = 5.1 | Chyba validácie = 20 + +* Naľavo vidíme dobrú aproximáciu priamkou. Pretože počet parametrov je primeraný, model správne pochopí rozloženie bodov. +* Napravo je model príliš výkonný. Pretože máme iba 5 bodov a model má 7 parametrov, môže sa prispôsobiť tak, aby prešiel všetkými bodmi, čím sa chyba trénovania stane 0. To však bráni modelu pochopiť správny vzor v dátach, a preto je chyba validácie veľmi vysoká. + +Je veľmi dôležité nájsť správnu rovnováhu medzi bohatstvom modelu (počet parametrov) a počtom trénovacích vzoriek. + +## Prečo dochádza k overfittingu + + * Nedostatok trénovacích dát + * Príliš výkonný model + * Príliš veľa šumu vo vstupných dátach + +## Ako detekovať overfitting + +Ako môžete vidieť na grafe vyššie, overfitting možno detekovať veľmi nízkou chybou trénovania a vysokou chybou validácie. Normálne počas trénovania vidíme, že chyby trénovania aj validácie začínajú klesať, a potom v určitom bode chyba validácie môže prestať klesať a začať stúpať. Toto bude znak overfittingu a indikátor, že by sme mali pravdepodobne zastaviť trénovanie (alebo aspoň urobiť snímku modelu). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sk.png) + +## Ako predísť overfittingu + +Ak vidíte, že dochádza k overfittingu, môžete urobiť jedno z nasledujúcich: + + * Zvýšiť množstvo trénovacích dát + * Znížiť komplexnosť modelu + * Použiť nejakú [regularizačnú techniku](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), ako napríklad [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), ktorú si neskôr rozoberieme. + +## Overfitting a tradeoff medzi biasom a varianciou + +Overfitting je vlastne prípad všeobecnejšieho problému v štatistike nazývaného [tradeoff medzi biasom a varianciou](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Ak zvážime možné zdroje chyby v našom modeli, môžeme vidieť dva typy chýb: + +* **Chyby biasu** sú spôsobené tým, že náš algoritmus nedokáže správne zachytiť vzťah medzi trénovacími dátami. Môže to byť výsledok toho, že náš model nie je dostatočne výkonný (**underfitting**). +* **Chyby variancie**, ktoré sú spôsobené tým, že model aproximuje šum vo vstupných dátach namiesto zmysluplného vzťahu (**overfitting**). + +Počas trénovania chyba biasu klesá (keď sa náš model učí aproximovať dáta) a chyba variancie stúpa. Je dôležité zastaviť trénovanie - buď manuálne (keď detekujeme overfitting) alebo automaticky (zavedením regularizácie) - aby sme predišli overfittingu. + +## Záver + +V tejto lekcii ste sa naučili rozdiely medzi rôznymi API pre dva najpopulárnejšie AI frameworky, TensorFlow a PyTorch. Okrem toho ste sa naučili o veľmi dôležitej téme, overfittingu. + +## 🚀 Výzva + +V sprievodných notebookoch nájdete 'úlohy' na konci; prejdite si notebooky a dokončite úlohy. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Prehľad & Samoštúdium + +Preskúmajte nasledujúce témy: + +- TensorFlow +- PyTorch +- Overfitting + +Položte si nasledujúce otázky: + +- Aký je rozdiel medzi TensorFlow a PyTorch? +- Aký je rozdiel medzi overfittingom a underfittingom? + +## [Zadanie](lab/README.md) + +V tomto laboratóriu máte za úlohu vyriešiť dva klasifikačné problémy pomocou jedno- a viacvrstvových plne prepojených sietí pomocou PyTorch alebo TensorFlow. + +* [Inštrukcie](lab/README.md) +* [Notebook](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..d28765a9 --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Klasifikácia s PyTorch/TensorFlow + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Vyriešte dve klasifikačné úlohy pomocou jedno- a viacvrstvových plne prepojených sietí s použitím PyTorch alebo TensorFlow: + +1. **[Klasifikácia kosatcov](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - príklad problému s tabuľkovými vstupnými údajmi, ktorý je možné riešiť klasickým strojovým učením. Vašou úlohou bude klasifikovať kosatce do 3 tried na základe 4 číselných parametrov. +1. **MNIST** klasifikácia ručne písaných číslic, ktorú sme už videli. + +Vyskúšajte rôzne architektúry sietí, aby ste dosiahli čo najlepšiu presnosť. + +## Východiskový notebook + +Začnite laboratórium otvorením [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/3-NeuralNetworks/README.md b/translations/sk/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..988e26bb --- /dev/null +++ b/translations/sk/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Úvod do neurónových sietí + +![Zhrnutie obsahu Úvodu do neurónových sietí v kresbe](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sk.png) + +Ako sme diskutovali v úvode, jedným zo spôsobov, ako dosiahnuť inteligenciu, je trénovať **počítačový model** alebo **umelý mozog**. Od polovice 20. storočia sa výskumníci pokúšali o rôzne matematické modely, až kým sa v posledných rokoch tento smer neukázal ako mimoriadne úspešný. Takéto matematické modely mozgu sa nazývajú **neurónové siete**. + +> Neurónové siete sa niekedy nazývajú *Umelé neurónové siete*, ANNs, aby sa zdôraznilo, že hovoríme o modeloch, nie o skutočných sieťach neurónov. + +## Strojové učenie + +Neurónové siete sú súčasťou širšej disciplíny nazývanej **Strojové učenie**, ktorej cieľom je využívať dáta na trénovanie počítačových modelov schopných riešiť problémy. Strojové učenie tvorí veľkú časť umelej inteligencie, avšak v tomto učebnom pláne sa klasickým strojovým učením nezaoberáme. + +> Navštívte náš samostatný **[Strojové učenie pre začiatočníkov](http://github.com/microsoft/ml-for-beginners)** učebný plán, aby ste sa dozvedeli viac o klasickom strojovom učení. + +V strojovom učení predpokladáme, že máme nejakú množinu dát príkladov **X** a zodpovedajúce výstupné hodnoty **Y**. Príklady sú často N-rozmerné vektory, ktoré pozostávajú z **príznakov**, a výstupy sa nazývajú **označenia**. + +Budeme sa zaoberať dvoma najbežnejšími problémami strojového učenia: + +* **Klasifikácia**, kde je potrebné klasifikovať vstupný objekt do dvoch alebo viacerých tried. +* **Regresia**, kde je potrebné predpovedať číselnú hodnotu pre každý zo vstupných vzoriek. + +> Pri reprezentácii vstupov a výstupov ako tenzorov je vstupná množina dát matica veľkosti M×N, kde M je počet vzoriek a N je počet príznakov. Výstupné označenia Y sú vektor veľkosti M. + +V tomto učebnom pláne sa budeme zameriavať iba na modely neurónových sietí. + +## Model neurónu + +Z biológie vieme, že náš mozog pozostáva z neurónových buniek, z ktorých každá má viacero "vstupov" (axónov) a jeden výstup (dendrit). Axóny a dendrity môžu prenášať elektrické signály a spojenia medzi axónmi a dendritmi môžu vykazovať rôzne stupne vodivosti (riadené neuromediátormi). + +![Model neurónu](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sk.jpg) | ![Model neurónu](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sk.png) +----|---- +Skutočný neurón *([Obrázok](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) z Wikipédie)* | Umelý neurón *(Obrázok od autora)* + +Najjednoduchší matematický model neurónu teda obsahuje niekoľko vstupov X1, ..., XN a jeden výstup Y, a sériu váh W1, ..., WN. Výstup sa vypočíta ako: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +kde f je nejaká nelineárna **aktivačná funkcia**. + +> Prvé modely neurónov boli opísané v klasickom článku [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) od Warrena McCullocka a Waltera Pittsa v roku 1943. Donald Hebb vo svojej knihe "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" navrhol spôsob, akým môžu byť tieto siete trénované. + +## V tejto sekcii + +V tejto sekcii sa naučíme: +* [Perceptron](03-Perceptron/README.md), jeden z najstarších modelov neurónových sietí pre dvojtriednu klasifikáciu +* [Viacvrstvové siete](04-OwnFramework/README.md) s priloženým notebookom [ako vytvoriť vlastný framework](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Frameworky neurónových sietí](05-Frameworks/README.md), s týmito notebookmi: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) a [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/sk/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..9ca2e7c2 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Úvod do počítačového videnia + +[Počítačové videnie](https://wikipedia.org/wiki/Computer_vision) je disciplína, ktorej cieľom je umožniť počítačom získavať vysokú úroveň porozumenia digitálnym obrázkom. Toto je pomerne široká definícia, pretože *porozumenie* môže znamenať mnoho rôznych vecí, vrátane nájdenia objektu na obrázku (**detekcia objektov**), pochopenia, čo sa deje (**detekcia udalostí**), opísania obrázku textom alebo rekonštrukcie scény v 3D. Existujú aj špeciálne úlohy týkajúce sa ľudských obrázkov: odhad veku a emócií, detekcia a identifikácia tváre, či odhad 3D pozície, aby sme spomenuli niektoré. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Jednou z najjednoduchších úloh počítačového videnia je **klasifikácia obrázkov**. + +Počítačové videnie sa často považuje za odvetvie AI. V súčasnosti sa väčšina úloh počítačového videnia rieši pomocou neurónových sietí. Viac sa dozvieme o špeciálnom type neurónových sietí používaných v počítačovom videní, [konvolučných neurónových sieťach](../07-ConvNets/README.md), v priebehu tejto sekcie. + +Avšak predtým, než obrázok prejde neurónovou sieťou, v mnohých prípadoch má zmysel použiť niektoré algoritmické techniky na jeho vylepšenie. + +Existuje niekoľko knižníc v Pythone dostupných na spracovanie obrázkov: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** sa dá použiť na čítanie/zapisovanie rôznych formátov obrázkov. Podporuje aj ffmpeg, užitočný nástroj na konverziu video snímok na obrázky. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (známy aj ako PIL) je o niečo výkonnejší a podporuje aj manipuláciu s obrázkami, ako je morfovanie, úpravy palety a ďalšie. +* **[OpenCV](https://opencv.org/)** je výkonná knižnica na spracovanie obrázkov napísaná v C++, ktorá sa stala *de facto* štandardom pre spracovanie obrázkov. Má pohodlné rozhranie pre Python. +* **[dlib](http://dlib.net/)** je knižnica v C++, ktorá implementuje mnoho algoritmov strojového učenia, vrátane niektorých algoritmov počítačového videnia. Má aj rozhranie pre Python a dá sa použiť na náročné úlohy, ako je detekcia tváre a detekcia orientačných bodov na tvári. + +## OpenCV + +[OpenCV](https://opencv.org/) sa považuje za *de facto* štandard pre spracovanie obrázkov. Obsahuje množstvo užitočných algoritmov implementovaných v C++. OpenCV môžete používať aj z Pythonu. + +Dobré miesto na učenie sa OpenCV je [tento kurz Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). V našom učebnom pláne nie je cieľom naučiť sa OpenCV, ale ukázať vám niektoré príklady, kedy ho môžete použiť a ako. + +### Načítanie obrázkov + +Obrázky v Pythone môžu byť pohodlne reprezentované pomocou NumPy polí. Napríklad, čiernobiele obrázky s rozmermi 320x200 pixelov by boli uložené v poli 200x320 a farebné obrázky rovnakých rozmerov by mali tvar 200x320x3 (pre 3 farebné kanály). Na načítanie obrázku môžete použiť nasledujúci kód: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradične OpenCV používa kódovanie BGR (modrá-zelená-červená) pre farebné obrázky, zatiaľ čo ostatné nástroje v Pythone používajú tradičnejšie RGB (červená-zelená-modrá). Aby obrázok vyzeral správne, musíte ho previesť do farebného priestoru RGB, buď výmenou rozmerov v NumPy poli, alebo zavolaním funkcie OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Tá istá funkcia `cvtColor` sa dá použiť na vykonanie iných transformácií farebného priestoru, ako je prevod obrázku na čiernobiely alebo na HSV (odtieň-sýtosť-hodnota). + +OpenCV môžete tiež použiť na načítanie videa snímku po snímke - príklad je uvedený v cvičení [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Spracovanie obrázkov + +Predtým, než obrázok prejde neurónovou sieťou, môžete chcieť aplikovať niekoľko krokov predspracovania. OpenCV dokáže mnoho vecí, vrátane: + +* **Zmenšenia** obrázku pomocou `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Rozmazania** obrázku pomocou `im = cv2.medianBlur(im,3)` alebo `im = cv2.GaussianBlur(im, (3,3), 0)` +* Zmena **jasu a kontrastu** obrázku sa dá vykonať manipuláciou NumPy polí, ako je popísané [v tejto poznámke na Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Použitie [prahovania](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) zavolaním funkcií `cv2.threshold`/`cv2.adaptiveThreshold`, čo je často preferované pred úpravou jasu alebo kontrastu. +* Aplikácia rôznych [transformácií](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) na obrázok: + - **[Afinné transformácie](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** môžu byť užitočné, ak potrebujete kombinovať rotáciu, zmenšenie a skosenie obrázku a poznáte zdrojovú a cieľovú polohu troch bodov na obrázku. Afinné transformácie zachovávajú paralelné čiary paralelné. + - **[Perspektívne transformácie](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** môžu byť užitočné, keď poznáte zdrojové a cieľové polohy 4 bodov na obrázku. Napríklad, ak odfotíte obdĺžnikový dokument pomocou kamery smartfónu z určitého uhla a chcete vytvoriť obdĺžnikový obrázok samotného dokumentu. +* Pochopenie pohybu v obrázku pomocou **[optického toku](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Príklady použitia počítačového videnia + +V našom [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) uvádzame niekoľko príkladov, kedy sa počítačové videnie dá použiť na vykonanie konkrétnych úloh: + +* **Predspracovanie fotografie Braillovej knihy**. Zameriavame sa na to, ako môžeme použiť prahovanie, detekciu vlastností, perspektívnu transformáciu a manipulácie s NumPy na oddelenie jednotlivých Braillových symbolov na ďalšiu klasifikáciu neurónovou sieťou. + +![Braillov obrázok](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sk.jpeg) | ![Predspracovaný Braillov obrázok](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sk.png) | ![Braillove symboly](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sk.png) +----|-----|----- + +> Obrázok z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcia pohybu vo videu pomocou rozdielu snímok**. Ak je kamera pevná, snímky z kamerového záznamu by mali byť dosť podobné. Keďže snímky sú reprezentované ako polia, jednoduchým odčítaním týchto polí pre dve po sebe idúce snímky získame rozdiel pixelov, ktorý by mal byť nízky pre statické snímky a stúpať, keď je v obrázku výrazný pohyb. + +![Obrázok snímok videa a rozdielov snímok](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sk.png) + +> Obrázok z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Detekcia pohybu pomocou optického toku**. [Optický tok](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nám umožňuje pochopiť, ako sa jednotlivé pixely na snímkach videa pohybujú. Existujú dva typy optického toku: + + - **Hustý optický tok** vypočíta vektorové pole, ktoré ukazuje, kam sa každý pixel pohybuje. + - **Riedky optický tok** je založený na výbere niektorých výrazných vlastností na obrázku (napr. hrany) a vytváraní ich trajektórie zo snímky na snímku. + +![Obrázok optického toku](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sk.png) + +> Obrázok z [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Príkladové notebooky: OpenCV [vyskúšajte OpenCV v akcii](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Poďme urobiť niekoľko experimentov s OpenCV preskúmaním [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Záver + +Niekedy sa relatívne zložité úlohy, ako je detekcia pohybu alebo detekcia končekov prstov, dajú vyriešiť čisto pomocou počítačového videnia. Preto je veľmi užitočné poznať základné techniky počítačového videnia a čo knižnice ako OpenCV dokážu. + +## 🚀 Výzva + +Pozrite si [toto 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) zo série AI show, aby ste sa dozvedeli o projekte Cortic Tigers a o tom, ako vytvorili riešenie založené na blokoch na demokratizáciu úloh počítačového videnia prostredníctvom robota. Urobte si prieskum o ďalších podobných projektoch, ktoré pomáhajú novým študentom vstúpiť do tejto oblasti. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Prehľad a samostatné štúdium + +Prečítajte si viac o optickom toku [v tomto skvelom tutoriáli](https://learnopencv.com/optical-flow-in-opencv/). + +## [Úloha](lab/README.md) + +V tejto úlohe natočíte video s jednoduchými gestami a vaším cieľom bude extrahovať pohyby hore/dole/vľavo/vpravo pomocou optického toku. + +Snímka pohybu dlane + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/sk/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..36c11182 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Detekcia pohybov pomocou optického toku + +Laboratórna úloha z [kurzu AI pre začiatočníkov](https://aka.ms/ai-beginners). + +## Úloha + +Pozrite si [toto video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), v ktorom sa dlaň osoby pohybuje doľava/doprava/hore/dole na stabilnom pozadí. + +**Vašou úlohou** bude použiť optický tok na určenie, ktoré časti videa obsahujú pohyby hore/dole/doľava/doprava. + +**Rozšírená úloha** by bola skutočne sledovať pohyb dlane/prsta pomocou farby pokožky, ako je popísané [v tomto blogovom príspevku](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) alebo [tu](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Začiatočný notebook + +Začnite úlohu otvorením [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Záver + +Niekedy je možné relatívne zložité úlohy, ako je detekcia pohybu alebo detekcia špičky prsta, vyriešiť čisto pomocou počítačového videnia. Preto je veľmi užitočné vedieť, čo knižnice ako OpenCV dokážu. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/sk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..aa2ba43c --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Známe architektúry CNN + +### VGG-16 + +VGG-16 je sieť, ktorá dosiahla presnosť 92,7 % v klasifikácii ImageNet top-5 v roku 2014. Má nasledujúcu štruktúru vrstiev: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sk.jpg) + +Ako môžete vidieť, VGG nasleduje tradičnú pyramídovú architektúru, ktorá je sekvenciou vrstiev konvolúcie a pooling. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sk.jpg) + +> Obrázok z [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 je rodina modelov navrhnutá spoločnosťou Microsoft Research v roku 2015. Hlavnou myšlienkou ResNet je použitie **reziduálnych blokov**: + + + +> Obrázok z [tohto článku](https://arxiv.org/pdf/1512.03385.pdf) + +Dôvodom použitia identity pass-through je, aby naša vrstva predpovedala **rozdiel** medzi výsledkom predchádzajúcej vrstvy a výstupom reziduálneho bloku - odtiaľ názov *reziduálny*. Tieto bloky sa trénujú oveľa ľahšie a je možné vytvoriť siete s niekoľkými stovkami týchto blokov (najbežnejšie varianty sú ResNet-52, ResNet-101 a ResNet-152). + +Túto sieť si môžete predstaviť aj ako schopnú prispôsobiť svoju komplexnosť dátam. Na začiatku, keď začínate trénovať sieť, hodnoty váh sú malé a väčšina signálu prechádza cez identity vrstvy. Ako tréning pokračuje a váhy sa zväčšujú, význam parametrov siete rastie a sieť sa prispôsobuje, aby poskytla potrebnú expresívnu silu na správnu klasifikáciu tréningových obrázkov. + +### Google Inception + +Architektúra Google Inception posúva túto myšlienku o krok ďalej a buduje každú vrstvu siete ako kombináciu niekoľkých rôznych ciest: + + + +> Obrázok z [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Tu je potrebné zdôrazniť úlohu konvolúcií 1x1, pretože na prvý pohľad nedávajú zmysel. Prečo by sme mali prechádzať obrázok s filtrom 1x1? Musíte si však uvedomiť, že konvolučné filtre pracujú aj s viacerými hĺbkovými kanálmi (pôvodne - RGB farby, v následných vrstvách - kanály pre rôzne filtre) a konvolúcia 1x1 sa používa na miešanie týchto vstupných kanálov pomocou rôznych trénovateľných váh. Môže byť tiež vnímaná ako downsampling (pooling) cez dimenziu kanálov. + +Tu je [dobrý blogový príspevok](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) na túto tému a [pôvodný článok](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet je rodina modelov so zmenšenou veľkosťou, vhodná pre mobilné zariadenia. Použite ich, ak máte obmedzené zdroje a môžete obetovať trochu presnosti. Hlavnou myšlienkou za nimi je tzv. **depthwise separable convolution**, ktorá umožňuje reprezentovať konvolučné filtre ako kompozíciu priestorových konvolúcií a konvolúcie 1x1 cez hĺbkové kanály. To výrazne znižuje počet parametrov, čím sa sieť zmenšuje a je tiež ľahšie trénovateľná s menším množstvom dát. + +Tu je [dobrý blogový príspevok o MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Záver + +V tejto jednotke ste sa naučili hlavný koncept za neurónovými sieťami pre počítačové videnie - konvolučné siete. Architektúry z reálneho života, ktoré poháňajú klasifikáciu obrázkov, detekciu objektov a dokonca aj siete na generovanie obrázkov, sú všetky založené na CNN, len s viacerými vrstvami a niektorými dodatočnými trikmi pri tréningu. + +## 🚀 Výzva + +V sprievodných notebookoch sú poznámky na spodku o tom, ako dosiahnuť vyššiu presnosť. Urobte niekoľko experimentov a zistite, či dokážete dosiahnuť vyššiu presnosť. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Prehľad a samostatné štúdium + +Aj keď sa CNN najčastejšie používajú na úlohy počítačového videnia, vo všeobecnosti sú dobré na extrakciu vzorov s pevnou veľkosťou. Napríklad, ak pracujeme so zvukmi, môžeme tiež chcieť použiť CNN na hľadanie špecifických vzorov v audio signále - v takom prípade by filtre boli 1-dimenzionálne (a táto CNN by sa nazývala 1D-CNN). Niekedy sa tiež používa 3D-CNN na extrakciu vlastností v multidimenzionálnom priestore, ako sú určité udalosti odohrávajúce sa vo videu - CNN dokáže zachytiť určité vzory zmien vlastností v priebehu času. Urobte si prehľad a samostatné štúdium o ďalších úlohách, ktoré je možné vykonávať pomocou CNN. + +## [Úloha](lab/README.md) + +V tomto laboratóriu máte za úlohu klasifikovať rôzne plemená mačiek a psov. Tieto obrázky sú zložitejšie ako dataset MNIST, majú vyššie rozmery a je tu viac ako 10 tried. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/sk/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..ac3dc027 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konvolučné neurónové siete + +Už sme videli, že neurónové siete sú veľmi dobré pri práci s obrázkami, a dokonca aj jednovrstvový perceptron dokáže rozpoznať ručne písané číslice z datasetu MNIST s primeranou presnosťou. Dataset MNIST je však veľmi špecifický, pretože všetky číslice sú vycentrované v obrázku, čo úlohu zjednodušuje. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +V reálnom živote chceme byť schopní rozpoznať objekty na obrázku bez ohľadu na ich presnú polohu v rámci obrázka. Počítačové videnie sa líši od všeobecnej klasifikácie, pretože pri hľadaní konkrétneho objektu na obrázku prehľadávame obraz a hľadáme špecifické **vzory** a ich kombinácie. Napríklad, pri hľadaní mačky môžeme najskôr hľadať horizontálne línie, ktoré môžu tvoriť fúzy, a potom určitá kombinácia fúzov nám môže naznačiť, že ide o obrázok mačky. Relatívna poloha a prítomnosť určitých vzorov sú dôležité, nie ich presná poloha na obrázku. + +Na extrakciu vzorov použijeme pojem **konvolučné filtre**. Ako viete, obrázok je reprezentovaný 2D maticou alebo 3D tenzorom s farebnou hĺbkou. Aplikácia filtra znamená, že vezmeme relatívne malú maticu nazývanú **jadro filtra** a pre každý pixel v pôvodnom obrázku vypočítame vážený priemer so susednými bodmi. Môžeme si to predstaviť ako malé okno, ktoré sa posúva po celom obrázku a spriemeruje všetky pixely podľa váh v matici jadra filtra. + +![Vertikálny okrajový filter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sk.png) | ![Horizontálny okrajový filter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sk.png) +----|---- + +> Obrázok od Dmitry Soshnikov + +Napríklad, ak aplikujeme 3x3 vertikálny a horizontálny okrajový filter na číslice z MNIST, môžeme zvýrazniť (napr. vysoké hodnoty) miesta, kde sú vertikálne a horizontálne okraje v pôvodnom obrázku. Tieto dva filtre teda môžeme použiť na "hľadanie" okrajov. Podobne môžeme navrhnúť rôzne filtre na hľadanie iných nízkoúrovňových vzorov: + +> Obrázok [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Avšak, zatiaľ čo filtre môžeme navrhnúť manuálne na extrakciu určitých vzorov, môžeme tiež navrhnúť sieť tak, aby sa vzory učila automaticky. To je jedna z hlavných myšlienok za CNN. + +## Hlavné myšlienky za CNN + +Fungovanie CNN je založené na nasledujúcich dôležitých myšlienkach: + +* Konvolučné filtre dokážu extrahovať vzory +* Môžeme navrhnúť sieť tak, aby sa filtre trénovali automaticky +* Rovnaký prístup môžeme použiť na hľadanie vzorov vo vysokoúrovňových črtách, nielen v pôvodnom obrázku. Extrakcia čŕt v CNN teda funguje na hierarchii čŕt, počnúc nízkoúrovňovými kombináciami pixelov až po vysokoúrovňové kombinácie častí obrázka. + +![Hierarchická extrakcia čŕt](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sk.png) + +> Obrázok z [práce Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), založené na [ich výskume](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Cvičenia: Konvolučné neurónové siete + +Pokračujme v skúmaní, ako fungujú konvolučné neurónové siete a ako môžeme dosiahnuť trénovateľné filtre, prostredníctvom nasledujúcich notebookov: + +* [Konvolučné neurónové siete - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolučné neurónové siete - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Pyramídová architektúra + +Väčšina CNN používaných na spracovanie obrázkov nasleduje tzv. pyramídovú architektúru. Prvá konvolučná vrstva aplikovaná na pôvodné obrázky má zvyčajne relatívne nízky počet filtrov (8-16), ktoré zodpovedajú rôznym kombináciám pixelov, ako sú horizontálne/vertikálne línie alebo ťahy. Na ďalšej úrovni znižujeme priestorovú dimenziu siete a zvyšujeme počet filtrov, čo zodpovedá väčšiemu počtu možných kombinácií jednoduchých čŕt. S každou vrstvou, ako sa približujeme k finálnemu klasifikátoru, sa priestorové rozmery obrázka zmenšujú a počet filtrov rastie. + +Ako príklad sa pozrime na architektúru VGG-16, siete, ktorá dosiahla 92,7% presnosť v top-5 klasifikácii ImageNet v roku 2014: + +![Vrstvy ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sk.jpg) + +![Pyramída ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sk.jpg) + +> Obrázok z [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) + +## Najznámejšie architektúry CNN + +[Pokračujte v štúdiu o najznámejších architektúrach CNN](CNN_Architectures.md) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/sk/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..e9ff2102 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Klasifikácia tvárí domácich miláčikov + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Predstavte si, že potrebujete vyvinúť aplikáciu pre škôlku domácich miláčikov na katalogizáciu všetkých zvierat. Jednou z vynikajúcich funkcií takejto aplikácie by bolo automatické rozpoznávanie plemena z fotografie. Toto je možné úspešne dosiahnuť pomocou neurónových sietí. + +Vašou úlohou je natrénovať konvolučnú neurónovú sieť na klasifikáciu rôznych plemien mačiek a psov pomocou datasetu **Pet Faces**. + +## Dataset + +Použijeme dataset **Pet Faces**, ktorý je odvodený z datasetu domácich miláčikov [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Obsahuje 35 rôznych plemien psov a mačiek. + +![Dataset, s ktorým budeme pracovať](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sk.png) + +Na stiahnutie datasetu použite tento úryvok kódu: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Začiatok práce s notebookom + +Začnite laboratórnu úlohu otvorením [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Záver + +Vyriešili ste pomerne zložitý problém klasifikácie obrázkov od základov! Bolo tu veľa tried, a napriek tomu ste dokázali dosiahnuť rozumnú presnosť! Má tiež zmysel merať top-k presnosť, pretože je ľahké zameniť niektoré triedy, ktoré nie sú jasne odlišné ani pre ľudské oko. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..d0c28ed2 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Predtrénované siete a transferové učenie + +Trénovanie CNN môže zabrať veľa času a vyžaduje veľké množstvo dát. Avšak veľká časť času sa venuje učeniu najlepších nízkoúrovňových filtrov, ktoré sieť môže použiť na extrahovanie vzorov z obrázkov. Prirodzene sa vynára otázka - môžeme použiť neurónovú sieť natrénovanú na jednom datasete a prispôsobiť ju na klasifikáciu iných obrázkov bez potreby kompletného procesu trénovania? + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Tento prístup sa nazýva **transferové učenie**, pretože prenášame určitú znalosť z jedného modelu neurónovej siete na druhý. Pri transferovom učení zvyčajne začíname s predtrénovaným modelom, ktorý bol natrénovaný na veľkom datasete obrázkov, ako je napríklad **ImageNet**. Tieto modely už dokážu dobre extrahovať rôzne vlastnosti z generických obrázkov, a v mnohých prípadoch stačí postaviť klasifikátor na vrchole týchto extrahovaných vlastností, aby sme dosiahli dobrý výsledok. + +> ✅ Transferové učenie je termín, ktorý nájdete aj v iných akademických oblastiach, ako je vzdelávanie. Označuje proces prenášania znalostí z jednej oblasti do druhej. + +## Predtrénované modely ako extraktory vlastností + +Konvolučné siete, o ktorých sme hovorili v predchádzajúcej sekcii, obsahovali množstvo vrstiev, z ktorých každá má za úlohu extrahovať určité vlastnosti z obrázku, od nízkoúrovňových kombinácií pixelov (ako horizontálne/vertikálne čiary alebo ťahy), až po vyššie úrovne kombinácií vlastností, ktoré zodpovedajú veciam ako oko alebo plameň. Ak trénujeme CNN na dostatočne veľkom datasete generických a rôznorodých obrázkov, sieť by sa mala naučiť extrahovať tieto spoločné vlastnosti. + +Keras aj PyTorch obsahujú funkcie na jednoduché načítanie predtrénovaných váh neurónových sietí pre niektoré bežné architektúry, z ktorých väčšina bola trénovaná na obrázkoch z ImageNet. Najčastejšie používané sú popísané na stránke [CNN Architektúry](../07-ConvNets/CNN_Architectures.md) z predchádzajúcej lekcie. Konkrétne môžete zvážiť použitie jednej z nasledujúcich: + +* **VGG-16/VGG-19**, ktoré sú relatívne jednoduché modely, ale stále poskytujú dobrú presnosť. Použitie VGG ako prvý pokus je často dobrá voľba na zistenie, ako transferové učenie funguje. +* **ResNet** je rodina modelov navrhnutých Microsoft Research v roku 2015. Majú viac vrstiev, a preto vyžadujú viac zdrojov. +* **MobileNet** je rodina modelov s redukovanou veľkosťou, vhodná pre mobilné zariadenia. Použite ich, ak máte obmedzené zdroje a môžete obetovať trochu presnosti. + +Tu sú ukážkové vlastnosti extrahované z obrázku mačky pomocou siete VGG-16: + +![Vlastnosti extrahované VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sk.png) + +## Dataset Mačky vs. Psy + +V tomto príklade použijeme dataset [Mačky a Psy](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), ktorý je veľmi blízky reálnemu scenáru klasifikácie obrázkov. + +## ✍️ Cvičenie: Transferové učenie + +Pozrime sa na transferové učenie v praxi v príslušných notebookoch: + +* [Transferové učenie - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Transferové učenie - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Vizualizácia Adversariálnej Mačky + +Predtrénovaná neurónová sieť obsahuje rôzne vzory vo svojej *pamäti*, vrátane predstáv o **ideálnej mačke** (ako aj ideálnom psovi, ideálnej zebre, atď.). Bolo by zaujímavé nejako **vizualizovať tento obrázok**. Avšak nie je to jednoduché, pretože vzory sú rozptýlené po celej váhe siete a tiež organizované v hierarchickej štruktúre. + +Jedným prístupom, ktorý môžeme použiť, je začať s náhodným obrázkom a potom sa pokúsiť použiť techniku **gradientného zostupu** na úpravu tohto obrázku tak, aby si sieť začala myslieť, že je to mačka. + +![Optimalizačná slučka obrázku](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sk.png) + +Ak to však urobíme, dostaneme niečo veľmi podobné náhodnému šumu. Je to preto, že *existuje mnoho spôsobov, ako presvedčiť sieť, že vstupný obrázok je mačka*, vrátane niektorých, ktoré vizuálne nedávajú zmysel. Zatiaľ čo tieto obrázky obsahujú veľa vzorov typických pre mačku, nič ich neobmedzuje, aby boli vizuálne rozpoznateľné. + +Na zlepšenie výsledku môžeme pridať ďalší člen do stratovej funkcie, ktorý sa nazýva **variácia strata**. Je to metrika, ktorá ukazuje, ako podobné sú susedné pixely obrázku. Minimalizácia variácie straty robí obrázok hladším a zbavuje sa šumu - čím odhaľuje vizuálne príťažlivejšie vzory. Tu je príklad takýchto "ideálnych" obrázkov, ktoré sú klasifikované ako mačka a zebra s vysokou pravdepodobnosťou: + +![Ideálna Mačka](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sk.png) | ![Ideálna Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sk.png) +-----|----- + *Ideálna Mačka* | *Ideálna Zebra* + +Podobný prístup môže byť použitý na vykonanie tzv. **adversariálnych útokov** na neurónovú sieť. Predpokladajme, že chceme oklamať neurónovú sieť a urobiť z psa mačku. Ak vezmeme obrázok psa, ktorý je sieťou rozpoznaný ako pes, môžeme ho trochu upraviť pomocou gradientného zostupu, až kým ho sieť nezačne klasifikovať ako mačku: + +![Obrázok psa](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sk.png) | ![Obrázok psa klasifikovaný ako mačka](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sk.png) +-----|----- +*Pôvodný obrázok psa* | *Obrázok psa klasifikovaný ako mačka* + +Pozrite si kód na reprodukciu vyššie uvedených výsledkov v nasledujúcom notebooku: + +* [Ideálna a Adversariálna Mačka - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Záver + +Pomocou transferového učenia môžete rýchlo zostaviť klasifikátor pre úlohu klasifikácie vlastných objektov a dosiahnuť vysokú presnosť. Vidíte, že zložitejšie úlohy, ktoré teraz riešime, vyžadujú vyšší výpočtový výkon a nemôžu byť ľahko vyriešené na CPU. V ďalšej jednotke sa pokúsime použiť ľahšiu implementáciu na trénovanie rovnakého modelu s nižšími výpočtovými zdrojmi, čo vedie len k mierne nižšej presnosti. + +## 🚀 Výzva + +V sprievodných notebookoch sú poznámky na spodku o tom, ako transferové znalosti najlepšie fungujú s trochu podobnými trénovacími dátami (napríklad nový typ zvieraťa). Urobte experimenty s úplne novými typmi obrázkov, aby ste zistili, ako dobre alebo zle vaše modely transferových znalostí fungujú. + +## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Prehľad & Samoštúdium + +Prečítajte si [TrainingTricks.md](TrainingTricks.md), aby ste si prehĺbili znalosti o ďalších spôsoboch trénovania vašich modelov. + +## [Úloha](lab/README.md) + +V tomto laboratóriu použijeme reálny dataset [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) domácich miláčikov s 35 plemenami mačiek a psov a vytvoríme klasifikátor pomocou transferového učenia. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..b7358416 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Triky pri tréningu hlbokého učenia + +Ako sa neurónové siete stávajú hlbšími, proces ich tréningu sa stáva čoraz náročnejším. Jedným z hlavných problémov sú takzvané [miznúce gradienty](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) alebo [explodujúce gradienty](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Tento článok](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) poskytuje dobrý úvod do týchto problémov. + +Na zefektívnenie tréningu hlbokých sietí existuje niekoľko techník, ktoré môžeme použiť. + +## Udržiavanie hodnôt v rozumnom intervale + +Aby boli numerické výpočty stabilnejšie, chceme zabezpečiť, že všetky hodnoty v našej neurónovej sieti budú v rozumnom rozsahu, typicky [-1..1] alebo [0..1]. Nie je to veľmi prísna požiadavka, ale povaha výpočtov s pohyblivou desatinnou čiarkou je taká, že hodnoty rôznych veľkostí sa nedajú presne manipulovať spolu. Napríklad, ak sčítame 10-10 a 1010, pravdepodobne dostaneme 1010, pretože menšia hodnota bude „konvertovaná“ na rovnaký rád ako väčšia, a tým sa stratí mantisa. + +Väčšina aktivačných funkcií má nelinearity okolo [-1..1], a preto má zmysel škálovať všetky vstupné dáta do intervalu [-1..1] alebo [0..1]. + +## Inicializácia počiatočných váh + +Ideálne chceme, aby hodnoty zostali v rovnakom rozsahu po prechode cez vrstvy siete. Preto je dôležité inicializovať váhy tak, aby sa zachovala distribúcia hodnôt. + +Normálne rozdelenie **N(0,1)** nie je dobrý nápad, pretože ak máme *n* vstupov, štandardná odchýlka výstupu bude *n*, a hodnoty pravdepodobne vyskočia z intervalu [0..1]. + +Nasledujúce inicializácie sa často používajú: + + * Rovnomerné rozdelenie -- `uniform` + * **N(0,1/n)** -- `gaussian` + * **N(0,1/√n_in)** zaručuje, že pre vstupy s nulovým priemerom a štandardnou odchýlkou 1 zostane rovnaký priemer/štandardná odchýlka + * **N(0,√2/(n_in+n_out))** -- takzvaná **Xavierova inicializácia** (`glorot`), pomáha udržiavať signály v rozsahu počas predného aj spätného šírenia + +## Batch Normalization + +Aj pri správnej inicializácii váh sa môžu váhy počas tréningu stať ľubovoľne veľkými alebo malými, čo spôsobí, že signály vyjdú z správneho rozsahu. Signály môžeme vrátiť späť pomocou jednej z techník **normalizácie**. Aj keď existuje niekoľko z nich (normalizácia váh, normalizácia vrstiev), najčastejšie používaná je Batch Normalization. + +Myšlienka **batch normalizácie** je zohľadniť všetky hodnoty v rámci minibatchu a vykonať normalizáciu (t.j. odpočítať priemer a vydeliť štandardnou odchýlkou) na základe týchto hodnôt. Implementuje sa ako vrstva siete, ktorá vykonáva túto normalizáciu po aplikovaní váh, ale pred aktivačnou funkciou. Výsledkom je pravdepodobne vyššia konečná presnosť a rýchlejší tréning. + +Tu je [pôvodný článok](https://arxiv.org/pdf/1502.03167.pdf) o batch normalizácii, [vysvetlenie na Wikipédii](https://en.wikipedia.org/wiki/Batch_normalization), a [dobrý úvodný blogový príspevok](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (a jeden [v ruštine](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** je zaujímavá technika, ktorá počas tréningu odstraňuje určitý percentuálny podiel náhodných neurónov. Implementuje sa tiež ako vrstva s jedným parametrom (percento neurónov na odstránenie, typicky 10%-50%), a počas tréningu nuluje náhodné prvky vstupného vektora pred ich odoslaním do ďalšej vrstvy. + +Aj keď to môže znieť ako zvláštny nápad, môžete vidieť efekt dropout na tréningu klasifikátora číslic MNIST v notebooku [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Urýchľuje tréning a umožňuje dosiahnuť vyššiu presnosť v menšom počte tréningových epoch. + +Tento efekt možno vysvetliť niekoľkými spôsobmi: + + * Môže byť považovaný za náhodný šokový faktor pre model, ktorý ho vyvedie z lokálneho minima + * Môže byť považovaný za *implicitné priemerovanie modelu*, pretože môžeme povedať, že počas dropout trénujeme mierne odlišný model + +> *Niektorí ľudia hovoria, že keď sa opitý človek snaží niečo naučiť, zapamätá si to lepšie nasledujúce ráno v porovnaní s triezvym človekom, pretože mozog s niektorými nefunkčnými neurónmi sa snaží lepšie prispôsobiť, aby pochopil význam. Nikdy sme sami netestovali, či je to pravda alebo nie.* + +## Prevencia overfittingu + +Jedným z veľmi dôležitých aspektov hlbokého učenia je schopnosť predchádzať [overfittingu](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Aj keď môže byť lákavé použiť veľmi výkonný model neurónovej siete, vždy by sme mali vyvážiť počet parametrov modelu s počtom tréningových vzoriek. + +> Uistite sa, že rozumiete konceptu [overfittingu](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), ktorý sme predstavili skôr! + +Existuje niekoľko spôsobov, ako predchádzať overfittingu: + + * Skoré zastavenie -- neustále monitorovanie chyby na validačnej množine a zastavenie tréningu, keď sa validačná chyba začne zvyšovať. + * Explicitný úbytok váh / Regularizácia -- pridanie dodatočného trestu do funkcie straty za vysoké absolútne hodnoty váh, čo zabraňuje modelu dosahovať veľmi nestabilné výsledky + * Priemerovanie modelu -- tréning niekoľkých modelov a následné priemerovanie výsledkov. To pomáha minimalizovať varianciu. + * Dropout (Implicitné priemerovanie modelu) + +## Optimalizátory / Tréningové algoritmy + +Ďalším dôležitým aspektom tréningu je výber dobrého tréningového algoritmu. Aj keď je klasický **gradient descent** rozumnou voľbou, môže byť niekedy príliš pomalý alebo spôsobiť iné problémy. + +V hlbokom učení používame **Stochastic Gradient Descent** (SGD), čo je gradient descent aplikovaný na minibatch, náhodne vybraný z tréningovej množiny. Váhy sa upravujú pomocou tejto rovnice: + +wt+1 = wt - η∇ℒ + +### Momentum + +V **momentum SGD** uchovávame časť gradientu z predchádzajúcich krokov. Je to podobné ako keď sa pohybujeme niekam s hybnosťou, a dostaneme úder iným smerom, naša trajektória sa nezmení okamžite, ale zachová si časť pôvodného pohybu. Tu zavádzame ďalší vektor v na reprezentáciu *rýchlosti*: + +* vt+1 = γ vt - η∇ℒ +* wt+1 = wt+vt+1 + +Tu parameter γ označuje rozsah, do akého berieme hybnosť do úvahy: γ=0 zodpovedá klasickému SGD; γ=1 je čistá pohybová rovnica. + +### Adam, Adagrad, atď. + +Keď v každej vrstve násobíme signály nejakou maticou Wi, v závislosti od ||Wi|| môže gradient buď miznúť a byť blízko 0, alebo rásť neobmedzene. Toto je podstata problému Explodujúcich/Miznúcich Gradientov. + +Jedným z riešení tohto problému je použiť v rovnici iba smer gradientu a ignorovať absolútnu hodnotu, t.j. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), kde ||∇ℒ|| = √∑(∇ℒ)2 + +Tento algoritmus sa nazýva **Adagrad**. Ďalšie algoritmy, ktoré používajú rovnakú myšlienku: **RMSProp**, **Adam** + +> **Adam** je považovaný za veľmi efektívny algoritmus pre mnohé aplikácie, takže ak si nie ste istí, ktorý použiť - použite Adam. + +### Gradient clipping + +Gradient clipping je rozšírenie vyššie uvedenej myšlienky. Keď ||∇ℒ|| ≤ θ, berieme do úvahy pôvodný gradient pri optimalizácii váh, a keď ||∇ℒ|| > θ - delíme gradient jeho normou. Tu θ je parameter, vo väčšine prípadov môžeme zvoliť θ=1 alebo θ=10. + +### Learning rate decay + +Úspech tréningu často závisí od parametra learning rate η. Je logické predpokladať, že väčšie hodnoty η vedú k rýchlejšiemu tréningu, čo je niečo, čo typicky chceme na začiatku tréningu, a potom menšie hodnoty η umožňujú jemné doladenie siete. Preto vo väčšine prípadov chceme znižovať η počas tréningu. + +To sa dá dosiahnuť násobením η nejakým číslom (napr. 0.98) po každej epoche tréningu, alebo použitím zložitejšieho **rozvrhu learning rate**. + +## Rôzne architektúry sietí + +Výber správnej architektúry siete pre váš problém môže byť zložitý. Normálne by sme si vybrali architektúru, ktorá sa osvedčila pre našu konkrétnu úlohu (alebo podobnú). Tu je [dobrý prehľad](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) architektúr neurónových sietí pre počítačové videnie. + +> Je dôležité vybrať architektúru, ktorá bude dostatočne výkonná pre počet tréningových vzoriek, ktoré máme. Výber príliš výkonného modelu môže viesť k [overfittingu](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Ďalším dobrým spôsobom by bolo použiť architektúru, ktorá sa automaticky prispôsobí požadovanej zložitosti. Do určitej miery sú architektúry **ResNet** a **Inception** samo-prispôsobivé. [Viac o architektúrach pre počítačové videnie](../07-ConvNets/CNN_Architectures.md). + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..96f3b81c --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Klasifikácia domácich miláčikov z Oxfordu pomocou transferového učenia + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Predstavte si, že potrebujete vyvinúť aplikáciu pre škôlku domácich miláčikov na katalogizáciu všetkých zvierat. Jednou z výnimočných funkcií takejto aplikácie by bolo automatické rozpoznanie plemena z fotografie. V tejto úlohe použijeme transferové učenie na klasifikáciu reálnych fotografií domácich miláčikov z datasetu [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Dataset + +Použijeme pôvodný dataset [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), ktorý obsahuje 35 rôznych plemien psov a mačiek. + +Na stiahnutie datasetu použite tento kód: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Začiatok notebooku + +Začnite laboratórnu úlohu otvorením [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Záver + +Transferové učenie a predtrénované siete nám umožňujú pomerne jednoducho riešiť problémy klasifikácie obrazov zo skutočného sveta. Predtrénované siete však fungujú dobre na obrázkoch podobného typu, a ak začneme klasifikovať veľmi odlišné obrázky (napr. medicínske obrázky), pravdepodobne dosiahneme oveľa horšie výsledky. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/sk/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..ac4fede8 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Autoenkodéry + +Pri trénovaní CNN je jedným z problémov, že potrebujeme veľa označených dát. V prípade klasifikácie obrázkov musíme obrázky rozdeliť do rôznych tried, čo je manuálna práca. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Môžeme však chcieť použiť surové (neoznačené) dáta na trénovanie CNN extraktorov vlastností, čo sa nazýva **samoriadené učenie**. Namiesto označení použijeme trénovacie obrázky ako vstup aj výstup siete. Hlavnou myšlienkou **autoenkodéra** je, že budeme mať **enkodérovú sieť**, ktorá konvertuje vstupný obrázok do nejakého **latentného priestoru** (zvyčajne je to len vektor menšej veľkosti), a potom **dekodérovú sieť**, ktorej cieľom bude rekonštruovať pôvodný obrázok. + +> ✅ [Autoenkodér](https://wikipedia.org/wiki/Autoencoder) je "typ umelej neurónovej siete, ktorá sa používa na učenie efektívneho kódovania neoznačených dát." + +Keďže trénujeme autoenkodér, aby zachytil čo najviac informácií z pôvodného obrázku pre presnú rekonštrukciu, sieť sa snaží nájsť najlepšie **zobrazenie** vstupných obrázkov, aby zachytila ich význam. + +![Schéma Autoenkodéra](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sk.jpg) + +> Obrázok z [Keras blogu](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenáre použitia autoenkodérov + +Aj keď rekonštrukcia pôvodných obrázkov sama o sebe nemusí byť užitočná, existuje niekoľko scenárov, kde sú autoenkodéry obzvlášť užitočné: + +* **Znižovanie dimenzie obrázkov pre vizualizáciu** alebo **trénovanie obrazových zobrazení**. Autoenkodéry zvyčajne poskytujú lepšie výsledky ako PCA, pretože berú do úvahy priestorovú povahu obrázkov a hierarchické vlastnosti. +* **Odstraňovanie šumu**, t.j. odstránenie šumu z obrázku. Keďže šum obsahuje veľa zbytočných informácií, autoenkodér ho nedokáže všetok zahrnúť do relatívne malého latentného priestoru, a tak zachytí iba dôležitú časť obrázku. Pri trénovaní odstraňovačov šumu začíname s pôvodnými obrázkami a používame obrázky s umelo pridaným šumom ako vstup pre autoenkodér. +* **Superrozlíšenie**, zvyšovanie rozlíšenia obrázkov. Začíname s obrázkami vo vysokom rozlíšení a používame obrázky s nižším rozlíšením ako vstup pre autoenkodér. +* **Generatívne modely**. Po natrénovaní autoenkodéra môžeme dekodérovú časť použiť na vytváranie nových objektov začínajúc od náhodných latentných vektorov. + +## Variabilné autoenkodéry (VAE) + +Tradičné autoenkodéry nejako znižujú dimenziu vstupných dát a zisťujú dôležité vlastnosti vstupných obrázkov. Latentné vektory však často nedávajú veľký zmysel. Inými slovami, ak vezmeme dataset MNIST ako príklad, zisťovanie, ktoré číslice zodpovedajú rôznym latentným vektorom, nie je jednoduchá úloha, pretože blízke latentné vektory nemusia nevyhnutne zodpovedať rovnakým čísliciam. + +Na druhej strane, na trénovanie *generatívnych* modelov je lepšie mať nejaké pochopenie latentného priestoru. Táto myšlienka nás privádza k **variabilnému autoenkodéru** (VAE). + +VAE je autoenkodér, ktorý sa učí predpovedať *štatistické rozdelenie* latentných parametrov, tzv. **latentné rozdelenie**. Napríklad môžeme chcieť, aby latentné vektory boli normálne rozdelené s nejakým priemerom zmean a štandardnou odchýlkou zsigma (obidva, priemer aj štandardná odchýlka, sú vektory nejakej dimenzie d). Enkodér vo VAE sa učí predpovedať tieto parametre a dekodér potom vezme náhodný vektor z tohto rozdelenia na rekonštrukciu objektu. + +Zhrnutie: + + * Zo vstupného vektora predpovedáme `z_mean` a `z_log_sigma` (namiesto predpovedania samotnej štandardnej odchýlky predpovedáme jej logaritmus) + * Vzorkujeme vektor `sample` z rozdelenia N(zmean,exp(zlog\_sigma)) + * Dekodér sa snaží dekódovať pôvodný obrázok pomocou `sample` ako vstupného vektora + + + +> Obrázok z [tohto blogového príspevku](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) od Isaaka Dykemana + +Variabilné autoenkodéry používajú komplexnú stratu, ktorá pozostáva z dvoch častí: + +* **Rekonštrukčná strata** je funkcia straty, ktorá ukazuje, ako blízko je rekonštruovaný obrázok k cieľu (môže to byť Mean Squared Error, alebo MSE). Je to rovnaká funkcia straty ako pri bežných autoenkodéroch. +* **KL strata**, ktorá zabezpečuje, že rozdelenie latentných premenných zostáva blízke normálnemu rozdeleniu. Je založená na pojme [Kullback-Leiblerovej divergencie](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - metriky na odhad, ako podobné sú dve štatistické rozdelenia. + +Jednou dôležitou výhodou VAE je, že nám umožňujú relatívne ľahko generovať nové obrázky, pretože vieme, z ktorého rozdelenia vzorkovať latentné vektory. Napríklad, ak trénujeme VAE s 2D latentným vektorom na MNIST, môžeme potom meniť komponenty latentného vektora, aby sme získali rôzne číslice: + +vaemnist + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +Pozorujte, ako sa obrázky prelínajú, keď začíname získavať latentné vektory z rôznych častí latentného priestoru parametrov. Tento priestor môžeme tiež vizualizovať v 2D: + +vaemnist cluster + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Cvičenia: Autoenkodéry + +Zistite viac o autoenkodéroch v týchto príslušných notebookoch: + +* [Autoenkodéry v TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoenkodéry v PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Vlastnosti autoenkodérov + +* **Špecifické pre dáta** - fungujú dobre iba s typom obrázkov, na ktorých boli trénované. Napríklad, ak trénujeme sieť na superrozlíšenie na kvetoch, nebude dobre fungovať na portrétoch. Je to preto, že sieť dokáže vytvoriť obrázok vo vyššom rozlíšení tým, že berie jemné detaily z vlastností naučených z trénovacej množiny. +* **Stratové** - rekonštruovaný obrázok nie je rovnaký ako pôvodný obrázok. Povaha straty je definovaná *funkciou straty* použitou počas trénovania. +* Funguje na **neoznačených dátach** + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Záver + +V tejto lekcii ste sa naučili o rôznych typoch autoenkodérov dostupných pre vedca v oblasti AI. Naučili ste sa, ako ich vytvoriť a ako ich použiť na rekonštrukciu obrázkov. Tiež ste sa naučili o VAE a ako ich použiť na generovanie nových obrázkov. + +## 🚀 Výzva + +V tejto lekcii ste sa naučili používať autoenkodéry na obrázky. Ale môžu sa použiť aj na hudbu! Pozrite si projekt Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), ktorý používa autoenkodéry na učenie rekonštrukcie hudby. Urobte niekoľko [experimentov](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) s touto knižnicou a zistite, čo dokážete vytvoriť. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Prehľad a samoštúdium + +Pre referenciu si prečítajte viac o autoenkodéroch v týchto zdrojoch: + +* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blogový príspevok na NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/) +* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Zadanie + +Na konci [tohto notebooku s TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) nájdete 'úlohu' - použite ju ako svoje zadanie. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/10-GANs/README.md b/translations/sk/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..49b853ce --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generatívne adversariálne siete + +V predchádzajúcej časti sme sa naučili o **generatívnych modeloch**: modeloch, ktoré dokážu generovať nové obrázky podobné tým v tréningovej množine. VAE bol dobrým príkladom generatívneho modelu. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Ak sa však pokúsime generovať niečo naozaj zmysluplné, napríklad maľbu v rozumnej kvalite, pomocou VAE, zistíme, že tréning sa nekonverguje dobre. Pre tento prípad použitia by sme sa mali naučiť o inej architektúre špecificky zameranej na generatívne modely - **Generatívne adversariálne siete**, alebo GANy. + +Hlavná myšlienka GANov spočíva v tom, že máme dve neurónové siete, ktoré sa budú trénovať proti sebe: + + + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Malý slovník: +> * **Generátor** je sieť, ktorá prijíma náhodný vektor a ako výsledok produkuje obrázok. +> * **Diskriminátor** je sieť, ktorá prijíma obrázok a mala by určiť, či ide o skutočný obrázok (z tréningovej množiny), alebo či bol vygenerovaný generátorom. V podstate ide o klasifikátor obrázkov. + +### Diskriminátor + +Architektúra diskriminátora sa nelíši od bežnej siete na klasifikáciu obrázkov. V najjednoduchšom prípade môže ísť o plne prepojený klasifikátor, ale pravdepodobne to bude [konvolučná sieť](../07-ConvNets/README.md). + +> ✅ GAN založený na konvolučných sieťach sa nazýva [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Diskriminátor CNN pozostáva z nasledujúcich vrstiev: niekoľko konvolúcií + poolingov (s klesajúcou priestorovou veľkosťou) a jednej alebo viacerých plne prepojených vrstiev na získanie "vektorov vlastností", a nakoniec binárneho klasifikátora. + +> ✅ 'Pooling' v tomto kontexte je technika, ktorá zmenšuje veľkosť obrázka. "Poolingové vrstvy znižujú rozmery dát kombinovaním výstupov klastrov neurónov v jednej vrstve do jedného neurónu v nasledujúcej vrstve." - [zdroj](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generátor + +Generátor je o niečo zložitejší. Môžete si ho predstaviť ako obrátený diskriminátor. Začína sa latentným vektorom (namiesto vektora vlastností), ktorý má plne prepojenú vrstvu na jeho konverziu do požadovanej veľkosti/tvaru, nasledovanú dekonvolúciami + zväčšovaním. Toto je podobné *dekodéru* v [autoenkóderi](../09-Autoencoders/README.md). + +> ✅ Pretože konvolučná vrstva je implementovaná ako lineárny filter prechádzajúci obrázkom, dekonvolúcia je v podstate podobná konvolúcii a môže byť implementovaná pomocou rovnakej logiky vrstvy. + + + +> Obrázok od [Dmitry Soshnikov](http://soshnikov.com) + +### Tréning GANov + +GANy sa nazývajú **adversariálne**, pretože medzi generátorom a diskriminátorom prebieha neustála súťaž. Počas tejto súťaže sa obidva modely zlepšujú, čím sa sieť učí vytvárať stále lepšie obrázky. + +Tréning prebieha v dvoch fázach: + +* **Tréning diskriminátora**. Táto úloha je pomerne jednoduchá: vygenerujeme dávku obrázkov pomocou generátora, označíme ich ako 0, čo znamená falošný obrázok, a vezmeme dávku obrázkov z tréningovej množiny (s označením 1, skutočný obrázok). Získame nejakú *stratu diskriminátora* a vykonáme spätné šírenie. +* **Tréning generátora**. Toto je o niečo zložitejšie, pretože nepoznáme očakávaný výstup generátora priamo. Vezmeme celú GAN sieť pozostávajúcu z generátora nasledovaného diskriminátorom, nakŕmime ju náhodnými vektormi a očakávame, že výsledok bude 1 (zodpovedajúci skutočným obrázkom). Potom zmrazíme parametre diskriminátora (nechceme, aby sa v tomto kroku trénoval) a vykonáme spätné šírenie. + +Počas tohto procesu straty generátora a diskriminátora významne neklesajú. V ideálnom prípade by mali oscilovať, čo zodpovedá zlepšovaniu výkonu oboch sietí. + +## ✍️ Cvičenia: GANy + +* [GAN Notebook v TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN Notebook v PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Problémy s tréningom GANov + +GANy sú známe tým, že sú obzvlášť náročné na tréning. Tu je niekoľko problémov: + +* **Kolaps módu**. Tento termín znamená, že generátor sa naučí vytvárať jeden úspešný obrázok, ktorý oklame diskriminátor, a nie rôzne obrázky. +* **Citlivosť na hyperparametre**. Často sa stáva, že GAN nekonverguje vôbec, a potom náhle zníženie rýchlosti učenia vedie ku konvergencii. +* Udržiavanie **rovnováhy** medzi generátorom a diskriminátorom. V mnohých prípadoch môže strata diskriminátora klesnúť na nulu pomerne rýchlo, čo spôsobí, že generátor už nebude schopný ďalej trénovať. Na prekonanie tohto problému môžeme skúsiť nastaviť rôzne rýchlosti učenia pre generátor a diskriminátor, alebo preskočiť tréning diskriminátora, ak je strata už príliš nízka. +* Tréning pre **vysoké rozlíšenie**. Tento problém, podobne ako pri autoenkóderoch, vzniká, pretože rekonštrukcia príliš mnohých vrstiev konvolučnej siete vedie k artefaktom. Tento problém sa zvyčajne rieši tzv. **progresívnym rastom**, keď sa najprv niekoľko vrstiev trénuje na obrázkoch s nízkym rozlíšením, a potom sa vrstvy "odomknú" alebo pridajú. Ďalším riešením by bolo pridanie extra spojení medzi vrstvami a tréning viacerých rozlíšení naraz - podrobnosti nájdete v tomto [Multi-Scale Gradient GANs článku](https://arxiv.org/abs/1903.06048). + +## Prenos štýlu + +GANy sú skvelým spôsobom, ako generovať umelecké obrázky. Ďalšou zaujímavou technikou je tzv. **prenos štýlu**, ktorý vezme jeden **obsahový obrázok** a prekreslí ho v inom štýle, aplikujúc filtre zo **štýlového obrázka**. + +Ako to funguje: +* Začneme s náhodným šumovým obrázkom (alebo s obsahovým obrázkom, ale pre pochopenie je jednoduchšie začať s náhodným šumom). +* Naším cieľom bude vytvoriť taký obrázok, ktorý bude blízky obsahovému obrázku aj štýlovému obrázku. To sa určí pomocou dvoch funkcií straty: + - **Strata obsahu** sa vypočíta na základe vlastností extrahovaných CNN na niektorých vrstvách z aktuálneho obrázka a obsahového obrázka. + - **Strata štýlu** sa vypočíta medzi aktuálnym obrázkom a štýlovým obrázkom šikovným spôsobom pomocou Gramových matíc (viac podrobností v [príkladovom notebooku](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Na vyhladenie obrázka a odstránenie šumu zavádzame aj **stratu variácie**, ktorá počíta priemernú vzdialenosť medzi susednými pixelmi. +* Hlavná optimalizačná slučka upravuje aktuálny obrázok pomocou gradientného zostupu (alebo iného optimalizačného algoritmu) na minimalizáciu celkovej straty, ktorá je váženým súčtom všetkých troch strát. + +## ✍️ Príklad: [Prenos štýlu](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Zhrnutie + +V tejto lekcii ste sa naučili o GANoch a ako ich trénovať. Tiež ste sa dozvedeli o špeciálnych výzvach, ktorým tento typ neurónových sietí čelí, a o niektorých stratégiách, ako ich prekonať. + +## 🚀 Výzva + +Prejdite si [notebook o prenose štýlu](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) s použitím vlastných obrázkov. + +## Prehľad a samoštúdium + +Pre referenciu si prečítajte viac o GANoch v týchto zdrojoch: + +* Marco Pasini, [10 lekcií, ktoré som sa naučil pri tréningu GANov za jeden rok](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* architektúra GANov na zváženie +* [Vytváranie generatívneho umenia pomocou GANov na Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Zadanie + +Znovu si prejdite jeden z dvoch notebookov spojených s touto lekciou a pretrénujte GAN na vlastných obrázkoch. Čo dokážete vytvoriť? + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..f5be1c5c --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Detekcia objektov + +Modely klasifikácie obrázkov, s ktorými sme sa doteraz zaoberali, brali obrázok a produkovali kategóriálny výsledok, ako napríklad triedu 'číslo' v probléme MNIST. Avšak v mnohých prípadoch nechceme len vedieť, že obrázok zobrazuje objekty – chceme byť schopní určiť ich presnú polohu. Toto je presne cieľom **detekcie objektov**. + +## [Pre-quiz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Detekcia objektov](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sk.png) + +> Obrázok z [webovej stránky YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Naivný prístup k detekcii objektov + +Predpokladajme, že chceme nájsť mačku na obrázku. Veľmi naivný prístup k detekcii objektov by bol nasledovný: + +1. Rozdeliť obrázok na množstvo dlaždíc. +2. Spustiť klasifikáciu obrázkov na každej dlaždici. +3. Dlaždice, ktoré majú dostatočne vysokú aktiváciu, môžeme považovať za obsahujúce hľadaný objekt. + +![Naivná detekcia objektov](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sk.png) + +> *Obrázok z [cvičebného notebooku](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Tento prístup však nie je ideálny, pretože umožňuje algoritmu lokalizovať ohraničujúci rámec objektu veľmi nepresne. Pre presnejšiu lokalizáciu potrebujeme spustiť určitý typ **regresie**, aby sme predpovedali súradnice ohraničujúcich rámcov – a na to potrebujeme špecifické datasety. + +## Regresia pre detekciu objektov + +[Tento blogový príspevok](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ponúka skvelý úvod do detekcie tvarov. + +## Datasety pre detekciu objektov + +Pri tejto úlohe sa môžete stretnúť s nasledujúcimi datasetmi: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) – 20 tried +* [COCO](http://cocodataset.org/#home) – Common Objects in Context. 80 tried, ohraničujúce rámce a segmentačné masky + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sk.jpg) + +## Metriky detekcie objektov + +### Prienik cez zjednotenie (Intersection over Union) + +Zatiaľ čo pri klasifikácii obrázkov je jednoduché merať, ako dobre algoritmus funguje, pri detekcii objektov musíme merať správnosť triedy, ako aj presnosť lokalizácie predpokladaného ohraničujúceho rámca. Na tento účel používame tzv. **Prienik cez zjednotenie** (IoU), ktorý meria, ako dobre sa dva rámce (alebo dve ľubovoľné oblasti) prekrývajú. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sk.png) + +> *Obrázok 2 z [tohto výborného blogového príspevku o IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Myšlienka je jednoduchá – vydelíme plochu prieniku medzi dvoma útvarmi plochou ich zjednotenia. Pre dve identické oblasti by IoU bolo 1, zatiaľ čo pre úplne oddelené oblasti bude 0. Inak sa bude pohybovať od 0 do 1. Typicky berieme do úvahy iba tie ohraničujúce rámce, pre ktoré je IoU nad určitú hodnotu. + +### Priemerná presnosť (Average Precision) + +Predpokladajme, že chceme merať, ako dobre je rozpoznaná daná trieda objektov $C$. Na jej meranie používame metriku **Priemerná presnosť**, ktorá sa vypočíta nasledovne: + +1. Zvážime krivku presnosti a odvolania, ktorá ukazuje presnosť v závislosti od hodnoty prahu detekcie (od 0 do 1). +2. V závislosti od prahu získame viac alebo menej detekovaných objektov na obrázku a rôzne hodnoty presnosti a odvolania. +3. Krivka bude vyzerať takto: + + + +> *Obrázok z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Priemerná presnosť pre danú triedu $C$ je plocha pod touto krivkou. Presnejšie, os odvolania je typicky rozdelená na 10 častí a presnosť sa spriemeruje cez všetky tieto body: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP a IoU + +Zvážime iba tie detekcie, pre ktoré je IoU nad určitú hodnotu. Napríklad v datasete PASCAL VOC sa typicky predpokladá $\mbox{IoU Threshold} = 0.5$, zatiaľ čo v COCO sa AP meria pre rôzne hodnoty $\mbox{IoU Threshold}$. + + + +> *Obrázok z [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Priemerná priemerná presnosť – mAP + +Hlavná metrika pre detekciu objektov sa nazýva **Priemerná priemerná presnosť**, alebo **mAP**. Je to hodnota Priemernej presnosti, spriemerovaná cez všetky triedy objektov, a niekedy aj cez $\mbox{IoU Threshold}$. Podrobnejší proces výpočtu **mAP** je opísaný +[v tomto blogovom príspevku](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), a tiež [tu s ukážkami kódu](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Rôzne prístupy k detekcii objektov + +Existujú dve široké kategórie algoritmov detekcie objektov: + +* **Siete na návrh regiónov** (R-CNN, Fast R-CNN, Faster R-CNN). Hlavná myšlienka je generovať **Regióny záujmu** (ROI) a spustiť CNN nad nimi, hľadajúc maximálnu aktiváciu. Je to trochu podobné naivnému prístupu, s výnimkou toho, že ROI sú generované inteligentnejším spôsobom. Jednou z hlavných nevýhod takýchto metód je, že sú pomalé, pretože potrebujeme mnoho prechodov CNN klasifikátora cez obrázok. +* **Jednoprechodové** (YOLO, SSD, RetinaNet) metódy. V týchto architektúrach navrhujeme sieť tak, aby predpovedala triedy aj ROI v jednom prechode. + +### R-CNN: CNN založené na regiónoch + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) používa [Selektívne vyhľadávanie](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) na generovanie hierarchickej štruktúry ROI regiónov, ktoré sú potom prechádzané extraktormi funkcií CNN a SVM klasifikátormi na určenie triedy objektu, a lineárnou regresiou na určenie súradníc *ohraničujúceho rámca*. [Oficiálny článok](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sk.png) + +> *Obrázok od van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sk.png) + +> *Obrázky z [tohto blogu](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e)* + +### F-RCNN – Rýchle R-CNN + +Tento prístup je podobný R-CNN, ale regióny sú definované po aplikovaní konvolučných vrstiev. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sk.png) + +> Obrázok z [oficiálneho článku](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 + +Hlavná myšlienka tohto prístupu je použiť neurónovú sieť na predpovedanie ROI – tzv. *Sieť na návrh regiónov*. [Článok](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sk.png) + +> Obrázok z [oficiálneho článku](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Plne konvolučná sieť založená na regiónoch + +Tento algoritmus je ešte rýchlejší ako Faster R-CNN. Hlavná myšlienka je nasledovná: + +1. Extrahujeme funkcie pomocou ResNet-101. +2. Funkcie sú spracované **Mapou skóre citlivou na polohu**. Každý objekt z $C$ tried je rozdelený na $k\times k$ regióny, a trénujeme na predpovedanie častí objektov. +3. Pre každú časť z $k\times k$ regiónov všetky siete hlasujú za triedy objektov, a trieda objektu s maximálnym počtom hlasov je vybraná. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sk.png) + +> Obrázok z [oficiálneho článku](https://arxiv.org/abs/1605.06409) + +### YOLO – You Only Look Once + +YOLO je algoritmus na jednoprechodovú detekciu v reálnom čase. Hlavná myšlienka je nasledovná: + + * Obrázok je rozdelený na $S\times S$ regióny. + * Pre každý región **CNN** predpovedá $n$ možných objektov, súradnice *ohraničujúceho rámca* a *dôveru*=*pravdepodobnosť* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sk.png) + +> Obrázok z [oficiálneho článku](https://arxiv.org/abs/1506.02640) + +### Ďalšie algoritmy + +* RetinaNet: [oficiálny článok](https://arxiv.org/abs/1708.02002) + - [Implementácia v PyTorch](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Implementácia v Keras](https://github.com/fizyr/keras-retinanet) + - [Detekcia objektov pomocou RetinaNet](https://keras.io/examples/vision/retinanet/) v ukážkach Keras +* SSD (Single Shot Detector): [oficiálny článok](https://arxiv.org/abs/1512.02325) + +## ✍️ Cvičenia: Detekcia objektov + +Pokračujte vo svojom učení v nasledujúcom notebooku: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Záver + +V tejto lekcii ste si urobili rýchly prehľad o rôznych spôsoboch, ako je možné dosiahnuť detekciu objektov! + +## 🚀 Výzva + +Prečítajte si tieto články a notebooky o YOLO a vyskúšajte ich sami: + +* [Dobrý blogový príspevok](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) popisujúci YOLO + * [Oficiálna stránka](https://pjreddie.com/darknet/yolo/) + * Yolo: [Implementácia v Keras](https://github.com/experiencor/keras-yolo2), [krok-za-krokom notebook](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Implementácia v Keras](https://github.com/experiencor/keras-yolo2), [krok-za-krokom notebook](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) + +## [Post-quiz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) + +## Prehľad a samostatné štúdium + +* [Detekcia objektov](https://tjmachinelearning.com/lectures/1718/obj/) od Nikhila Sardanu +* [Dobrý porovnávací článok o algoritmoch detekcie objektov](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Prehľad algoritmov hlbokého učenia pre detekciu objektov](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Krok-za-krokom úvod do základných algoritmov detekcie objektov](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementácia Faster R-CNN v Pythone pre detekciu objektov](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Úloha: Detekcia objektov](lab/README.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..09297f1f --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Detekcia hláv pomocou datasetu Hollywood Heads + +Laboratórna úloha z [kurzu AI pre začiatočníkov](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Počítanie počtu ľudí na videozázname z bezpečnostnej kamery je dôležitá úloha, ktorá nám umožňuje odhadnúť počet návštevníkov v obchodoch, vyťažené hodiny v reštauráciách a podobne. Na vyriešenie tejto úlohy musíme byť schopní detegovať ľudské hlavy z rôznych uhlov. Na natrénovanie modelu na detekciu objektov, ktorý dokáže rozpoznať ľudské hlavy, môžeme použiť [dataset Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/). + +## Dataset + +[Dataset Hollywood Heads](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) obsahuje 369 846 ľudských hláv anotovaných v 224 740 filmových snímkach z hollywoodskych filmov. Je poskytnutý vo formáte [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), kde pre každý obrázok existuje aj XML súbor s popisom, ktorý vyzerá takto: + +```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 + + +``` + +V tomto datasete existuje iba jedna trieda objektov `head` (hlava) a pre každú hlavu sú uvedené súradnice ohraničujúceho rámčeka. XML súbory môžete spracovať pomocou knižníc v Pythone alebo použiť [túto knižnicu](https://pypi.org/project/pascal-voc/) na prácu priamo s formátom PASCAL VOC. + +## Tréning detekcie objektov + +Model na detekciu objektov môžete natrénovať jedným z nasledujúcich spôsobov: + +* Použitím [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) a jeho Python API na programatické trénovanie modelu v cloude. Custom Vision nedokáže použiť viac ako niekoľko stoviek obrázkov na trénovanie modelu, takže možno budete musieť dataset obmedziť. +* Použitím príkladu z [Keras tutoriálu](https://keras.io/examples/vision/retinanet/) na natrénovanie modelu RetinaNet. +* Použitím vstavaného modulu [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) v knižnici torchvision. + +## Zhrnutie + +Detekcia objektov je úloha, ktorá je často potrebná v priemysle. Aj keď existujú služby, ktoré umožňujú vykonávať detekciu objektov (napríklad [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)), je dôležité pochopiť, ako detekcia objektov funguje, a byť schopný natrénovať vlastné modely. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/sk/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..1d856d19 --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentácia + +Predtým sme sa naučili o detekcii objektov, ktorá nám umožňuje lokalizovať objekty na obrázku predpovedaním ich *ohraničujúcich boxov*. Pre niektoré úlohy však nestačia len ohraničujúce boxy, ale potrebujeme presnejšiu lokalizáciu objektov. Táto úloha sa nazýva **segmentácia**. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentáciu môžeme vnímať ako **klasifikáciu pixelov**, kde pre **každý** pixel obrázka musíme predpovedať jeho triedu (*pozadie* je jednou z tried). Existujú dva hlavné algoritmy segmentácie: + +* **Semantická segmentácia** určuje iba triedu pixelu a nerozlišuje medzi rôznymi objektmi tej istej triedy. +* **Inštančná segmentácia** rozdeľuje triedy na rôzne inštancie. + +Pri inštančnej segmentácii sú tieto ovce rôznymi objektmi, ale pri semantickej segmentácii sú všetky ovce reprezentované jednou triedou. + + + +> Obrázok z [tohto blogového príspevku](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Existujú rôzne neurónové architektúry pre segmentáciu, ale všetky majú rovnakú štruktúru. Istým spôsobom je to podobné autoenkóderu, o ktorom ste sa už učili, ale namiesto rekonštrukcie pôvodného obrázka je naším cieľom rekonštruovať **masku**. Segmentačná sieť má teda nasledujúce časti: + +* **Encoder** extrahuje vlastnosti z vstupného obrázka. +* **Decoder** transformuje tieto vlastnosti do **obrázka masky**, ktorý má rovnakú veľkosť a počet kanálov zodpovedajúci počtu tried. + + + +> Obrázok z [tejto publikácie](https://arxiv.org/pdf/2001.05566.pdf) + +Osobitne by sme mali spomenúť stratovú funkciu, ktorá sa používa pri segmentácii. Pri použití klasických autoenkóderov musíme merať podobnosť medzi dvoma obrázkami, na čo môžeme použiť strednú kvadratickú chybu (MSE). Pri segmentácii každý pixel v cieľovom obrázku masky predstavuje číslo triedy (one-hot-enkódované pozdĺž tretej dimenzie), takže musíme použiť stratové funkcie špecifické pre klasifikáciu - krížovú entropiu, spriemerovanú cez všetky pixely. Ak je maska binárna, používa sa **binárna krížová entropia** (BCE). + +> ✅ One-hot enkódovanie je spôsob, ako zakódovať triedu do vektora s dĺžkou rovnou počtu tried. Pozrite si [tento článok](https://datagy.io/sklearn-one-hot-encode/) o tejto technike. + +## Segmentácia v medicínskom zobrazovaní + +V tejto lekcii uvidíme segmentáciu v praxi tým, že natrénujeme sieť na rozpoznávanie ľudských névov (známych aj ako znamienka) na medicínskych obrázkoch. Budeme používať PH2 databázu dermoskopických obrázkov ako zdroj obrázkov. Táto databáza obsahuje 200 obrázkov troch tried: typický névus, atypický névus a melanóm. Všetky obrázky obsahujú aj zodpovedajúcu **masku**, ktorá ohraničuje névus. + +> ✅ Táto technika je obzvlášť vhodná pre tento typ medicínskeho zobrazovania, ale aké ďalšie reálne aplikácie si viete predstaviť? + +navi + +> Obrázok z PH2 databázy + +Natrénujeme model na segmentáciu akéhokoľvek névusu z jeho pozadia. + +## ✍️ Cvičenia: Semantická segmentácia + +Otvorte nižšie uvedené notebooky, aby ste sa dozvedeli viac o rôznych architektúrach semantickej segmentácie, precvičili si prácu s nimi a videli ich v akcii. + +* [Semantická segmentácia Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantická segmentácia TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Záver + +Segmentácia je veľmi silná technika pre klasifikáciu obrázkov, ktorá ide nad rámec ohraničujúcich boxov až po klasifikáciu na úrovni pixelov. Táto technika sa používa v medicínskom zobrazovaní a v mnohých ďalších aplikáciách. + +## 🚀 Výzva + +Segmentácia tela je len jednou z bežných úloh, ktoré môžeme vykonávať s obrázkami ľudí. Ďalšie dôležité úlohy zahŕňajú **detekciu kostry** a **detekciu póz**. Vyskúšajte knižnicu [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), aby ste videli, ako sa dá detekcia póz využiť. + +## Prehľad a samostatné štúdium + +Tento [článok na Wikipédii](https://wikipedia.org/wiki/Image_segmentation) ponúka dobrý prehľad o rôznych aplikáciách tejto techniky. Zistite viac o poddoménach inštančnej segmentácie a panoptickej segmentácie v tejto oblasti výskumu. + +## [Úloha](lab/README.md) + +V tomto laboratóriu si vyskúšajte **segmentáciu ľudského tela** pomocou [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/sk/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..384861bd --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentácia ľudského tela + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +Pri produkcii videa, napríklad v predpovediach počasia, často potrebujeme vystrihnúť obraz človeka z kamery a umiestniť ho na iné zábery. To sa zvyčajne robí pomocou techník **chroma key**, keď je človek natočený pred jednotným farebným pozadím, ktoré sa následne odstráni. V tejto úlohe budeme trénovať model neurónovej siete na vystrihnutie siluety človeka. + +## Dataset + +Použijeme [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) z Kaggle. Dataset si manuálne stiahnite z Kaggle. + +## Začiatočný notebook + +Začnite úlohu otvorením [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Záver + +Segmentácia tela je len jednou z bežných úloh, ktoré môžeme vykonávať s obrázkami ľudí. Medzi ďalšie dôležité úlohy patrí **detekcia kostry** a **detekcia póz**. Pozrite si knižnicu [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), aby ste zistili, ako sa dajú tieto úlohy implementovať. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/4-ComputerVision/README.md b/translations/sk/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..e986bf1f --- /dev/null +++ b/translations/sk/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Počítačové videnie + +![Zhrnutie obsahu o počítačovom videní v kresbe](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sk.png) + +V tejto sekcii sa naučíme: + +* [Úvod do počítačového videnia a OpenCV](06-IntroCV/README.md) +* [Konvolučné neurónové siete](07-ConvNets/README.md) +* [Predtrénované siete a transferové učenie](08-TransferLearning/README.md) +* [Autoenkodéry](09-Autoencoders/README.md) +* [Generatívne protivnícke siete](10-GANs/README.md) +* [Detekcia objektov](11-ObjectDetection/README.md) +* [Semantická segmentácia](12-Segmentation/README.md) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/13-TextRep/README.md b/translations/sk/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..ac596747 --- /dev/null +++ b/translations/sk/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Reprezentácia textu ako tenzorov + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Klasifikácia textu + +V prvej časti tejto sekcie sa zameriame na úlohu **klasifikácie textu**. Použijeme dataset [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), ktorý obsahuje spravodajské články, ako napríklad: + +* Kategória: Veda/Technológie +* Názov: Ky. spoločnosť získala grant na štúdium peptidov (AP) +* Text: AP - Spoločnosť založená chemickým výskumníkom na Univerzite v Louisville získala grant na vývoj... + +Naším cieľom bude klasifikovať spravodajský článok do jednej z kategórií na základe textu. + +## Reprezentácia textu + +Ak chceme riešiť úlohy spracovania prirodzeného jazyka (NLP) pomocou neurónových sietí, potrebujeme spôsob, ako reprezentovať text ako tenzory. Počítače už reprezentujú textové znaky ako čísla, ktoré mapujú na fonty na vašej obrazovke pomocou kódovaní, ako sú ASCII alebo UTF-8. + +Obrázok zobrazujúci diagram mapujúci znak na ASCII a binárnu reprezentáciu + +> [Zdroj obrázku](https://www.seobility.net/en/wiki/ASCII) + +Ako ľudia rozumieme, čo každý znak **reprezentuje**, a ako všetky znaky spolu tvoria slová vo vete. Počítače však samy o sebe takémuto významu nerozumejú, a neurónová sieť sa musí tento význam naučiť počas tréningu. + +Preto môžeme použiť rôzne prístupy na reprezentáciu textu: + +* **Reprezentácia na úrovni znakov**, kde reprezentujeme text tak, že každý znak považujeme za číslo. Ak máme *C* rôznych znakov v našom textovom korpuse, slovo *Hello* by bolo reprezentované ako tenzor veľkosti 5x*C*. Každé písmeno by zodpovedalo stĺpcu tenzora v one-hot kódovaní. +* **Reprezentácia na úrovni slov**, kde vytvoríme **slovník** všetkých slov v našom texte a potom slová reprezentujeme pomocou one-hot kódovania. Tento prístup je o niečo lepší, pretože jednotlivé písmená samy o sebe nemajú veľký význam, a tak použitím vyšších sémantických konceptov - slov - zjednodušujeme úlohu pre neurónovú sieť. Avšak vzhľadom na veľkosť slovníka musíme pracovať s vysoko dimenzionálnymi riedkymi tenzormi. + +Bez ohľadu na spôsob reprezentácie musíme najprv text previesť na sekvenciu **tokenov**, pričom jeden token môže byť znak, slovo alebo niekedy aj časť slova. Potom token prevedieme na číslo, zvyčajne pomocou **slovníka**, a toto číslo môžeme vložiť do neurónovej siete pomocou one-hot kódovania. + +## N-Gramy + +V prirodzenom jazyku je presný význam slov určený iba v kontexte. Napríklad významy *neurónová sieť* a *rybárska sieť* sú úplne odlišné. Jedným zo spôsobov, ako to zohľadniť, je vytvoriť model na základe dvojíc slov a považovať dvojice slov za samostatné tokeny slovníka. Týmto spôsobom bude veta *Rád chodím na ryby* reprezentovaná nasledujúcou sekvenciou tokenov: *Rád chodím*, *chodím na*, *na ryby*. Problémom tohto prístupu je, že veľkosť slovníka sa výrazne zväčšuje a kombinácie ako *na ryby* a *na nákupy* sú reprezentované rôznymi tokenmi, ktoré nezdieľajú žiadnu sémantickú podobnosť napriek rovnakému slovesu. + +V niektorých prípadoch môžeme zvážiť použitie tri-gramov – kombinácií troch slov. Tento prístup sa preto často nazýva **n-gramy**. Tiež má zmysel používať n-gramy s reprezentáciou na úrovni znakov, v takom prípade n-gramy približne zodpovedajú rôznym slabikám. + +## Bag-of-Words a TF/IDF + +Pri riešení úloh, ako je klasifikácia textu, potrebujeme byť schopní reprezentovať text jedným vektorom pevnej veľkosti, ktorý použijeme ako vstup do konečného hustého klasifikátora. Jedným z najjednoduchších spôsobov, ako to dosiahnuť, je kombinovať všetky individuálne reprezentácie slov, napr. ich sčítaním. Ak sčítame one-hot kódovania každého slova, skončíme s vektorom frekvencií, ktorý ukazuje, koľkokrát sa každé slovo v texte objavilo. Takáto reprezentácia textu sa nazýva **bag of words** (BoW). + + + +> Obrázok od autora + +BoW v podstate reprezentuje, ktoré slová sa v texte objavujú a v akých množstvách, čo môže byť dobrým indikátorom toho, o čom text je. Napríklad spravodajský článok o politike pravdepodobne obsahuje slová ako *prezident* a *krajina*, zatiaľ čo vedecká publikácia by mohla obsahovať slová ako *urýchľovač*, *objavený* atď. Frekvencie slov môžu teda v mnohých prípadoch byť dobrým indikátorom obsahu textu. + +Problémom BoW je, že určité bežné slová, ako *a*, *je* atď., sa objavujú vo väčšine textov a majú najvyššie frekvencie, čím zakrývajú slová, ktoré sú skutočne dôležité. Môžeme znížiť dôležitosť týchto slov tým, že zohľadníme frekvenciu, s akou sa slová vyskytujú v celej kolekcii dokumentov. Toto je hlavná myšlienka prístupu TF/IDF, ktorý je podrobnejšie vysvetlený v poznámkových blokoch pripojených k tejto lekcii. + +Žiadny z týchto prístupov však nedokáže plne zohľadniť **sémantiku** textu. Na to potrebujeme výkonnejšie modely neurónových sietí, o ktorých budeme diskutovať neskôr v tejto sekcii. + +## ✍️ Cvičenia: Reprezentácia textu + +Pokračujte vo svojom učení v nasledujúcich poznámkových blokoch: + +* [Reprezentácia textu s PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Reprezentácia textu s TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Záver + +Doteraz sme študovali techniky, ktoré môžu pridať váhu frekvencie rôznym slovám. Nedokážu však reprezentovať význam alebo poradie. Ako povedal slávny lingvista J. R. Firth v roku 1935: "Úplný význam slova je vždy kontextuálny a žiadna štúdia významu mimo kontextu nemôže byť braná vážne." Neskôr v kurze sa naučíme, ako zachytiť kontextové informácie z textu pomocou jazykového modelovania. + +## 🚀 Výzva + +Vyskúšajte ďalšie cvičenia s bag-of-words a rôznymi dátovými modelmi. Môžete sa inšpirovať touto [súťažou na Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Prehľad a samostatné štúdium + +Precvičte si svoje zručnosti s textovými embeddingmi a technikami bag-of-words na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste). + +## [Úloha: Poznámkové bloky](assignment.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/13-TextRep/assignment.md b/translations/sk/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..3c10855b --- /dev/null +++ b/translations/sk/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Zápisníky + +Pomocou zápisníkov priradených k tejto lekcii (buď verzie PyTorch alebo TensorFlow) ich spustite znova s vlastnou dátovou sadou, napríklad jednou z Kaggle, použitou s uvedením zdroja. Prepíšte zápisník tak, aby zdôraznil vaše vlastné zistenia. Vyskúšajte niektoré inovatívne dátové sady, ktoré môžu byť prekvapivé, ako napríklad [táto o pozorovaniach UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) od NUFORC. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/14-Embeddings/README.md b/translations/sk/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..41b2880a --- /dev/null +++ b/translations/sk/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Vstavané reprezentácie (Embeddings) + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Pri trénovaní klasifikátorov založených na BoW alebo TF/IDF sme pracovali s vysokodimenzionálnymi vektormi bag-of-words s dĺžkou `vocab_size` a explicitne sme prevádzali nízkodimenzionálne pozičné reprezentácie na riedke one-hot reprezentácie. Táto one-hot reprezentácia však nie je pamäťovo efektívna. Navyše, každé slovo je spracované nezávisle od ostatných, t. j. one-hot kódované vektory nevyjadrujú žiadnu sémantickú podobnosť medzi slovami. + +Myšlienka **vstavanej reprezentácie (embedding)** spočíva v tom, že slová sú reprezentované nízkodimenzionálnymi hustými vektormi, ktoré určitým spôsobom odrážajú sémantický význam slova. Neskôr si povieme, ako vytvoriť zmysluplné vstavané reprezentácie slov, ale zatiaľ ich môžeme chápať ako spôsob zníženia dimenzionality vektorov slov. + +Vstavaná vrstva teda prijíma slovo ako vstup a produkuje výstupný vektor so špecifikovanou veľkosťou `embedding_size`. V istom zmysle je to veľmi podobné vrstve `Linear`, ale namiesto prijímania one-hot kódovaného vektora dokáže prijať číslo slova ako vstup, čím sa vyhneme vytváraniu veľkých one-hot kódovaných vektorov. + +Použitím vstavanej vrstvy ako prvej vrstvy v našej klasifikačnej sieti môžeme prejsť z modelu bag-of-words na model **embedding bag**, kde najprv každé slovo v texte prevedieme na zodpovedajúcu vstavanú reprezentáciu a potom vypočítame nejakú agregačnú funkciu nad všetkými týmito reprezentáciami, ako napríklad `sum`, `average` alebo `max`. + +![Obrázok znázorňujúci klasifikátor s použitím vstavanej reprezentácie pre päť slov v sekvencii.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sk.png) + +> Obrázok od autora + +## ✍️ Cvičenia: Vstavané reprezentácie + +Pokračujte v učení v nasledujúcich notebookoch: +* [Vstavané reprezentácie s PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Vstavané reprezentácie s TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Sémantické vstavané reprezentácie: Word2Vec + +Hoci sa vstavaná vrstva naučila mapovať slová na vektorové reprezentácie, tieto reprezentácie nemusia nevyhnutne niesť veľa sémantického významu. Bolo by užitočné naučiť sa vektorovú reprezentáciu, kde podobné slová alebo synonymá zodpovedajú vektorom, ktoré sú si blízke podľa nejakej vektorovej vzdialenosti (napr. Euklidovskej vzdialenosti). + +Na to potrebujeme predtrénovať náš model vstavanej reprezentácie na veľkej zbierke textov špecifickým spôsobom. Jedným zo spôsobov trénovania sémantických vstavaných reprezentácií je metóda [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Táto metóda je založená na dvoch hlavných architektúrach, ktoré sa používajú na vytváranie distribuovaných reprezentácií slov: + + - **Continuous bag-of-words** (CBoW) — v tejto architektúre trénujeme model na predpovedanie slova na základe okolitých slov v kontexte. Pri n-grame $(W_{-2},W_{-1},W_0,W_1,W_2)$ je cieľom modelu predpovedať $W_0$ na základe $(W_{-2},W_{-1},W_1,W_2)$. + - **Continuous skip-gram** je opakom CBoW. Model používa okolitý kontextový rámec slov na predpovedanie aktuálneho slova. + +CBoW je rýchlejší, zatiaľ čo skip-gram je pomalší, ale lepšie reprezentuje zriedkavé slová. + +![Obrázok znázorňujúci algoritmy CBoW a Skip-Gram na prevod slov na vektory.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sk.png) + +> Obrázok z [tohto článku](https://arxiv.org/pdf/1301.3781.pdf) + +Predtrénované vstavané reprezentácie Word2Vec (ako aj iné podobné modely, napríklad GloVe) môžu byť použité namiesto vstavanej vrstvy v neurónových sieťach. Musíme sa však vysporiadať so slovníkmi, pretože slovník použitý na predtrénovanie Word2Vec/GloVe sa pravdepodobne líši od slovníka v našom textovom korpuse. Pozrite si vyššie uvedené notebooky, aby ste zistili, ako tento problém vyriešiť. + +## Kontextové vstavané reprezentácie + +Jedným z hlavných obmedzení tradičných predtrénovaných vstavaných reprezentácií, ako je Word2Vec, je problém rozlíšenia významu slova. Hoci predtrénované vstavané reprezentácie dokážu zachytiť určitý význam slov v kontexte, každý možný význam slova je zakódovaný do tej istej reprezentácie. To môže spôsobiť problémy v následných modeloch, pretože mnohé slová, ako napríklad slovo „hrať“, majú rôzne významy v závislosti od kontextu, v ktorom sa používajú. + +Napríklad slovo „hrať“ má v týchto dvoch vetách úplne odlišný význam: + +- Išiel som na **hru** do divadla. +- Ján chce **hrať** so svojimi priateľmi. + +Predtrénované vstavané reprezentácie vyššie reprezentujú oba tieto významy slova „hrať“ v tej istej reprezentácii. Na prekonanie tohto obmedzenia potrebujeme vytvoriť vstavané reprezentácie založené na **jazykovom modeli**, ktorý je trénovaný na veľkom korpuse textov a „vie“, ako sa slová môžu skladať v rôznych kontextoch. Diskusia o kontextových vstavaných reprezentáciách presahuje rámec tohto tutoriálu, ale vrátime sa k nim pri diskusii o jazykových modeloch neskôr v kurze. + +## Záver + +V tejto lekcii ste sa naučili, ako vytvárať a používať vstavané vrstvy v TensorFlow a PyTorch na lepšie vyjadrenie sémantického významu slov. + +## 🚀 Výzva + +Word2Vec bol použitý na niektoré zaujímavé aplikácie, vrátane generovania textov piesní a poézie. Pozrite si [tento článok](https://www.politetype.com/blog/word2vec-color-poems), ktorý popisuje, ako autor použil Word2Vec na generovanie poézie. Pozrite si aj [toto video od Dana Shiffmanna](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), kde nájdete iné vysvetlenie tejto techniky. Potom sa pokúste aplikovať tieto techniky na svoj vlastný textový korpus, možno získaný z Kaggle. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Prehľad a samostatné štúdium + +Prečítajte si tento článok o Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Úloha: Notebooky](assignment.md) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/14-Embeddings/assignment.md b/translations/sk/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..e7785b99 --- /dev/null +++ b/translations/sk/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Zápisníky + +Pomocou zápisníkov priradených k tejto lekcii (buď verzia pre PyTorch alebo TensorFlow) ich spustite znova s použitím vlastného datasetu, napríklad z Kaggle, pričom nezabudnite uviesť zdroj. Prepíšte zápisník tak, aby zdôrazňoval vaše vlastné zistenia. Vyskúšajte iný typ datasetu a zdokumentujte svoje zistenia, pričom môžete použiť text, ako sú [tieto texty piesní od Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/15-LanguageModeling/README.md b/translations/sk/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..b20599bc --- /dev/null +++ b/translations/sk/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Jazykové modelovanie + +Sémantické vektory, ako Word2Vec a GloVe, sú v skutočnosti prvým krokom k **jazykovému modelovaniu** – vytváraniu modelov, ktoré nejako *rozumejú* (alebo *reprezentujú*) podstatu jazyka. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Hlavnou myšlienkou jazykového modelovania je ich trénovanie na neoznačených dátach v nesupervidovanom režime. To je dôležité, pretože máme k dispozícii obrovské množstvo neoznačeného textu, zatiaľ čo množstvo označeného textu je vždy obmedzené úsilím, ktoré môžeme venovať jeho označovaniu. Najčastejšie môžeme vytvoriť jazykové modely, ktoré dokážu **predpovedať chýbajúce slová** v texte, pretože je jednoduché náhodne vynechať slovo v texte a použiť ho ako tréningový vzor. + +## Trénovanie vektorov + +V našich predchádzajúcich príkladoch sme používali predtrénované sémantické vektory, ale je zaujímavé vidieť, ako sa tieto vektory dajú trénovať. Existuje niekoľko možných prístupov, ktoré sa dajú použiť: + +* **Jazykové modelovanie pomocou N-Gramov**, kde predpovedáme token na základe N predchádzajúcich tokenov (N-gram). +* **Continuous Bag-of-Words** (CBoW), kde predpovedáme stredný token $W_0$ v sekvencii tokenov $W_{-N}$, ..., $W_N$. +* **Skip-gram**, kde predpovedáme množinu susedných tokenov {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} zo stredného tokenu $W_0$. + +![obrázok z článku o konverzii slov na vektory](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sk.png) + +> Obrázok z [tohto článku](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Príkladové notebooky: Trénovanie CBoW modelu + +Pokračujte vo svojom učení pomocou nasledujúcich notebookov: + +* [Trénovanie CBoW Word2Vec s TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Trénovanie CBoW Word2Vec s PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Záver + +V predchádzajúcej lekcii sme videli, že vektory slov fungujú ako kúzlo! Teraz vieme, že trénovanie vektorov slov nie je veľmi zložitá úloha, a mali by sme byť schopní trénovať vlastné vektory slov pre text špecifický pre danú oblasť, ak to bude potrebné. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Prehľad a samostatné štúdium + +* [Oficiálny PyTorch tutoriál o jazykovom modelovaní](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Oficiálny TensorFlow tutoriál o trénovaní Word2Vec modelu](https://www.TensorFlow.org/tutorials/text/word2vec). +* Použitie frameworku **gensim** na trénovanie najbežnejšie používaných vektorov v niekoľkých riadkoch kódu je popísané [v tejto dokumentácii](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Úloha: Trénovanie Skip-Gram modelu](lab/README.md) + +V laboratóriu vás vyzývame, aby ste upravili kód z tejto lekcie na trénovanie Skip-Gram modelu namiesto CBoW. [Prečítajte si podrobnosti](lab/README.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/sk/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..52e3e78b --- /dev/null +++ b/translations/sk/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Tréning Skip-Gram modelu + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +V tejto úlohe vás vyzývame, aby ste natrénovali Word2Vec model pomocou techniky Skip-Gram. Natrénujte sieť s embeddingom na predpovedanie susedných slov v $N$-tokenovom širokom Skip-Gram okne. Môžete použiť [kód z tejto lekcie](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) a mierne ho upraviť. + +## Dataset + +Môžete použiť akúkoľvek knihu. Na stránke [Project Gutenberg](https://www.gutenberg.org/) nájdete množstvo voľne dostupných textov, napríklad priamy odkaz na [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) od Lewisa Carrolla. Alebo môžete použiť Shakespearove hry, ktoré môžete získať pomocou nasledujúceho kódu: + +```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') +``` + +## Preskúmajte! + +Ak máte čas a chcete sa do témy ponoriť hlbšie, skúste preskúmať niekoľko vecí: + +* Ako ovplyvňuje veľkosť embeddingu výsledky? +* Ako ovplyvňujú rôzne štýly textu výsledok? +* Vezmite niekoľko veľmi odlišných typov slov a ich synonymá, získajte ich vektorové reprezentácie, aplikujte PCA na zníženie dimenzií na 2 a zobrazte ich v 2D priestore. Vidíte nejaké vzory? + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/16-RNN/README.md b/translations/sk/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..9a07e3f4 --- /dev/null +++ b/translations/sk/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rekurentné neurónové siete + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +V predchádzajúcich sekciách sme používali bohaté sémantické reprezentácie textu a jednoduchý lineárny klasifikátor nad embeddingmi. Táto architektúra zachytáva agregovaný význam slov vo vete, ale neberie do úvahy **poradie** slov, pretože operácia agregácie nad embeddingmi túto informáciu z pôvodného textu odstránila. Keďže tieto modely nedokážu modelovať poradie slov, nemôžu riešiť zložitejšie alebo nejednoznačné úlohy, ako je generovanie textu alebo odpovedanie na otázky. + +Na zachytenie významu textovej sekvencie potrebujeme použiť inú architektúru neurónovej siete, ktorá sa nazýva **rekurentná neurónová sieť** alebo RNN. V RNN prechádzame vetou cez sieť jeden symbol po druhom a sieť produkuje určitý **stav**, ktorý následne odovzdávame s ďalším symbolom späť do siete. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sk.png) + +> Obrázok od autora + +Pri danej vstupnej sekvencii tokenov X0,...,Xn RNN vytvára sekvenciu blokov neurónovej siete a trénuje túto sekvenciu end-to-end pomocou backpropagácie. Každý blok siete prijíma dvojicu (Xi,Si) ako vstup a produkuje Si+1 ako výsledok. Konečný stav Sn (alebo výstup Yn) prechádza do lineárneho klasifikátora, aby sa vytvoril výsledok. Všetky bloky siete zdieľajú rovnaké váhy a sú trénované end-to-end pomocou jedného prechodu backpropagácie. + +Keďže stavové vektory S0,...,Sn prechádzajú sieťou, dokáže sa naučiť sekvenčné závislosti medzi slovami. Napríklad, keď sa niekde v sekvencii objaví slovo *not*, sieť sa môže naučiť negovať určité prvky v stavovom vektore, čo vedie k negácii. + +> ✅ Keďže váhy všetkých RNN blokov na obrázku vyššie sú zdieľané, ten istý obrázok môže byť reprezentovaný ako jeden blok (vpravo) s rekurentnou spätnou väzbou, ktorá odovzdáva výstupný stav siete späť na vstup. + +## Anatómia RNN bunky + +Pozrime sa, ako je organizovaná jednoduchá RNN bunka. Prijíma predchádzajúci stav Si-1 a aktuálny symbol Xi ako vstupy a musí produkovať výstupný stav Si (a niekedy nás zaujíma aj iný výstup Yi, ako v prípade generatívnych sietí). + +Jednoduchá RNN bunka má vo vnútri dve matice váh: jedna transformuje vstupný symbol (nazvime ju W) a druhá transformuje vstupný stav (H). V tomto prípade sa výstup siete vypočíta ako σ(W×Xi+H×Si-1+b), kde σ je aktivačná funkcia a b je dodatočný bias. + +Anatómia RNN bunky + +> Obrázok od autora + +V mnohých prípadoch prechádzajú vstupné tokeny pred vstupom do RNN cez embedding vrstvu, aby sa znížila dimenzionalita. V tomto prípade, ak je dimenzia vstupných vektorov *emb_size* a stavového vektora *hid_size*, veľkosť W je *emb_size*×*hid_size* a veľkosť H je *hid_size*×*hid_size*. + +## Long Short Term Memory (LSTM) + +Jedným z hlavných problémov klasických RNN je tzv. problém **miznúcich gradientov**. Keďže RNN sú trénované end-to-end v jednom prechode backpropagácie, majú problém s propagáciou chyby do prvých vrstiev siete, a preto sa sieť nedokáže naučiť vzťahy medzi vzdialenými tokenmi. Jedným zo spôsobov, ako sa tomuto problému vyhnúť, je zavedenie **explicitného riadenia stavu** pomocou tzv. **brán**. Existujú dve známe architektúry tohto typu: **Long Short Term Memory** (LSTM) a **Gated Relay Unit** (GRU). + +![Obrázok zobrazujúci príklad bunky LSTM](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Zdroj obrázku TBD + +LSTM sieť je organizovaná podobne ako RNN, ale existujú dva stavy, ktoré sa prenášajú z vrstvy do vrstvy: aktuálny stav C a skrytý vektor H. V každej jednotke je skrytý vektor Hi spojený so vstupom Xi a tieto kontrolujú, čo sa deje so stavom C prostredníctvom **brán**. Každá brána je neurónová sieť so sigmoidnou aktiváciou (výstup v rozsahu [0,1]), ktorú si môžeme predstaviť ako bitovú masku, keď sa vynásobí stavovým vektorom. Existujú nasledujúce brány (zľava doprava na obrázku vyššie): + +* **Forget gate** (brána zabúdania) prijíma skrytý vektor a určuje, ktoré komponenty vektora C je potrebné zabudnúť a ktoré preniesť ďalej. +* **Input gate** (vstupná brána) prijíma informácie zo vstupného a skrytého vektora a vkladá ich do stavu. +* **Output gate** (výstupná brána) transformuje stav cez lineárnu vrstvu s *tanh* aktiváciou, potom vyberá niektoré z jeho komponentov pomocou skrytého vektora Hi, aby vytvorila nový stav Ci+1. + +Komponenty stavu C si môžeme predstaviť ako určité príznaky, ktoré môžu byť zapnuté alebo vypnuté. Napríklad, keď v sekvencii narazíme na meno *Alice*, môžeme predpokladať, že ide o ženskú postavu, a zvýšiť príznak v stave, že vo vete máme ženské podstatné meno. Keď ďalej narazíme na frázu *and Tom*, zvýšime príznak, že máme množné číslo. Takto môžeme manipuláciou so stavom údajne sledovať gramatické vlastnosti častí vety. + +> ✅ Skvelým zdrojom na pochopenie vnútorného fungovania LSTM je tento výborný článok [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) od Christophera Olaha. + +## Bidirekčné a viacvrstvové RNN + +Diskutovali sme o rekurentných sieťach, ktoré fungujú jedným smerom, od začiatku sekvencie po jej koniec. Vyzerá to prirodzene, pretože to pripomína spôsob, akým čítame a počúvame reč. Avšak, keďže v mnohých praktických prípadoch máme náhodný prístup k vstupnej sekvencii, môže mať zmysel spustiť rekurentné výpočty v oboch smeroch. Takéto siete sa nazývajú **bidirekčné** RNN. Pri práci s bidirekčnou sieťou by sme potrebovali dva skryté stavové vektory, jeden pre každý smer. + +Rekurentná sieť, či už jednosmerná alebo bidirekčná, zachytáva určité vzory v sekvencii a môže ich uložiť do stavového vektora alebo odovzdať do výstupu. Rovnako ako pri konvolučných sieťach môžeme na prvú vrstvu postaviť ďalšiu rekurentnú vrstvu, aby sme zachytili vzory vyššej úrovne a vytvorili ich z nízkoúrovňových vzorov extrahovaných prvou vrstvou. To nás privádza k pojmu **viacvrstvová RNN**, ktorá pozostáva z dvoch alebo viacerých rekurentných sietí, kde výstup predchádzajúcej vrstvy prechádza do ďalšej vrstvy ako vstup. + +![Obrázok zobrazujúci viacvrstvovú LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sk.jpg) + +*Obrázok z [tohto skvelého článku](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) od Fernanda Lópeza* + +## ✍️ Cvičenia: Embeddingy + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +* [RNNs s PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs s TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Záver + +V tejto jednotke sme videli, že RNN môžu byť použité na klasifikáciu sekvencií, ale v skutočnosti dokážu zvládnuť oveľa viac úloh, ako je generovanie textu, strojový preklad a ďalšie. Týmto úlohám sa budeme venovať v ďalšej jednotke. + +## 🚀 Výzva + +Prečítajte si niektoré materiály o LSTM a zvážte ich aplikácie: + +- [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) + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Prehľad a samostatné štúdium + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) od Christophera Olaha. + +## [Úloha: Notebooky](assignment.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/16-RNN/assignment.md b/translations/sk/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..f9310d77 --- /dev/null +++ b/translations/sk/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Zápisníky + +Pomocou zápisníkov priradených k tejto lekcii (buď verzia PyTorch alebo TensorFlow) ich spustite znova s vlastnou dátovou sadou, napríklad z Kaggle, pričom nezabudnite uviesť zdroj. Prepíšte zápisník tak, aby zdôrazňoval vaše vlastné zistenia. Vyskúšajte iný typ dátovej sady a zdokumentujte svoje zistenia, napríklad pomocou textu ako [táto dátová sada z Kaggle súťaže o tweety o počasí](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/sk/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..60f04889 --- /dev/null +++ b/translations/sk/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generatívne siete + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rekurentné neurónové siete (RNN) a ich varianty s bránkovými bunkami, ako sú Long Short Term Memory Cells (LSTM) a Gated Recurrent Units (GRU), poskytujú mechanizmus na modelovanie jazyka, pretože dokážu naučiť sa poradie slov a predpovedať nasledujúce slovo v sekvencii. To nám umožňuje používať RNN na **generatívne úlohy**, ako je generovanie bežného textu, strojový preklad a dokonca aj popisovanie obrázkov. + +> ✅ Zamyslite sa nad všetkými situáciami, kedy ste využili generatívne úlohy, ako je napríklad dopĺňanie textu počas písania. Urobte si prieskum o svojich obľúbených aplikáciách a zistite, či využívajú RNN. + +V architektúre RNN, ktorú sme preberali v predchádzajúcej jednotke, každá jednotka RNN produkovala ako výstup nasledujúci skrytý stav. Môžeme však pridať ďalší výstup ku každej rekurentnej jednotke, čo by nám umožnilo generovať **sekvenciu** (rovnakej dĺžky ako pôvodná sekvencia). Navyše môžeme použiť RNN jednotky, ktoré neprijímajú vstup na každom kroku, ale len nejaký počiatočný stavový vektor, a potom generujú sekvenciu výstupov. + +To umožňuje rôzne neurónové architektúry, ktoré sú znázornené na obrázku nižšie: + +![Obrázok zobrazujúci bežné vzory rekurentných neurónových sietí.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sk.jpg) + +> Obrázok z blogového príspevku [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) od [Andreja Karpatyho](http://karpathy.github.io/) + +* **One-to-one** je tradičná neurónová sieť s jedným vstupom a jedným výstupom +* **One-to-many** je generatívna architektúra, ktorá prijíma jednu vstupnú hodnotu a generuje sekvenciu výstupných hodnôt. Napríklad, ak chceme trénovať sieť na **popisovanie obrázkov**, ktorá by vytvorila textový popis obrázka, môžeme použiť obrázok ako vstup, prehnať ho cez CNN na získanie skrytého stavu a potom nechať rekurentný reťazec generovať popis slovo po slove +* **Many-to-one** zodpovedá RNN architektúram, ktoré sme popisovali v predchádzajúcej jednotke, ako je klasifikácia textu +* **Many-to-many**, alebo **sekvencia na sekvenciu**, zodpovedá úlohám, ako je **strojový preklad**, kde prvá RNN zhromažďuje všetky informácie zo vstupnej sekvencie do skrytého stavu a ďalší reťazec RNN rozvinie tento stav do výstupnej sekvencie. + +V tejto jednotke sa zameriame na jednoduché generatívne modely, ktoré nám pomáhajú generovať text. Pre jednoduchosť použijeme tokenizáciu na úrovni znakov. + +Budeme trénovať túto RNN na generovanie textu krok za krokom. Na každom kroku vezmeme sekvenciu znakov dĺžky `nchars` a požiadame sieť, aby pre každý vstupný znak vygenerovala nasledujúci výstupný znak: + +![Obrázok zobrazujúci príklad generovania slova 'HELLO' pomocou RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sk.png) + +Pri generovaní textu (počas inferencie) začíname s nejakým **podnetom**, ktorý prechádza cez RNN bunky na generovanie jeho medzistavu, a potom z tohto stavu začína generovanie. Generujeme jeden znak naraz a stav spolu s vygenerovaným znakom odovzdávame ďalšej RNN bunke na generovanie ďalšieho znaku, až kým nevygenerujeme dostatok znakov. + + + +> Obrázok od autora + +## ✍️ Cvičenia: Generatívne siete + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +* [Generatívne siete s PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generatívne siete s TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Mäkké generovanie textu a teplota + +Výstup každej RNN bunky je pravdepodobnostné rozdelenie znakov. Ak vždy vyberieme znak s najvyššou pravdepodobnosťou ako nasledujúci znak v generovanom texte, text sa často môže "zacykliť" medzi rovnakými sekvenciami znakov znova a znova, ako v tomto príklade: + +``` +today of the second the company and a second the company ... +``` + +Ak sa však pozrieme na pravdepodobnostné rozdelenie pre nasledujúci znak, môže sa stať, že rozdiel medzi niekoľkými najvyššími pravdepodobnosťami nie je veľký, napr. jeden znak môže mať pravdepodobnosť 0,2, iný 0,19 atď. Napríklad, pri hľadaní nasledujúceho znaku v sekvencii '*play*' môže byť nasledujúci znak rovnako dobre medzera alebo **e** (ako v slove *player*). + +To nás vedie k záveru, že nie je vždy "spravodlivé" vybrať znak s najvyššou pravdepodobnosťou, pretože výber druhého najvyššieho môže stále viesť k zmysluplnému textu. Je rozumnejšie **vzorkovať** znaky z pravdepodobnostného rozdelenia, ktoré poskytuje výstup siete. Môžeme tiež použiť parameter **teplota**, ktorý vyhladí pravdepodobnostné rozdelenie, ak chceme pridať viac náhodnosti, alebo ho urobiť strmším, ak chceme viac dodržiavať znaky s najvyššou pravdepodobnosťou. + +Preskúmajte, ako je toto mäkké generovanie textu implementované v notebookoch uvedených vyššie. + +## Záver + +Aj keď generovanie textu môže byť užitočné samo o sebe, hlavné výhody prichádzajú zo schopnosti generovať text pomocou RNN z nejakého počiatočného vektorového znaku. Napríklad generovanie textu sa používa ako súčasť strojového prekladu (sekvencia na sekvenciu, v tomto prípade sa stavový vektor z *enkódera* používa na generovanie alebo *dekódovanie* preloženej správy) alebo na generovanie textového popisu obrázka (v tomto prípade by vektor znakov pochádzal z CNN extraktora). + +## 🚀 Výzva + +Absolvujte niektoré lekcie na Microsoft Learn na túto tému: + +* Generovanie textu s [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) + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Prehľad a samoštúdium + +Tu sú niektoré články na rozšírenie vašich vedomostí: + +* Rôzne prístupy k generovaniu textu s Markovovým reťazcom, LSTM a GPT-2: [blogový príspevok](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Ukážka generovania textu v [dokumentácii Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Úloha](lab/README.md) + +Videli sme, ako generovať text znak po znaku. V laboratóriu preskúmate generovanie textu na úrovni slov. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/sk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..71025b38 --- /dev/null +++ b/translations/sk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generovanie textu na úrovni slov pomocou RNN + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +V tejto úlohe si vezmite akúkoľvek knihu a použite ju ako dataset na natrénovanie generátora textu na úrovni slov. + +## Dataset + +Môžete použiť akúkoľvek knihu. Množstvo bezplatných textov nájdete na stránke [Project Gutenberg](https://www.gutenberg.org/), napríklad tu je priamy odkaz na [Alicine dobrodružstvá v krajine zázrakov](https://www.gutenberg.org/files/11/11-0.txt)) od Lewisa Carrolla. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/18-Transformers/README.md b/translations/sk/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..06c09ed0 --- /dev/null +++ b/translations/sk/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mechanizmy pozornosti a transformery + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Jedným z najdôležitejších problémov v oblasti NLP je **strojový preklad**, základná úloha, ktorá je základom nástrojov ako Google Translate. V tejto sekcii sa zameriame na strojový preklad, alebo všeobecnejšie na akúkoľvek úlohu *sekvencia na sekvenciu* (ktorá sa tiež nazýva **transformácia viet**). + +Pri RNN je sekvencia na sekvenciu implementovaná dvoma rekurentnými sieťami, kde jedna sieť, **enkóder**, zhrnie vstupnú sekvenciu do skrytého stavu, zatiaľ čo druhá sieť, **dekóder**, rozvinie tento skrytý stav do preloženého výsledku. Tento prístup má však niekoľko problémov: + +* Konečný stav enkóderovej siete má problém zapamätať si začiatok vety, čo spôsobuje nízku kvalitu modelu pri dlhých vetách. +* Všetky slová v sekvencii majú rovnaký vplyv na výsledok. V skutočnosti však konkrétne slová vo vstupnej sekvencii často majú väčší vplyv na výstupy sekvencie než iné. + +**Mechanizmy pozornosti** poskytujú spôsob váženia kontextového vplyvu každého vstupného vektora na každú predikciu výstupu RNN. Implementuje sa to vytvorením skratiek medzi medzistavmi vstupného RNN a výstupného RNN. Týmto spôsobom, pri generovaní výstupného symbolu yt, zohľadníme všetky skryté stavy vstupu hi, s rôznymi váhovými koeficientmi αt,i. + +![Obrázok zobrazujúci model enkóder/dekóder s aditívnou vrstvou pozornosti](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sk.png) + +> Model enkóder-dekóder s mechanizmom aditívnej pozornosti podľa [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citované z [tohto blogového príspevku](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matica pozornosti {αi,j} by reprezentovala mieru, do akej určité vstupné slová zohrávajú úlohu pri generovaní daného slova vo výstupnej sekvencii. Nižšie je príklad takejto matice: + +![Obrázok zobrazujúci vzorové zarovnanie nájdené RNNsearch-50, prevzaté z Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sk.png) + +> Obrázok z [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Obr.3) + +Mechanizmy pozornosti sú zodpovedné za veľkú časť súčasného alebo takmer súčasného stavu umenia v NLP. Pridanie pozornosti však výrazne zvyšuje počet parametrov modelu, čo viedlo k problémom so škálovaním RNN. Kľúčovým obmedzením škálovania RNN je, že rekurentná povaha modelov sťažuje dávkovanie a paralelizáciu tréningu. V RNN musí byť každý prvok sekvencie spracovaný v sekvenčnom poradí, čo znamená, že ho nemožno ľahko paralelizovať. + +![Enkóder Dekóder s Pozornosťou](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Obrázok z [Google Blogu](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Prijatie mechanizmov pozornosti v kombinácii s týmto obmedzením viedlo k vytvoreniu dnes známych a používaných modelov transformérov, ako sú BERT a Open-GPT3. + +## Modely transformérov + +Jednou z hlavných myšlienok transformérov je vyhnúť sa sekvenčnej povahe RNN a vytvoriť model, ktorý je paralelizovateľný počas tréningu. To sa dosahuje implementáciou dvoch myšlienok: + +* pozičné kódovanie +* použitie mechanizmu vlastnej pozornosti na zachytenie vzorov namiesto RNN (alebo CNN) (preto sa článok, ktorý predstavuje transforméry, nazýva *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Pozičné kódovanie/vkladanie + +Myšlienka pozičného kódovania je nasledovná. +1. Pri použití RNN je relatívna pozícia tokenov reprezentovaná počtom krokov, a teda ju netreba explicitne reprezentovať. +2. Avšak, keď prejdeme na pozornosť, potrebujeme vedieť relatívne pozície tokenov v rámci sekvencie. +3. Na získanie pozičného kódovania rozšírime našu sekvenciu tokenov o sekvenciu pozícií tokenov v sekvencii (t.j. sekvenciu čísel 0,1, ...). +4. Potom zmiešame pozíciu tokenu s vektorom vkladania tokenu. Na transformáciu pozície (celého čísla) na vektor môžeme použiť rôzne prístupy: + +* Trénovateľné vkladanie, podobné vkladaniu tokenov. Toto je prístup, ktorý tu zvažujeme. Aplikujeme vrstvy vkladania na tokeny aj ich pozície, čím získame vektory vkladania rovnakých rozmerov, ktoré potom sčítame. +* Fixná funkcia pozičného kódovania, ako je navrhnuté v pôvodnom článku. + + + +> Obrázok od autora + +Výsledok, ktorý získame s pozičným vkladaním, vkladá pôvodný token aj jeho pozíciu v rámci sekvencie. + +### Multi-Head Self-Attention + +Ďalej potrebujeme zachytiť niektoré vzory v rámci našej sekvencie. Na tento účel transforméry používajú mechanizmus **vlastnej pozornosti**, ktorý je v podstate pozornosť aplikovaná na tú istú sekvenciu ako vstup a výstup. Aplikovanie vlastnej pozornosti nám umožňuje zohľadniť **kontext** v rámci vety a vidieť, ktoré slová sú navzájom prepojené. Napríklad nám umožňuje vidieť, na ktoré slová sa odkazuje pomocou koreferencií, ako *to*, a tiež zohľadniť kontext: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sk.png) + +> Obrázok z [Google Blogu](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +V transforméroch používame **Multi-Head Attention**, aby sme dali sieti schopnosť zachytiť niekoľko rôznych typov závislostí, napr. dlhodobé vs. krátkodobé vzťahy medzi slovami, koreferencie vs. niečo iné, atď. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) obsahuje viac detailov o implementácii vrstiev transformérov. + +### Pozornosť enkóder-dekóder + +V transforméroch sa pozornosť používa na dvoch miestach: + +* Na zachytenie vzorov v rámci vstupného textu pomocou vlastnej pozornosti. +* Na vykonanie prekladu sekvencie - ide o vrstvu pozornosti medzi enkóderom a dekóderom. + +Pozornosť enkóder-dekóder je veľmi podobná mechanizmu pozornosti používanému v RNN, ako je opísané na začiatku tejto sekcie. Tento animovaný diagram vysvetľuje úlohu pozornosti enkóder-dekóder. + +![Animovaný GIF zobrazujúci, ako sa hodnotenia vykonávajú v modeloch transformérov.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Keďže každá vstupná pozícia je mapovaná nezávisle na každú výstupnú pozíciu, transforméry môžu lepšie paralelizovať než RNN, čo umožňuje oveľa väčšie a expresívnejšie jazykové modely. Každá hlava pozornosti môže byť použitá na učenie rôznych vzťahov medzi slovami, čo zlepšuje následné úlohy spracovania prirodzeného jazyka. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) je veľmi veľká viacvrstvová sieť transformérov s 12 vrstvami pre *BERT-base* a 24 pre *BERT-large*. Model je najprv predtrénovaný na veľkom korpuse textových dát (WikiPedia + knihy) pomocou nesupervidovaného tréningu (predpovedanie maskovaných slov vo vete). Počas predtrénovania model absorbuje významné úrovne porozumenia jazyka, ktoré môžu byť následne využité s inými datasetmi pomocou jemného doladenia. Tento proces sa nazýva **transfer learning**. + +![obrázok z http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sk.png) + +> Obrázok [zdroj](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Cvičenia: Transforméry + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +* [Transforméry v PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transforméry v TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Záver + +V tejto lekcii ste sa naučili o transforméroch a mechanizmoch pozornosti, všetko základné nástroje v NLP. Existuje mnoho variácií architektúr transformérov vrátane BERT, DistilBERT, BigBird, OpenGPT3 a ďalších, ktoré je možné jemne doladiť. Balík [HuggingFace](https://github.com/huggingface/) poskytuje úložisko na tréning mnohých z týchto architektúr s použitím PyTorch aj TensorFlow. + +## 🚀 Výzva + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Prehľad a samostatné štúdium + +* [Blogový príspevok](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), vysvetľujúci klasický článok [Attention is all you need](https://arxiv.org/abs/1706.03762) o transforméroch. +* [Séria blogových príspevkov](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) o transforméroch, vysvetľujúca architektúru podrobne. + +## [Úloha](assignment.md) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/18-Transformers/assignment.md b/translations/sk/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..8a287273 --- /dev/null +++ b/translations/sk/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Zadanie: Transformery + +Experimentujte s Transformerami na HuggingFace! Vyskúšajte niektoré zo skriptov, ktoré poskytujú na prácu s rôznymi modelmi dostupnými na ich stránke: https://huggingface.co/docs/transformers/run_scripts. Vyskúšajte jeden z ich datasetov, potom importujte jeden vlastný z tohto kurzu alebo z Kaggle a zistite, či dokážete generovať zaujímavé texty. Vytvorte notebook so svojimi zisteniami. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/19-NER/README.md b/translations/sk/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..457d533b --- /dev/null +++ b/translations/sk/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Rozpoznávanie pomenovaných entít + +Doteraz sme sa väčšinou sústredili na jednu NLP úlohu - klasifikáciu. Existujú však aj iné NLP úlohy, ktoré je možné riešiť pomocou neurónových sietí. Jednou z týchto úloh je **[Rozpoznávanie pomenovaných entít](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ktoré sa zaoberá identifikáciou konkrétnych entít v texte, ako sú miesta, mená osôb, časové intervaly, chemické vzorce a podobne. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Príklad použitia NER + +Predstavte si, že chcete vyvinúť chatbot na spracovanie prirodzeného jazyka, podobný Amazon Alexe alebo Google Asistentovi. Inteligentné chatboty fungujú tak, že *rozumejú*, čo používateľ chce, prostredníctvom klasifikácie textu v zadanej vete. Výsledkom tejto klasifikácie je tzv. **intencia**, ktorá určuje, čo by mal chatbot vykonať. + +Bot NER + +> Obrázok od autora + +Používateľ však môže poskytnúť niektoré parametre ako súčasť frázy. Napríklad pri otázke na počasie môže špecifikovať miesto alebo dátum. Chatbot by mal byť schopný rozpoznať tieto entity a vyplniť príslušné parametre pred vykonaním akcie. A práve tu prichádza na rad NER. + +> ✅ Ďalším príkladom by mohlo byť [analyzovanie vedeckých lekárskych článkov](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Jednou z hlavných vecí, ktoré potrebujeme hľadať, sú konkrétne lekárske termíny, ako sú choroby a liečivá. Zatiaľ čo malý počet chorôb by sa pravdepodobne dal extrahovať pomocou vyhľadávania podreťazcov, zložitejšie entity, ako sú chemické zlúčeniny a názvy liekov, vyžadujú komplexnejší prístup. + +## NER ako klasifikácia tokenov + +NER modely sú v podstate **modely na klasifikáciu tokenov**, pretože pre každý vstupný token musíme rozhodnúť, či patrí k nejakej entite, a ak áno, do akej triedy entity. + +Zvážte nasledujúci názov článku: + +**Regurgitácia trikuspidálnej chlopne** a **toxickosť lítia karbonátu** u novorodenca. + +Entity v tomto texte sú: + +* Regurgitácia trikuspidálnej chlopne je choroba (`DIS`) +* Lítium karbonát je chemická látka (`CHEM`) +* Toxicita je tiež choroba (`DIS`) + +Všimnite si, že jedna entita môže pozostávať z viacerých tokenov. A ako v tomto prípade, musíme rozlíšiť medzi dvoma po sebe idúcimi entitami. Preto je bežné používať dve triedy pre každú entitu - jednu, ktorá špecifikuje prvý token entity (často sa používa predpona `B-` pre **začiatok**), a druhú pre pokračovanie entity (`I-`, pre **vnútorný token**). Triedu `O` používame na označenie všetkých **ostatných** tokenov. Takéto označovanie tokenov sa nazýva [BIO označovanie](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (alebo IOB). Po označení bude náš názov vyzerať takto: + +Token | Značka +------|------- +Trikuspidálnej | B-DIS +chlopne | I-DIS +regurgitácia | I-DIS +a | O +lítium | B-CHEM +karbonát | I-CHEM +toxickosť | B-DIS +u | O +novorodenca | O +. | O + +Keďže potrebujeme vytvoriť jednoznačnú korešpondenciu medzi tokenmi a triedami, môžeme trénovať pravostranný **many-to-many** model neurónovej siete podľa tohto obrázku: + +![Obrázok zobrazujúci bežné vzory rekurentných neurónových sietí.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sk.jpg) + +> *Obrázok z [tohto blogového príspevku](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) od [Andreja Karpathyho](http://karpathy.github.io/). Modely na klasifikáciu tokenov pre NER zodpovedajú pravostrannému vzoru siete na tomto obrázku.* + +## Trénovanie NER modelov + +Keďže NER model je v podstate model na klasifikáciu tokenov, môžeme na túto úlohu použiť RNN, s ktorými sme sa už oboznámili. V tomto prípade každý blok rekurentnej siete vráti ID tokenu. Nasledujúci príkladový notebook ukazuje, ako trénovať LSTM na klasifikáciu tokenov. + +## ✍️ Príkladové notebooky: NER + +Pokračujte v učení pomocou nasledujúceho notebooku: + +* [NER s TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Záver + +NER model je **model na klasifikáciu tokenov**, čo znamená, že ho možno použiť na vykonávanie klasifikácie tokenov. Ide o veľmi bežnú úlohu v NLP, ktorá pomáha rozpoznávať konkrétne entity v texte vrátane miest, mien, dátumov a ďalších. + +## 🚀 Výzva + +Dokončite zadanie uvedené nižšie, aby ste vytrénovali model na rozpoznávanie pomenovaných entít pre lekárske termíny, a potom ho vyskúšajte na inom datasete. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Prehľad a samoštúdium + +Prečítajte si blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) a postupujte podľa sekcie Ďalšie čítanie v tomto článku, aby ste si prehĺbili svoje vedomosti. + +## [Zadanie](lab/README.md) + +V zadaní pre túto lekciu budete musieť vytrénovať model na rozpoznávanie lekárskych entít. Môžete začať trénovaním LSTM modelu, ako je popísané v tejto lekcii, a pokračovať použitím modelu BERT. Prečítajte si [pokyny](lab/README.md), aby ste získali všetky podrobnosti. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie odporúčame profesionálny ľudský preklad. Nezodpovedáme za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/19-NER/lab/README.md b/translations/sk/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..18319026 --- /dev/null +++ b/translations/sk/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Laboratórna úloha z [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Úloha + +V tejto úlohe musíte natrénovať model na rozpoznávanie pomenovaných entít (NER) pre medicínske termíny. + +## Dataset + +Na natrénovanie NER modelu potrebujeme správne označený dataset s medicínskymi entitami. [BC5CDR dataset](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) obsahuje označené choroby a chemické entity z viac ako 1500 článkov. Dataset si môžete stiahnuť po registrácii na ich webovej stránke. + +Dataset BC5CDR vyzerá takto: + +``` +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 +... +``` + +V tomto datasete sú názov článku a abstrakt v prvých dvoch riadkoch, a potom nasledujú jednotlivé entity s počiatočnými a koncovými pozíciami v rámci bloku názov+abstrakt. Okrem typu entity získate aj ID tejto entity v rámci určitej medicínskej ontológie. + +Budete musieť napísať nejaký Python kód na konverziu tohto datasetu do BIO kódovania. + +## Sieť + +Prvý pokus o NER môže byť realizovaný pomocou LSTM siete, ako ste videli v našom príklade počas lekcie. Avšak pri úlohách NLP [transformer architektúra](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), a konkrétne [BERT jazykové modely](https://en.wikipedia.org/wiki/BERT_(language_model)) dosahujú oveľa lepšie výsledky. Predtrénované BERT modely rozumejú všeobecnej štruktúre jazyka a môžu byť doladené pre konkrétne úlohy s relatívne malými datasetmi a nízkymi výpočtovými nákladmi. + +Keďže plánujeme aplikovať NER na medicínsky scenár, má zmysel použiť BERT model natrénovaný na medicínskych textoch. Microsoft Research vydal predtrénovaný model nazvaný [PubMedBERT][PubMedBERT] ([publikácia][PubMedBERT-Pub]), ktorý bol doladený pomocou textov z repozitára [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +Štandard pre trénovanie transformer modelov je knižnica [Hugging Face Transformers](https://huggingface.co/). Obsahuje aj repozitár komunitou udržiavaných predtrénovaných modelov, vrátane PubMedBERT. Na načítanie a použitie tohto modelu potrebujeme len pár riadkov kódu: + +```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) +``` + +Týmto získame samotný `model`, ktorý je určený na úlohu klasifikácie tokenov pomocou `classes` počtu tried, ako aj objekt `tokenizer`, ktorý dokáže rozdeliť vstupný text na tokeny. Budete musieť konvertovať dataset do BIO formátu, pričom zohľadníte tokenizáciu PubMedBERT. Môžete použiť [tento kúsok Python kódu](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) ako inšpiráciu. + +## Záver + +Táto úloha je veľmi blízka skutočnej úlohe, ktorú pravdepodobne budete mať, ak chcete získať viac poznatkov z veľkých objemov textov v prirodzenom jazyku. V našom prípade môžeme aplikovať náš natrénovaný model na [dataset článkov súvisiacich s COVID-om](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) a zistiť, aké poznatky dokážeme získať. [Tento blogový príspevok](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) a [tento článok](https://www.mdpi.com/2504-2289/6/1/4) opisujú výskum, ktorý je možné vykonať na tomto korpuse článkov pomocou NER. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/20-LangModels/README.md b/translations/sk/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..49905e52 --- /dev/null +++ b/translations/sk/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Predtrénované veľké jazykové modely + +Vo všetkých našich predchádzajúcich úlohách sme trénovali neurónovú sieť na vykonávanie určitej úlohy pomocou označených dátových súborov. Pri veľkých transformátorových modeloch, ako je BERT, používame modelovanie jazyka v samo-supervidovanom režime na vytvorenie jazykového modelu, ktorý je následne špecializovaný na konkrétnu úlohu pomocou ďalšieho tréningu v špecifickej doméne. Ukázalo sa však, že veľké jazykové modely dokážu riešiť mnohé úlohy aj bez akéhokoľvek tréningu v špecifickej doméne. Rodina modelov, ktoré to dokážu, sa nazýva **GPT**: Generative Pre-Trained Transformer. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generovanie textu a perplexita + +Myšlienka, že neurónová sieť dokáže vykonávať všeobecné úlohy bez ďalšieho tréningu, je predstavená v článku [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Hlavná myšlienka spočíva v tom, že mnohé iné úlohy môžu byť modelované pomocou **generovania textu**, pretože porozumenie textu v podstate znamená schopnosť ho vytvárať. Keďže model je trénovaný na obrovskom množstve textu, ktorý zahŕňa ľudské poznanie, stáva sa znalým v širokej škále tém. + +> Porozumenie a schopnosť vytvárať text zahŕňa aj poznanie niečoho o svete okolo nás. Ľudia sa vo veľkej miere učia čítaním a sieť GPT je v tomto ohľade podobná. + +Siete na generovanie textu fungujú predpovedaním pravdepodobnosti nasledujúceho slova $$P(w_N)$$. Bezpodmienečná pravdepodobnosť nasledujúceho slova sa rovná frekvencii tohto slova v textovom korpuse. GPT nám však dokáže poskytnúť **podmienenú pravdepodobnosť** nasledujúceho slova na základe predchádzajúcich: $$P(w_N | w_{n-1}, ..., w_0)$$. + +> Viac o pravdepodobnostiach si môžete prečítať v našom [kurze Data Science pre začiatočníkov](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Kvalita modelu na generovanie textu môže byť definovaná pomocou **perplexity**. Ide o vnútornú metriku, ktorá nám umožňuje merať kvalitu modelu bez akéhokoľvek datasetu špecifického pre úlohu. Je založená na pojme *pravdepodobnosti vety* - model priraďuje vysokú pravdepodobnosť vete, ktorá je pravdepodobne reálna (t. j. model nie je z nej **zmätený**), a nízku pravdepodobnosť vetám, ktoré dávajú menší zmysel (napr. *Môže to robiť čo?*). Keď modelu poskytneme vety z reálneho textového korpusu, očakávame, že budú mať vysokú pravdepodobnosť a nízku **perplexitu**. Matematicky je definovaná ako normalizovaná inverzná pravdepodobnosť testovacej množiny: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Môžete experimentovať s generovaním textu pomocou [textového editora poháňaného GPT od Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. V tomto editore začnete písať svoj text a stlačením **[TAB]** vám editor ponúkne niekoľko možností dokončenia. Ak sú príliš krátke alebo s nimi nie ste spokojní, stlačte [TAB] znova a získate viac možností, vrátane dlhších častí textu. + +## GPT je rodina + +GPT nie je jeden model, ale skôr kolekcia modelov vyvinutých a trénovaných [OpenAI](https://openai.com). + +Medzi modely GPT patria: + +| [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) | +| -- | -- | -- | +|Jazykový model s až 1,5 miliardami parametrov. | Jazykový model s až 175 miliardami parametrov. | 100T parametrov, akceptuje vstupy vo forme obrázkov aj textu a generuje text. | + +Modely GPT-3 a GPT-4 sú dostupné [ako kognitívna služba od Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) a ako [OpenAI API](https://openai.com/api/). + +## Inžinierstvo výziev (Prompt Engineering) + +Keďže GPT bolo trénované na obrovských objemoch dát na porozumenie jazyka a kódu, poskytuje výstupy ako odpovede na vstupy (výzvy). Výzvy sú vstupy alebo dotazy pre GPT, kde poskytujete modelu inštrukcie na úlohy, ktoré má vykonať. Na dosiahnutie požadovaného výsledku potrebujete najefektívnejšiu výzvu, čo zahŕňa výber správnych slov, formátov, fráz alebo dokonca symbolov. Tento prístup sa nazýva [inžinierstvo výziev](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Táto dokumentácia](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vám poskytne viac informácií o inžinierstve výziev. + +## ✍️ Ukážkový notebook: [Hranie sa s OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +* [Generovanie textu s OpenAI-GPT a Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Záver + +Nové všeobecné predtrénované jazykové modely nemodelujú len štruktúru jazyka, ale obsahujú aj obrovské množstvo prirodzeného jazyka. Preto môžu byť efektívne použité na riešenie niektorých NLP úloh v režime zero-shot alebo few-shot. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/5-NLP/README.md b/translations/sk/lessons/5-NLP/README.md new file mode 100644 index 00000000..95de17a9 --- /dev/null +++ b/translations/sk/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Spracovanie prirodzeného jazyka + +![Zhrnutie úloh NLP v kresbe](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sk.png) + +V tejto sekcii sa zameriame na používanie neurónových sietí na riešenie úloh súvisiacich so **spracovaním prirodzeného jazyka (NLP)**. Existuje mnoho problémov v oblasti NLP, ktoré by sme chceli, aby počítače dokázali vyriešiť: + +* **Klasifikácia textu** je typický klasifikačný problém týkajúci sa textových sekvencií. Príklady zahŕňajú klasifikáciu e-mailových správ ako spam vs. ne-spam alebo kategorizáciu článkov ako šport, biznis, politika atď. Pri vývoji chatbotov často potrebujeme pochopiť, čo chcel používateľ povedať – v tomto prípade ide o **klasifikáciu zámeru**. Často sa pri klasifikácii zámeru musíme vysporiadať s mnohými kategóriami. +* **Analýza sentimentu** je typický regresný problém, kde musíme priradiť číslo (sentiment), ktoré zodpovedá tomu, ako pozitívny/negatívny je význam vety. Pokročilejšou verziou analýzy sentimentu je **analýza sentimentu na základe aspektov** (ABSA), kde priraďujeme sentiment nie celej vete, ale jej rôznym častiam (aspektom), napr. *V tejto reštaurácii sa mi páčila kuchyňa, ale atmosféra bola hrozná*. +* **Rozpoznávanie pomenovaných entít** (NER) sa týka problému extrakcie určitých entít z textu. Napríklad, môžeme potrebovať pochopiť, že vo fráze *Potrebujem letieť do Paríža zajtra* slovo *zajtra* odkazuje na DÁTUM a *Paríž* je LOKÁCIA. +* **Extrakcia kľúčových slov** je podobná NER, ale musíme automaticky extrahovať slová dôležité pre význam vety bez predchádzajúceho trénovania na konkrétne typy entít. +* **Zoskupovanie textu** môže byť užitočné, keď chceme zoskupiť podobné vety, napríklad podobné požiadavky v konverzáciách technickej podpory. +* **Odpovedanie na otázky** sa týka schopnosti modelu odpovedať na konkrétnu otázku. Model dostane textový úryvok a otázku ako vstupy a musí poskytnúť miesto v texte, kde sa nachádza odpoveď na otázku (alebo niekedy vygenerovať text odpovede). +* **Generovanie textu** je schopnosť modelu generovať nový text. Môže byť považované za klasifikačnú úlohu, ktorá predpovedá ďalšie písmeno/slovo na základe určitého *textového podnetu*. Pokročilé modely generovania textu, ako GPT-3, dokážu riešiť aj iné úlohy NLP, ako je klasifikácia, pomocou techniky nazývanej [programovanie podnetov](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) alebo [inžinierstvo podnetov](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Sumarizácia textu** je technika, keď chceme, aby počítač "prečítal" dlhý text a zhrnul ho do niekoľkých viet. +* **Strojový preklad** môže byť vnímaný ako kombinácia porozumenia textu v jednom jazyku a generovania textu v inom. + +Spočiatku sa väčšina úloh NLP riešila pomocou tradičných metód, ako sú gramatiky. Napríklad pri strojovom preklade sa používali analyzátory na transformáciu pôvodnej vety na syntaktický strom, potom sa extrahovali vyššie úrovne sémantických štruktúr na reprezentáciu významu vety a na základe tohto významu a gramatiky cieľového jazyka sa generoval výsledok. Dnes sa mnohé úlohy NLP efektívnejšie riešia pomocou neurónových sietí. + +> Mnohé klasické metódy NLP sú implementované v Python knižnici [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Online je dostupná skvelá [NLTK kniha](https://www.nltk.org/book/), ktorá pokrýva, ako môžu byť rôzne úlohy NLP riešené pomocou NLTK. + +V našom kurze sa budeme prevažne zameriavať na používanie neurónových sietí pre NLP a NLTK použijeme tam, kde to bude potrebné. + +Už sme sa naučili používať neurónové siete na prácu s tabuľkovými dátami a obrázkami. Hlavný rozdiel medzi týmito typmi dát a textom je, že text je sekvencia s variabilnou dĺžkou, zatiaľ čo veľkosť vstupu v prípade obrázkov je známa vopred. Zatiaľ čo konvolučné siete dokážu extrahovať vzory z vstupných dát, vzory v texte sú zložitejšie. Napríklad, negácia môže byť oddelená od subjektu ľubovoľným počtom slov (napr. *Nemám rád pomaranče* vs. *Nemám rád tie veľké farebné chutné pomaranče*), a to by stále malo byť interpretované ako jeden vzor. Preto na spracovanie jazyka potrebujeme zaviesť nové typy neurónových sietí, ako sú *rekurentné siete* a *transformery*. + +## Inštalácia knižníc + +Ak používate lokálnu inštaláciu Pythonu na spustenie tohto kurzu, možno budete musieť nainštalovať všetky potrebné knižnice pre NLP pomocou nasledujúcich príkazov: + +**Pre PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Pre TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> NLP s TensorFlow si môžete vyskúšať na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Upozornenie na GPU + +V tejto sekcii budeme v niektorých príkladoch trénovať pomerne veľké modely. +* **Používajte počítač s podporou GPU**: Odporúča sa spúšťať vaše notebooky na počítači s podporou GPU, aby sa skrátili čakacie doby pri práci s veľkými modelmi. +* **Obmedzenia pamäte GPU**: Používanie GPU môže viesť k situáciám, keď vám dôjde pamäť GPU, najmä pri trénovaní veľkých modelov. +* **Spotreba pamäte GPU**: Množstvo pamäte GPU spotrebovanej počas trénovania závisí od rôznych faktorov, vrátane veľkosti minibatchu. +* **Minimalizujte veľkosť minibatchu**: Ak narazíte na problémy s pamäťou GPU, zvážte zníženie veľkosti minibatchu vo vašom kóde ako možné riešenie. +* **Uvoľnenie pamäte GPU v TensorFlow**: Staršie verzie TensorFlow nemusia správne uvoľniť pamäť GPU pri trénovaní viacerých modelov v jednom Python kerneli. Na efektívne riadenie využitia pamäte GPU môžete nakonfigurovať TensorFlow tak, aby alokoval pamäť GPU iba podľa potreby. +* **Zahrnutie kódu**: Ak chcete nastaviť TensorFlow na dynamické alokovanie pamäte GPU, zahrňte nasledujúci kód do vašich notebookov: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Ak máte záujem o učenie sa NLP z pohľadu klasického ML, navštívte [tento súbor lekcií](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) + +## V tejto sekcii +V tejto sekcii sa naučíme: + +* [Reprezentácia textu ako tenzorov](13-TextRep/README.md) +* [Vstupné vektory slov](14-Emdeddings/README.md) +* [Modelovanie jazyka](15-LanguageModeling/README.md) +* [Rekurentné neurónové siete](16-RNN/README.md) +* [Generatívne siete](17-GenerativeNetworks/README.md) +* [Transformery](18-Transformers/README.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/sk/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..2a9a3001 --- /dev/null +++ b/translations/sk/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Genetické algoritmy + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetické algoritmy** (GA) sú založené na **evolučnom prístupe** k AI, kde sa využívajú metódy evolúcie populácie na získanie optimálneho riešenia pre daný problém. Boli navrhnuté v roku 1975 [Johnom Henrym Hollandom](https://wikipedia.org/wiki/John_Henry_Holland). + +Genetické algoritmy sú založené na nasledujúcich princípoch: + +* Platné riešenia problému môžu byť reprezentované ako **gény** +* **Kombinácia** nám umožňuje spojiť dve riešenia a získať nové platné riešenie +* **Selektovanie** sa používa na výber optimálnejších riešení pomocou nejakej **fitness funkcie** +* **Mutácie** sa zavádzajú na destabilizáciu optimalizácie a na vyhnutie sa lokálnemu minimu + +Ak chcete implementovať genetický algoritmus, potrebujete nasledovné: + + * Nájsť spôsob kódovania riešení problému pomocou **génov** g∈Γ + * Na množine génov Γ definovať **fitness funkciu** fit: Γ→**R**. Menšie hodnoty funkcie zodpovedajú lepším riešeniam. + * Definovať mechanizmus **kombinácie**, ktorý spája dva gény a vytvára nové platné riešenie crossover: Γ2→Γ. + * Definovať mechanizmus **mutácie** mutate: Γ→Γ. + +V mnohých prípadoch sú mechanizmy kombinácie a mutácie pomerne jednoduché algoritmy na manipuláciu génov ako číselných sekvencií alebo bitových vektorov. + +Konkrétna implementácia genetického algoritmu sa môže líšiť od prípadu k prípadu, ale všeobecná štruktúra je nasledovná: + +1. Vyberte počiatočnú populáciu G⊂Γ +2. Náhodne vyberte jednu z operácií, ktorá sa vykoná v tomto kroku: kombinácia alebo mutácia +3. **Kombinácia**: + * Náhodne vyberte dva gény g1, g2 ∈ G + * Vypočítajte kombináciu g=crossover(g1,g2) + * Ak fit(g)1) alebo fit(g)2) - nahraďte príslušný gén v populácii génom g. +4. **Mutácia** - vyberte náhodný gén g∈G a nahraďte ho mutate(g) +5. Opakujte od kroku 2, až kým nedosiahnete dostatočne malú hodnotu fit alebo kým sa nedosiahne limit počtu krokov. + +## Typické úlohy + +Úlohy, ktoré sa zvyčajne riešia pomocou genetických algoritmov, zahŕňajú: + +1. Optimalizácia rozvrhu +1. Optimálne balenie +1. Optimálne rezanie +1. Urýchlenie vyčerpávajúceho vyhľadávania + +## ✍️ Cvičenia: Genetické algoritmy + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +Prejdite na [tento notebook](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), kde nájdete dva príklady použitia genetických algoritmov: + +1. Spravodlivé rozdelenie pokladu +1. Problém 8 kráľovien + +## Záver + +Genetické algoritmy sa používajú na riešenie mnohých problémov, vrátane logistiky a vyhľadávacích problémov. Táto oblasť je inšpirovaná výskumom, ktorý spája témy z psychológie a informatiky. + +## 🚀 Výzva + +"Genetické algoritmy sú jednoduché na implementáciu, ale ich správanie je ťažké pochopiť." [zdroj](https://wikipedia.org/wiki/Genetic_algorithm) Urobte si výskum a nájdite implementáciu genetického algoritmu, napríklad na riešenie Sudoku, a vysvetlite, ako funguje pomocou náčrtu alebo diagramu toku. + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Prehľad a samostatné štúdium + +Pozrite si [toto skvelé video](https://www.youtube.com/watch?v=qv6UVOQ0F44), ktoré hovorí o tom, ako sa počítač môže naučiť hrať Super Mario pomocou neurónových sietí trénovaných genetickými algoritmami. Viac o tom, ako sa počítače učia hrať hry, sa dozviete [v ďalšej sekcii](../22-DeepRL/README.md). + +## [Úloha: Diofantická rovnica](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Vaším cieľom je vyriešiť tzv. **Diofantickú rovnicu** - rovnicu s celočíselnými koreňmi. Napríklad zvážte rovnicu a+2b+3c+4d=30. Musíte nájsť celočíselné korene, ktoré túto rovnicu spĺňajú. + +*Túto úlohu inšpiroval [tento príspevok](https://habr.com/post/128704/).* + +Tipy: + +1. Môžete zvážiť korene v intervale [0;30] +1. Ako gén zvážte použitie zoznamu hodnôt koreňov + +Použite [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) ako východiskový bod. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/6-Other/22-DeepRL/README.md b/translations/sk/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..502da23b --- /dev/null +++ b/translations/sk/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Hlboké posilňovacie učenie + +Posilňovacie učenie (RL) je považované za jeden zo základných paradigmov strojového učenia, vedľa učenia s učiteľom a učenia bez učiteľa. Zatiaľ čo pri učení s učiteľom sa spoliehame na dataset s známymi výsledkami, RL je založené na **učení sa prostredníctvom skúseností**. Napríklad, keď prvýkrát vidíme počítačovú hru, začneme ju hrať, aj keď nepoznáme pravidlá, a čoskoro dokážeme zlepšiť svoje schopnosti len procesom hrania a prispôsobovania svojho správania. + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Na vykonanie RL potrebujeme: + +* **Prostredie** alebo **simulátor**, ktorý nastavuje pravidlá hry. Mali by sme byť schopní vykonávať experimenty v simulátore a pozorovať výsledky. +* **Funkciu odmeny**, ktorá naznačuje, ako úspešný bol náš experiment. V prípade učenia sa hrať počítačovú hru by odmenou bolo naše konečné skóre. + +Na základe funkcie odmeny by sme mali byť schopní prispôsobiť svoje správanie a zlepšiť svoje schopnosti, aby sme nabudúce hrali lepšie. Hlavný rozdiel medzi inými typmi strojového učenia a RL je ten, že pri RL zvyčajne nevieme, či vyhráme alebo prehráme, až kým nedokončíme hru. Preto nemôžeme povedať, či je určitý krok sám o sebe dobrý alebo nie - odmenu dostaneme až na konci hry. + +Počas RL zvyčajne vykonávame mnoho experimentov. Počas každého experimentu musíme vyvážiť medzi nasledovaním optimálnej stratégie, ktorú sme sa doteraz naučili (**využívanie**), a skúmaním nových možných stavov (**prieskum**). + +## OpenAI Gym + +Skvelým nástrojom pre RL je [OpenAI Gym](https://gym.openai.com/) - **simulačné prostredie**, ktoré dokáže simulovať mnoho rôznych prostredí, od hier Atari až po fyziku za vyvažovaním tyče. Je to jedno z najpopulárnejších simulačných prostredí na trénovanie algoritmov posilňovacieho učenia a je udržiavané [OpenAI](https://openai.com/). + +> **Note**: Všetky dostupné prostredia z OpenAI Gym si môžete pozrieť [tu](https://gym.openai.com/envs/#classic_control). + +## Vyvažovanie CartPole + +Pravdepodobne ste už videli moderné vyvažovacie zariadenia, ako napríklad *Segway* alebo *Gyroskútre*. Dokážu automaticky vyvažovať tým, že upravujú svoje kolesá na základe signálu z akcelerometra alebo gyroskopu. V tejto sekcii sa naučíme, ako vyriešiť podobný problém - vyvažovanie tyče. Je to podobné situácii, keď cirkusový umelec potrebuje vyvážiť tyč na svojej ruke - ale toto vyvažovanie tyče sa deje iba v 1D. + +Zjednodušená verzia vyvažovania je známa ako problém **CartPole**. Vo svete CartPole máme horizontálny posúvač, ktorý sa môže pohybovať doľava alebo doprava, a cieľom je vyvážiť vertikálnu tyč na vrchu posúvača, keď sa pohybuje. + +cartpole + +Na vytvorenie a použitie tohto prostredia potrebujeme niekoľko riadkov kódu v Pythone: + +```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}") +``` + +Každé prostredie je možné pristupovať presne rovnakým spôsobom: +* `env.reset` spustí nový experiment +* `env.step` vykoná simulačný krok. Prijíma **akciu** z **akčného priestoru** a vracia **pozorovanie** (z pozorovacieho priestoru), ako aj odmenu a príznak ukončenia. + +V príklade vyššie vykonávame náhodnú akciu pri každom kroku, čo je dôvod, prečo je život experimentu veľmi krátky: + +![nevyvážené cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Cieľom algoritmu RL je vytrénovať model - tzv. **politiku** π - ktorá bude vracať akciu v reakcii na daný stav. Politiku môžeme tiež považovať za pravdepodobnostnú, napr. pre akýkoľvek stav *s* a akciu *a* bude vracať pravdepodobnosť π(*a*|*s*), že by sme mali vykonať *a* v stave *s*. + +## Algoritmus Policy Gradients + +Najzjavnejší spôsob modelovania politiky je vytvorenie neurónovej siete, ktorá bude brať stavy ako vstup a vracať zodpovedajúce akcie (alebo skôr pravdepodobnosti všetkých akcií). V istom zmysle by to bolo podobné bežnej klasifikačnej úlohe, s hlavnou odlišnosťou - vopred nevieme, ktoré akcie by sme mali vykonať pri každom kroku. + +Myšlienka je tu odhadnúť tieto pravdepodobnosti. Vytvoríme vektor **kumulatívnych odmien**, ktorý ukazuje našu celkovú odmenu pri každom kroku experimentu. Tiež aplikujeme **diskontovanie odmien** násobením skorších odmien nejakým koeficientom γ=0.99, aby sme znížili význam skorších odmien. Potom posilníme tie kroky pozdĺž experimentálnej cesty, ktoré prinášajú väčšie odmeny. + +> Viac o algoritme Policy Gradient a jeho ukážku nájdete v [príkladovom notebooku](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritmus Actor-Critic + +Vylepšená verzia prístupu Policy Gradients sa nazýva **Actor-Critic**. Hlavná myšlienka za tým je, že neurónová sieť by mala byť trénovaná na návrat dvoch vecí: + +* Politiku, ktorá určuje, akú akciu vykonať. Táto časť sa nazýva **actor**. +* Odhad celkovej odmeny, ktorú môžeme očakávať v tomto stave - táto časť sa nazýva **critic**. + +V istom zmysle táto architektúra pripomína [GAN](../../4-ComputerVision/10-GANs/README.md), kde máme dve siete, ktoré sú trénované proti sebe. V modeli actor-critic navrhuje actor akciu, ktorú potrebujeme vykonať, a critic sa snaží byť kritický a odhadnúť výsledok. Naším cieľom je však trénovať tieto siete v súlade. + +Keďže poznáme skutočné kumulatívne odmeny a výsledky, ktoré critic vracia počas experimentu, je relatívne jednoduché vytvoriť funkciu straty, ktorá minimalizuje rozdiel medzi nimi. To nám dáva **critic loss**. **Actor loss** môžeme vypočítať použitím rovnakého prístupu ako v algoritme Policy Gradient. + +Po spustení jedného z týchto algoritmov môžeme očakávať, že naše CartPole sa bude správať takto: + +![vyvážené cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Cvičenia: Policy Gradients a Actor-Critic RL + +Pokračujte vo svojom učení v nasledujúcich notebookoch: + +* [RL v TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL v PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Ďalšie úlohy RL + +Posilňovacie učenie je dnes rýchlo rastúcou oblasťou výskumu. Niektoré zaujímavé príklady posilňovacieho učenia sú: + +* Učenie počítača hrať **hry Atari**. Náročnou časťou tohto problému je, že nemáme jednoduchý stav reprezentovaný ako vektor, ale skôr snímku obrazovky - a musíme použiť CNN na konverziu obrazu obrazovky na vektor vlastností alebo na extrakciu informácií o odmene. Hry Atari sú dostupné v Gym. +* Učenie počítača hrať stolové hry, ako šach a Go. Nedávno boli programy na špičkovej úrovni, ako **Alpha Zero**, trénované od nuly dvoma agentmi, ktorí hrali proti sebe a zlepšovali sa pri každom kroku. +* V priemysle sa RL používa na vytváranie riadiacich systémov zo simulácie. Služba nazývaná [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) je špeciálne navrhnutá na tento účel. + +## Záver + +Teraz sme sa naučili, ako trénovať agentov na dosiahnutie dobrých výsledkov len poskytnutím funkcie odmeny, ktorá definuje požadovaný stav hry, a umožnením inteligentného skúmania priestoru hľadania. Úspešne sme vyskúšali dva algoritmy a dosiahli dobrý výsledok v relatívne krátkom čase. Toto je však len začiatok vašej cesty do RL, a určite by ste mali zvážiť absolvovanie samostatného kurzu, ak chcete ísť hlbšie. + +## 🚀 Výzva + +Preskúmajte aplikácie uvedené v sekcii 'Ďalšie úlohy RL' a skúste implementovať jednu z nich! + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Prehľad a samostatné štúdium + +Viac o klasickom posilňovacom učení sa dozviete v našom [kurze Machine Learning for Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Pozrite si [toto skvelé video](https://www.youtube.com/watch?v=qv6UVOQ0F44), ktoré hovorí o tom, ako sa počítač môže naučiť hrať Super Mario. + +## Zadanie: [Vytrénujte Mountain Car](lab/README.md) + +Vaším cieľom počas tohto zadania bude vytrénovať iné prostredie Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/6-Other/22-DeepRL/lab/README.md b/translations/sk/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..1a61337f --- /dev/null +++ b/translations/sk/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Prostredie + +Prostredie Mountain Car pozostáva z auta uväzneného v údolí. Vaším cieľom je vyskočiť z údolia a dosiahnuť vlajku. Akcie, ktoré môžete vykonať, sú zrýchlenie doľava, doprava alebo nerobiť nič. Môžete pozorovať polohu auta pozdĺž osi x a jeho rýchlosť. + +## Začiatok práce s notebookom + +Začnite laboratórium otvorením [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Záver + +Počas tohto laboratória by ste sa mali naučiť, že prispôsobenie RL algoritmov novému prostrediu je často pomerne jednoduché, pretože OpenAI Gym má rovnaké rozhranie pre všetky prostredia a algoritmy vo všeobecnosti nezávisia výrazne od povahy prostredia. Dokonca môžete preštruktúrovať Python kód tak, aby ste mohli odovzdať akékoľvek prostredie RL algoritmu ako parameter. + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/6-Other/23-MultiagentSystems/README.md b/translations/sk/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..42648b0f --- /dev/null +++ b/translations/sk/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Multi-Agent Systems + +Jedným z možných spôsobov dosiahnutia inteligencie je takzvaný **emergentný** (alebo **synergický**) prístup, ktorý je založený na skutočnosti, že kombinované správanie mnohých relatívne jednoduchých agentov môže viesť k celkovo zložitejšiemu (alebo inteligentnejšiemu) správaniu systému ako celku. Teoreticky je to založené na princípoch [kolektívnej inteligencie](https://en.wikipedia.org/wiki/Collective_intelligence), [emergentizmu](https://en.wikipedia.org/wiki/Global_brain) a [evolučnej kybernetiky](https://en.wikipedia.org/wiki/Global_brain), ktoré tvrdia, že systémy na vyššej úrovni získavajú určitú pridanú hodnotu, keď sú správne kombinované zo systémov na nižšej úrovni (takzvaný *princíp prechodu metasystému*). + +## [Kvíz pred prednáškou](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Smer **Multi-Agent Systems** sa objavil v oblasti AI v 90. rokoch ako odpoveď na rast internetu a distribuovaných systémov. Jedna z klasických učebníc AI, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), sa zameriava na pohľad klasickej AI z perspektívy multi-agentových systémov. + +Ústredným pojmom multi-agentového prístupu je **agent** – entita, ktorá žije v určitom **prostredí**, ktoré dokáže vnímať a na ktoré môže pôsobiť. Toto je veľmi široká definícia a existuje mnoho rôznych typov a klasifikácií agentov: + +* Podľa ich schopnosti uvažovať: + - **Reaktívni** agenti majú zvyčajne jednoduché správanie typu požiadavka-odpoveď + - **Deliberatívni** agenti využívajú určitý druh logického uvažovania a/alebo plánovacích schopností +* Podľa miesta, kde agent vykonáva svoj kód: + - **Statickí** agenti pracujú na vyhradenom sieťovom uzle + - **Mobilní** agenti môžu presúvať svoj kód medzi sieťovými uzlami +* Podľa ich správania: + - **Pasívni agenti** nemajú konkrétne ciele. Takíto agenti môžu reagovať na vonkajšie podnety, ale sami nebudú iniciovať žiadne akcie. + - **Aktívni agenti** majú určité ciele, ktoré sledujú + - **Kognitívni agenti** zahŕňajú komplexné plánovanie a uvažovanie + +Multi-agentové systémy sa dnes používajú v mnohých aplikáciách: + +* V hrách mnoho postáv ovládaných počítačom využíva určitý druh AI a môže byť považovaných za inteligentných agentov +* Pri produkcii videa sa renderovanie komplexných 3D scén, ktoré zahŕňajú davy, zvyčajne vykonáva pomocou simulácie multi-agentových systémov +* Pri modelovaní systémov sa multi-agentový prístup používa na simuláciu správania komplexného modelu. Napríklad multi-agentový prístup bol úspešne použitý na predpovedanie šírenia ochorenia COVID-19 po celom svete. Podobný prístup možno použiť na modelovanie dopravy v meste a sledovanie reakcií na zmeny dopravných pravidiel. +* V komplexných automatizačných systémoch môže každé zariadenie fungovať ako nezávislý agent, čo robí celý systém menej monolitickým a robustnejším. + +Nebudeme sa podrobne venovať multi-agentovým systémom, ale zvážime jeden príklad **modelovania multi-agentových systémov**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) je prostredie na modelovanie multi-agentových systémov založené na upravenej verzii programovacieho jazyka [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Tento jazyk bol vyvinutý na výučbu programovacích konceptov pre deti a umožňuje ovládať agenta nazývaného **korytnačka**, ktorý sa môže pohybovať a zanechávať za sebou stopu. To umožňuje vytvárať komplexné geometrické tvary, čo je veľmi vizuálny spôsob, ako pochopiť správanie agenta. + +V NetLogo môžeme vytvoriť mnoho korytnačiek pomocou príkazu `create-turtles`. Potom môžeme všetkým korytnačkám prikázať vykonať nejaké akcie (v nasledujúcom príklade – posunúť sa o 10 bodov dopredu): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Samozrejme, nie je zaujímavé, keď všetky korytnačky robia to isté, takže môžeme `ask` skupiny korytnačiek, napríklad tie, ktoré sú v blízkosti určitého bodu. Môžeme tiež vytvárať korytnačky rôznych *druhov* pomocou príkazu `breed [cats cat]`. Tu `cat` je názov druhu a musíme špecifikovať jednotné aj množné číslo, pretože rôzne príkazy používajú rôzne formy pre jasnosť. + +> ✅ Nebudeme sa venovať učeniu samotného jazyka NetLogo – ak máte záujem dozvedieť sa viac, môžete navštíviť skvelý zdroj [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/). + +Môžete si [stiahnuť](https://ccl.northwestern.edu/netlogo/download.shtml) a nainštalovať NetLogo, aby ste si ho vyskúšali. + +### Knižnica modelov + +Skvelou vecou na NetLogo je, že obsahuje knižnicu funkčných modelov, ktoré si môžete vyskúšať. Prejdite na **File → Models Library**, kde máte na výber mnoho kategórií modelov. + +NetLogo Models Library + +> Screenshot knižnice modelov od Dmitry Soshnikov + +Môžete otvoriť jeden z modelov, napríklad **Biology → Flocking**. + +### Hlavné princípy + +Po otvorení modelu sa dostanete na hlavné obrazovku NetLogo. Tu je ukážkový model, ktorý popisuje populáciu vlkov a oviec, pričom zdroje (tráva) sú obmedzené. + +![NetLogo Main Screen](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sk.png) + +> Screenshot od Dmitry Soshnikov + +Na tejto obrazovke môžete vidieť: + +* Sekciu **Interface**, ktorá obsahuje: + - Hlavné pole, kde žijú všetci agenti + - Rôzne ovládacie prvky: tlačidlá, posuvníky atď. + - Grafy, ktoré môžete použiť na zobrazenie parametrov simulácie +* Záložku **Code**, ktorá obsahuje editor, kde môžete písať program NetLogo + +Vo väčšine prípadov bude rozhranie obsahovať tlačidlo **Setup**, ktoré inicializuje stav simulácie, a tlačidlo **Go**, ktoré spustí vykonávanie. Tieto sú spracované príslušnými obslužnými funkciami v kóde, ktoré vyzerajú takto: + +``` +to go [ +... +] +``` + +Svet NetLogo pozostáva z nasledujúcich objektov: + +* **Agenti** (korytnačky), ktorí sa môžu pohybovať po poli a vykonávať akcie. Agentov ovládate pomocou syntaxe `ask turtles [...]`, pričom kód v zátvorkách je vykonávaný všetkými agentmi v *režime korytnačky*. +* **Plochy** sú štvorcové oblasti poľa, na ktorých agenti žijú. Môžete odkazovať na všetkých agentov na rovnakej ploche alebo môžete meniť farby plôch a niektoré ďalšie vlastnosti. Môžete tiež `ask patches`, aby vykonali akcie. +* **Pozorovateľ** je jedinečný agent, ktorý ovláda svet. Všetky obslužné funkcie tlačidiel sú vykonávané v *režime pozorovateľa*. + +> ✅ Krása multi-agentového prostredia spočíva v tom, že kód, ktorý beží v režime korytnačky alebo v režime plochy, je vykonávaný všetkými agentmi súčasne paralelne. Tým, že napíšete trochu kódu a naprogramujete správanie jednotlivého agenta, môžete vytvoriť komplexné správanie celého simulačného systému. + +### Flocking + +Ako príklad multi-agentového správania zvážme **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking je komplexný vzor, ktorý je veľmi podobný tomu, ako lietajú kŕdle vtákov. Pri ich pozorovaní môžete mať pocit, že nasledujú nejaký kolektívny algoritmus alebo že majú určitú formu *kolektívnej inteligencie*. Avšak toto komplexné správanie vzniká, keď každý jednotlivý agent (v tomto prípade *vták*) pozoruje iba niektorých agentov v krátkej vzdialenosti od seba a riadi sa tromi jednoduchými pravidlami: + +* **Zarovnanie** – smeruje k priemernému smeru susedných agentov +* **Súdržnosť** – snaží sa smerovať k priemernej pozícii susedov (*dlhodobá príťažlivosť*) +* **Oddelenie** – keď sa dostane príliš blízko k iným vtákom, snaží sa vzdialiť (*krátkodobé odpudzovanie*) + +Môžete spustiť príklad flockingu a pozorovať správanie. Môžete tiež upraviť parametre, ako napríklad *stupeň oddelenia* alebo *rozsah videnia*, ktorý definuje, ako ďaleko každý vták vidí. Všimnite si, že ak znížite rozsah videnia na 0, všetky vtáky sa stanú slepými a flocking sa zastaví. Ak znížite oddelenie na 0, všetky vtáky sa zhromaždia do jednej priamky. + +> ✅ Prepnite na záložku **Code** a pozrite sa, kde sú tri pravidlá flockingu (zarovnanie, súdržnosť a oddelenie) implementované v kóde. Všimnite si, ako odkazujeme iba na tých agentov, ktorí sú v dohľade. + +### Ďalšie modely na preskúmanie + +Existuje niekoľko ďalších zaujímavých modelov, ktoré môžete experimentovať: + +* **Art → Fireworks** ukazuje, ako ohňostroj môže byť považovaný za kolektívne správanie jednotlivých prúdov ohňa +* **Social Science → Traffic Basic** a **Social Science → Traffic Grid** ukazujú model mestskej dopravy v 1D a 2D mriežke s alebo bez semaforov. Každé auto v simulácii nasleduje nasledujúce pravidlá: + - Ak je priestor pred ním prázdny – zrýchli (až do určitej maximálnej rýchlosti) + - Ak vidí prekážku pred sebou – zabrzdí (a môžete upraviť, ako ďaleko vodič vidí) +* **Social Science → Party** ukazuje, ako sa ľudia zoskupujú počas koktailovej párty. Môžete nájsť kombináciu parametrov, ktoré vedú k najrýchlejšiemu zvýšeniu šťastia skupiny. + +Ako vidíte z týchto príkladov, simulácie multi-agentových systémov môžu byť veľmi užitočným spôsobom na pochopenie správania komplexného systému pozostávajúceho z jednotlivcov, ktorí nasledujú rovnakú alebo podobnú logiku. Môže sa tiež použiť na ovládanie virtuálnych agentov, ako sú [NPCs](https://en.wikipedia.org/wiki/NPC) v počítačových hrách alebo agenti v 3D animovaných svetoch. + +## Deliberatívni agenti + +Vyššie opísaní agenti sú veľmi jednoduchí, reagujú na zmeny v prostredí pomocou určitého algoritmu. Ako takí sú **reaktívni agenti**. Avšak niekedy môžu agenti uvažovať a plánovať svoje akcie, v takom prípade sa nazývajú **deliberatívni**. + +Typickým príkladom by bol osobný agent, ktorý dostane pokyn od človeka rezervovať dovolenkový zájazd. Predpokladajme, že na internete žije mnoho agentov, ktorí mu môžu pomôcť. Mal by potom kontaktovať iných agentov, aby zistil, ktoré lety sú dostupné, aké sú ceny hotelov na rôzne dátumy, a pokúsiť sa vyjednať najlepšiu cenu. Keď je dovolenkový plán kompletný a potvrdený majiteľom, môže pokračovať v rezervácii. + +Na to, aby to dokázali, agenti potrebujú **komunikovať**. Na úspešnú komunikáciu potrebujú: + +* Niektoré **štandardné jazyky na výmenu znalostí**, ako napríklad [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) a [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Tieto jazyky sú navrhnuté na základe [teórie rečových aktov](https://en.wikipedia.org/wiki/Speech_act). +* Tieto jazyky by mali tiež obsahovať **protokoly na vyjednávanie**, založené na rôznych **typoch aukcií**. +* **Spoločnú ontológiu**, aby mohli odkazovať na rovnaké koncepty s porozumením ich významu +* Spôsob, ako **objaviť**, čo rôzni agenti dokážu, tiež založený na určitej ontológii + +Deliberatívni agenti sú oveľa zložitejší ako reaktívni, pretože nielenže reagujú na zmeny v prostredí, ale mali by byť schopní aj *iniciovať* akcie. Jednou z navrhovaných architektúr pre deliberatívnych agentov je takzvaný agent typu Belief-Desire-Intention (BDI): + +* **Presvedčenia** tvoria súbor znalostí o prostredí agenta. Môže byť štruktúrovaný ako databáza znalostí alebo súbor pravidiel, ktoré agent môže aplikovať na konkrétnu situáciu v prostredí. +* **Túžby** definujú, čo agent chce dosiahnuť, teda jeho ciele. Napríklad cieľom osobného asistenta vyššie je rezervovať zájazd a cieľom hotelového agenta je maximalizovať zisk. +* **Zámery** sú konkrétne akcie, ktoré agent plánuje vykonať na dosiahnutie svojich cieľov. Akcie zvyčajne menia prostredie a spôsobujú komunikáciu s inými agentmi. + +Existujú niektoré platformy dostupné na budovanie multi-agentových systémov, ako napríklad [JADE](https://jade.tilab.com/). [Tento článok](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) obsahuje prehľad multi-agentových platforiem spolu s krátkou históriou multi-agentových systémov a ich rôznymi scenármi použitia. + +## Záver + +Multi-agentové systémy môžu mať veľmi rôzne formy a byť použité v mnohých rôznych aplikáciách. +Všetky sa zameriavajú na jednoduchšie správanie jednotlivého agenta a dosahujú zložitejšie správanie celého systému vďaka **synergickému efektu**. + +## 🚀 Výzva + +Preneste túto lekciu do reálneho sveta a skúste konceptualizovať multi-agentový systém, ktorý dokáže vyriešiť problém. Čo by napríklad musel multi-agentový systém robiť, aby optimalizoval trasu školského autobusu? Ako by mohol fungovať v pekárni? + +## [Kvíz po prednáške](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Prehľad a samostatné štúdium + +Preskúmajte použitie tohto typu systému v priemysle. Vyberte si oblasť, ako je výroba alebo herný priemysel, a zistite, ako môžu multi-agentové systémy riešiť jedinečné problémy. + +## [Úloha NetLogo](assignment.md) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/sk/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..964c0790 --- /dev/null +++ b/translations/sk/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Úloha NetLogo + +Vyberte jeden z modelov v knižnici NetLogo a použite ho na simuláciu reálnej situácie čo najvernejšie. Dobrým príkladom by bolo upraviť model Vírus v priečinku Alternatívne vizualizácie tak, aby ukázal, ako môže byť použitý na modelovanie šírenia COVID-19. Dokážete vytvoriť model, ktorý napodobňuje reálne šírenie vírusu? + +Ukážte svoju prácu uložením kópie a vytvorením video ukážky, ktorá vysvetlí, ako je model prepojený s reálnou situáciou. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/7-Ethics/README.md b/translations/sk/lessons/7-Ethics/README.md new file mode 100644 index 00000000..02c545aa --- /dev/null +++ b/translations/sk/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etická a zodpovedná AI + +Tento kurz máte takmer dokončený a dúfam, že teraz už jasne vidíte, že AI je založená na množstve formálnych matematických metód, ktoré nám umožňujú nachádzať vzťahy v dátach a trénovať modely na replikáciu niektorých aspektov ľudského správania. V tomto bode histórie považujeme AI za veľmi mocný nástroj na extrakciu vzorcov z dát a ich aplikáciu na riešenie nových problémov. + +## [Kvíz pred prednáškou](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Avšak v sci-fi často vidíme príbehy, kde AI predstavuje hrozbu pre ľudstvo. Zvyčajne sú tieto príbehy zamerané na nejaký druh vzbury AI, keď sa AI rozhodne postaviť proti ľuďom. To naznačuje, že AI má nejaké emócie alebo dokáže robiť rozhodnutia, ktoré jej vývojári nepredvídali. + +Druh AI, o ktorom sme sa učili v tomto kurze, nie je nič iné ako veľká matica aritmetiky. Je to veľmi mocný nástroj, ktorý nám pomáha riešiť naše problémy, a ako každý iný mocný nástroj - môže byť použitý na dobré aj zlé účely. Dôležité je, že môže byť *zneužitý*. + +## Princípy zodpovednej AI + +Aby sme sa vyhli náhodnému alebo úmyselnému zneužitiu AI, Microsoft stanovuje dôležité [Princípy zodpovednej AI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Tieto princípy sú založené na nasledujúcich konceptoch: + +* **Spravodlivosť** súvisí s dôležitým problémom *predsudkov modelu*, ktoré môžu vzniknúť použitím zaujatých dát na trénovanie. Napríklad, keď sa snažíme predpovedať pravdepodobnosť získania práce softvérového vývojára pre konkrétnu osobu, model pravdepodobne uprednostní mužov - jednoducho preto, že trénovacia dátová sada bola pravdepodobne zaujatá voči mužskému publiku. Musíme starostlivo vyvážiť trénovacie dáta a skúmať model, aby sme sa vyhli predsudkom a zabezpečili, že model zohľadňuje relevantnejšie vlastnosti. +* **Spoľahlivosť a bezpečnosť**. Zo svojej podstaty môžu AI modely robiť chyby. Neurónová sieť vracia pravdepodobnosti, a to musíme brať do úvahy pri rozhodovaní. Každý model má určitú presnosť a citlivosť, a musíme to pochopiť, aby sme predišli škodám, ktoré môžu spôsobiť nesprávne rady. +* **Súkromie a bezpečnosť** majú niektoré špecifické implikácie pre AI. Napríklad, keď používame nejaké dáta na trénovanie modelu, tieto dáta sa určitým spôsobom "integrujú" do modelu. Na jednej strane to zvyšuje bezpečnosť a súkromie, na druhej strane si musíme pamätať, na akých dátach bol model trénovaný. +* **Inkluzívnosť** znamená, že AI nestaviame na to, aby nahradila ľudí, ale aby ich doplnila a urobila našu prácu kreatívnejšou. Súvisí to aj so spravodlivosťou, pretože pri práci s nedostatočne zastúpenými komunitami sú väčšina dát, ktoré zbierame, pravdepodobne zaujaté, a musíme zabezpečiť, že tieto komunity sú zahrnuté a správne spracované AI. +* **Transparentnosť**. To zahŕňa zabezpečenie, že vždy jasne uvádzame, že používame AI. Tiež, kdekoľvek je to možné, chceme používať AI systémy, ktoré sú *interpretovateľné*. +* **Zodpovednosť**. Keď AI modely prichádzajú s nejakými rozhodnutiami, nie je vždy jasné, kto je za tieto rozhodnutia zodpovedný. Musíme zabezpečiť, že rozumieme, kde leží zodpovednosť za rozhodnutia AI. Vo väčšine prípadov by sme chceli zahrnúť ľudí do procesu prijímania dôležitých rozhodnutí, aby boli za ne zodpovední skutoční ľudia. + +## Nástroje pre zodpovednú AI + +Microsoft vyvinul [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), ktorý obsahuje sadu nástrojov: + +* Interpretability Dashboard (InterpretML) +* Fairness Dashboard (FairLearn) +* Error Analysis Dashboard +* Responsible AI Dashboard, ktorý zahŕňa: + + - EconML - nástroj na kauzálnu analýzu, ktorý sa zameriava na otázky "čo ak" + - DiCE - nástroj na kontrafaktuálnu analýzu, ktorý vám umožňuje vidieť, ktoré vlastnosti je potrebné zmeniť, aby sa ovplyvnilo rozhodnutie modelu + +Pre viac informácií o etike AI navštívte [túto lekciu](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) v učebných osnovách strojového učenia, ktorá zahŕňa aj úlohy. + +## Prehľad a samostatné štúdium + +Absolvujte tento [učebný plán](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), aby ste sa dozvedeli viac o zodpovednej AI. + +## [Kvíz po prednáške](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Upozornenie**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/README.md b/translations/sk/lessons/README.md new file mode 100644 index 00000000..60671bd5 --- /dev/null +++ b/translations/sk/lessons/README.md @@ -0,0 +1,17 @@ + +# Prehľad + +![Prehľad v kresbe](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sk.png) + +> Kresba od [Tomomi Imura](https://twitter.com/girlie_mac) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/X-Extras/X1-MultiModal/README.md b/translations/sk/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..3626291c --- /dev/null +++ b/translations/sk/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Multi-modálne siete + +Po úspechu transformerových modelov pri riešení úloh spracovania prirodzeného jazyka (NLP) sa rovnaké alebo podobné architektúry začali aplikovať aj na úlohy počítačového videnia. Rastie záujem o vytváranie modelov, ktoré by *kombinovali* schopnosti videnia a spracovania prirodzeného jazyka. Jedným z takýchto pokusov je model od OpenAI nazývaný CLIP a DALL.E. + +## Kontrastívne predtrénovanie obrazov (CLIP) + +Hlavnou myšlienkou CLIP je schopnosť porovnávať textové podnety s obrázkom a určiť, ako dobre obrázok zodpovedá danému podnetu. + +![Architektúra CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sk.png) + +> *Obrázok z [tohto blogového príspevku](https://openai.com/blog/clip/)* + +Model je trénovaný na obrázkoch získaných z internetu a ich popisoch. Pre každú dávku vezmeme N párov (obrázok, text) a prevedieme ich na vektorové reprezentácie I, ..., T. Tieto reprezentácie sa potom navzájom porovnávajú. Strata je definovaná tak, aby maximalizovala kosínovú podobnosť medzi vektormi zodpovedajúcimi jednému páru (napr. I a T) a minimalizovala kosínovú podobnosť medzi všetkými ostatnými pármi. Preto sa tento prístup nazýva **kontrastívny**. + +Model/knižnica CLIP je dostupná na [GitHube OpenAI](https://github.com/openai/CLIP). Tento prístup je popísaný v [tomto blogovom príspevku](https://openai.com/blog/clip/) a podrobnejšie v [tomto článku](https://arxiv.org/pdf/2103.00020.pdf). + +Po predtrénovaní modelu mu môžeme poskytnúť dávku obrázkov a dávku textových podnetov, pričom výsledkom bude tenzor s pravdepodobnosťami. CLIP sa dá použiť na niekoľko úloh: + +**Klasifikácia obrázkov** + +Predpokladajme, že potrebujeme klasifikovať obrázky, napríklad medzi mačkami, psami a ľuďmi. V tomto prípade môžeme modelu poskytnúť obrázok a sériu textových podnetov: "*obrázok mačky*", "*obrázok psa*", "*obrázok človeka*". Vo výslednom vektore s 3 pravdepodobnosťami stačí vybrať index s najvyššou hodnotou. + +![CLIP pre klasifikáciu obrázkov](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sk.png) + +> *Obrázok z [tohto blogového príspevku](https://openai.com/blog/clip/)* + +**Vyhľadávanie obrázkov na základe textu** + +Môžeme postupovať aj opačne. Ak máme kolekciu obrázkov, môžeme túto kolekciu poskytnúť modelu spolu s textovým podnetom – výsledkom bude obrázok, ktorý je najviac podobný danému podnetu. + +## ✍️ Príklad: [Použitie CLIP na klasifikáciu obrázkov a vyhľadávanie obrázkov](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Otvorte [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) notebook, aby ste videli CLIP v akcii. + +## Generovanie obrázkov s VQGAN+CLIP + +CLIP sa dá použiť aj na **generovanie obrázkov** z textového podnetu. Na to potrebujeme **generátorový model**, ktorý dokáže generovať obrázky na základe nejakého vektorového vstupu. Jedným z takýchto modelov je [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Hlavné myšlienky VQGAN, ktoré ho odlišujú od bežného [GAN](../../4-ComputerVision/10-GANs/README.md), sú nasledovné: +* Použitie autoregresívnej transformerovej architektúry na generovanie sekvencie kontextovo bohatých vizuálnych častí, ktoré tvoria obrázok. Tieto vizuálne časti sa učia pomocou [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Použitie diskriminátora sub-obrázkov, ktorý zisťuje, či časti obrázka sú "skutočné" alebo "falošné" (na rozdiel od prístupu "všetko alebo nič" v tradičných GAN). + +Viac o VQGAN sa dozviete na webovej stránke [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Jedným z dôležitých rozdielov medzi VQGAN a tradičným GAN je, že tradičný GAN dokáže vytvoriť slušný obrázok z akéhokoľvek vstupného vektora, zatiaľ čo VQGAN pravdepodobne vytvorí obrázok, ktorý nebude koherentný. Preto je potrebné ďalej usmerňovať proces tvorby obrázka, čo sa dá dosiahnuť pomocou CLIP. + +![Architektúra VQGAN+CLIP](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sk.png) + +Na generovanie obrázka zodpovedajúceho textovému podnetu začíname s náhodným kódovacím vektorom, ktorý prechádza cez VQGAN a vytvára obrázok. Potom sa použije CLIP na vytvorenie stratovej funkcie, ktorá ukazuje, ako dobre obrázok zodpovedá textovému podnetu. Cieľom je minimalizovať túto stratu pomocou spätného šírenia na úpravu parametrov vstupného vektora. + +Skvelá knižnica, ktorá implementuje VQGAN+CLIP, je [Pixray](http://github.com/pixray/pixray). + +![Obrázok vytvorený Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sk.png) | ![Obrázok vytvorený Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sk.png) | ![Obrázok vytvorený Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sk.png) +----|----|---- +Obrázok vytvorený z podnetu *detailný akvarelový portrét mladého učiteľa literatúry s knihou* | Obrázok vytvorený z podnetu *detailný olejový portrét mladej učiteľky informatiky s počítačom* | Obrázok vytvorený z podnetu *detailný olejový portrét starého učiteľa matematiky pred tabuľou* + +> Obrázky z kolekcie **Umelí učitelia** od [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E je verzia GPT-3 trénovaná na generovanie obrázkov z podnetov. Bol trénovaný s 12 miliardami parametrov. + +Na rozdiel od CLIP prijíma DALL-E text aj obrázok ako jeden tok tokenov pre obrázky aj text. Preto je možné z viacerých podnetov generovať obrázky na základe textu. + +### [DALL-E 2](https://openai.com/dall-e-2) +Hlavný rozdiel medzi DALL-E 1 a 2 je v tom, že DALL-E 2 generuje realistickejšie obrázky a umenie. + +Príklady generovania obrázkov s DALL-E: +![Obrázok vytvorený 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.sk.png) | ![Obrázok vytvorený 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.sk.png) | ![Obrázok vytvorený 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.sk.png) +----|----|---- +Obrázok vytvorený z podnetu *detailný akvarelový portrét mladého učiteľa literatúry s knihou* | Obrázok vytvorený z podnetu *detailný olejový portrét mladej učiteľky informatiky s počítačom* | Obrázok vytvorený z podnetu *detailný olejový portrét starého učiteľa matematiky pred tabuľou* + +## Referencie + +* Článok o VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Článok o CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/sketchnotes/LICENSE.md b/translations/sk/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..61fd256a --- /dev/null +++ b/translations/sk/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,196 @@ + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation („Creative Commons“) nie je advokátska kancelária a neposkytuje právne služby ani právne poradenstvo. Distribúcia verejných licencií Creative Commons nevytvára vzťah medzi advokátom a klientom ani iný vzťah. Creative Commons sprístupňuje svoje licencie a súvisiace informácie „tak, ako sú“. Creative Commons neposkytuje žiadne záruky týkajúce sa svojich licencií, akéhokoľvek materiálu licencovaného podľa ich podmienok, ani súvisiacich informácií. Creative Commons sa v maximálnej možnej miere zrieka akejkoľvek zodpovednosti za škody vyplývajúce z ich použitia. + +Používanie verejných licencií Creative Commons + +Verejné licencie Creative Commons poskytujú štandardný súbor podmienok, ktoré môžu autori a iní držitelia práv použiť na zdieľanie originálnych autorských diel a iného materiálu podliehajúceho autorským právam a určitým ďalším právam špecifikovaným v licencii uvedenej nižšie. Nasledujúce úvahy slúžia len na informačné účely, nie sú vyčerpávajúce a nie sú súčasťou našich licencií. + + Úvahy pre poskytovateľov licencií: Naše verejné licencie sú + určené na použitie osobami, ktoré sú oprávnené udeliť verejnosti + povolenie na používanie materiálu spôsobmi, ktoré by inak boli + obmedzené autorským právom a určitými ďalšími právami. Naše + licencie sú neodvolateľné. Poskytovatelia licencií by si mali + prečítať a porozumieť podmienkam licencie, ktorú si vyberú, pred + jej použitím. Poskytovatelia licencií by si mali zabezpečiť všetky + potrebné práva pred použitím našich licencií, aby verejnosť mohla + materiál používať podľa očakávaní. Poskytovatelia licencií by mali + jasne označiť akýkoľvek materiál, ktorý nie je predmetom licencie. + To zahŕňa iný materiál licencovaný pod CC alebo materiál používaný + na základe výnimky alebo obmedzenia autorského práva. Viac úvah + pre poskytovateľov licencií: + wiki.creativecommons.org/Considerations_for_licensors + + Úvahy pre verejnosť: Použitím jednej z našich verejných licencií + poskytovateľ licencie udeľuje verejnosti povolenie na používanie + licencovaného materiálu podľa špecifikovaných podmienok. Ak + povolenie poskytovateľa licencie nie je potrebné z akéhokoľvek + dôvodu – napríklad kvôli výnimke alebo obmedzeniu autorského práva + – potom takéto použitie nie je regulované licenciou. Naše licencie + udeľujú len povolenia podľa autorského práva a určitých ďalších + práv, ktoré je poskytovateľ licencie oprávnený udeliť. Používanie + licencovaného materiálu môže byť stále obmedzené z iných dôvodov, + vrátane toho, že iní majú autorské práva alebo iné práva na + materiál. Poskytovateľ licencie môže mať špeciálne požiadavky, + napríklad žiadosť, aby boli všetky zmeny označené alebo opísané. + Hoci to nie je vyžadované našimi licenciami, odporúča sa rešpektovať + tieto požiadavky, ak sú rozumné. Viac úvah pre verejnosť: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public License + +Používaním Licencovaných práv (definovaných nižšie) prijímate a súhlasíte +s tým, že budete viazaní podmienkami tejto Creative Commons Attribution- +ShareAlike 4.0 International Public License („Verejná licencia“). V rozsahu, +v akom môže byť táto Verejná licencia interpretovaná ako zmluva, Vám sú +udelené Licencované práva na základe Vášho prijatia týchto podmienok, a +Poskytovateľ licencie Vám udeľuje tieto práva na základe výhod, ktoré +Poskytovateľ licencie získava sprístupnením Licencovaného materiálu podľa +týchto podmienok. + + +Sekcia 1 – Definície. + + a. Upravený materiál znamená materiál podliehajúci autorským právam a + podobným právam, ktorý je odvodený od alebo založený na Licencovanom + materiáli a v ktorom je Licencovaný materiál preložený, upravený, + usporiadaný, transformovaný alebo inak modifikovaný spôsobom + vyžadujúcim povolenie podľa autorských práv a podobných práv + držaných Poskytovateľom licencie. Na účely tejto Verejnej licencie, + ak je Licencovaný materiál hudobné dielo, výkon alebo zvuková + nahrávka, Upravený materiál je vždy vytvorený, keď je Licencovaný + materiál synchronizovaný v časovom vzťahu s pohyblivým obrazom. + + b. Licencia adaptéra znamená licenciu, ktorú uplatňujete na svoje + autorské práva a podobné práva vo svojich príspevkoch k Upravenému + materiálu v súlade s podmienkami tejto Verejnej licencie. + + c. Kompatibilná licencia BY-SA znamená licenciu uvedenú na + creativecommons.org/compatiblelicenses, schválenú Creative Commons + ako podstatne ekvivalentnú tejto Verejnej licencii. + + d. Autorské práva a podobné práva znamenajú autorské práva a/alebo + podobné práva úzko súvisiace s autorskými právami vrátane, bez + obmedzenia, výkonu, vysielania, zvukovej nahrávky a práv na + sui generis databázy, bez ohľadu na to, ako sú práva označené alebo + kategorizované. Na účely tejto Verejnej licencie práva špecifikované + v Sekcii 2(b)(1)-(2) nie sú autorské práva a podobné práva. + + e. Účinné technologické opatrenia znamenajú opatrenia, ktoré, v + neprítomnosti riadneho povolenia, nemôžu byť obídené podľa zákonov + plniacich povinnosti podľa článku 11 Zmluvy WIPO o autorských právach + prijatej 20. decembra 1996 a/alebo podobných medzinárodných dohôd. + + f. Výnimky a obmedzenia znamenajú spravodlivé použitie, spravodlivé + zaobchádzanie a/alebo akúkoľvek inú výnimku alebo obmedzenie + autorských práv a podobných práv, ktoré sa vzťahujú na Vaše použitie + Licencovaného materiálu. + + g. Prvky licencie znamenajú atribúty licencie uvedené v názve Verejnej + licencie Creative Commons. Prvky licencie tejto Verejnej licencie sú + Atribúcia a Zdieľanie za rovnakých podmienok. + + h. Licencovaný materiál znamená umelecké alebo literárne dielo, + databázu alebo iný materiál, na ktorý Poskytovateľ licencie uplatnil + túto Verejnú licenciu. + + i. Licencované práva znamenajú práva udelené Vám podľa podmienok tejto + Verejnej licencie, ktoré sú obmedzené na všetky autorské práva a + podobné práva, ktoré sa vzťahujú na Vaše použitie Licencovaného + materiálu a ktoré má Poskytovateľ licencie oprávnenie licencovať. + + j. Poskytovateľ licencie znamená jednotlivca alebo subjekt, ktorý udeľuje + práva podľa tejto Verejnej licencie. + + k. Zdieľať znamená sprístupniť materiál verejnosti akýmkoľvek spôsobom + alebo procesom, ktorý vyžaduje povolenie podľa Licencovaných práv, + ako je reprodukcia, verejné zobrazenie, verejný výkon, distribúcia, + šírenie, komunikácia alebo import, a sprístupniť materiál verejnosti + vrátane spôsobov, ktoré umožňujú členom verejnosti prístup k + materiálu z miesta a v čase, ktorý si individuálne zvolia. + + l. Práva na sui generis databázy znamenajú práva iné ako autorské práva + vyplývajúce zo smernice 96/9/ES Európskeho parlamentu a Rady z 11. + marca 1996 o právnej ochrane databáz, v znení neskorších predpisov + a/alebo nástupcov, ako aj iné podstatne ekvivalentné práva kdekoľvek + na svete. + + m. Vy znamená jednotlivca alebo subjekt, ktorý uplatňuje Licencované + práva podľa tejto Verejnej licencie. Vaše má zodpovedajúci význam. +Práva, potom databáza, v ktorej máte práva Sui Generis Database Rights (ale nie jej jednotlivé obsahy), je Adaptovaný materiál, + +vrátane na účely oddielu 3(b); a +c. Musíte dodržiavať podmienky uvedené v oddiele 3(a), ak zdieľate celý alebo podstatnú časť obsahu databázy. + +Pre vyjasnenie, tento oddiel 4 dopĺňa a nenahrádza vaše povinnosti podľa tejto verejnej licencie, ak licencované práva zahŕňajú iné autorské práva a podobné práva. + +--- + +Oddiel 5 -- Zrieknutie sa záruk a obmedzenie zodpovednosti. + +a. POKIAĽ NIE JE LICENCOR SAMOSTATNE INAK ZAVIAZANÝ, V MAXIMÁLNOM MOŽNOM ROZSAHU PONÚKA LICENCOR LICENCOVANÝ MATERIÁL TAK, AKO JE, A TAK, AKO JE DOSTUPNÝ, A NEPOSKYTUJE ŽIADNE VYHLÁSENIA ANI ZÁRUKY AKÉHOKOĽVEK DRUHU TÝKAJÚCE SA LICENCOVANÉHO MATERIÁLU, ČI UŽ VÝSLOVNÉ, IMPLICITNÉ, ZÁKONNÉ ALEBO INÉ. TO ZAHŔŇA, BEZ OBMEDZENIA, ZÁRUKY VLASTNÍCTVA, OBCHODOVATEĽNOSTI, VHODNOSTI NA KONKRÉTNY ÚČEL, NEPORUŠENIA, ABSENCIE SKRYTÝCH ALEBO INÝCH VÁD, PRESNOSTI ALEBO PRÍTOMNOSTI ČI ABSENCIE CHÝB, ČI UŽ ZNÁMYCH ALEBO OBJAVITEĽNÝCH. TAM, KDE ZRIEKNUTIE SA ZÁRUK NIE JE POVOLENÉ V PLNOM ROZSAHU ALEBO ČIASTOČNE, TOTO ZRIEKNUTIE SA NA VÁS NEMUSÍ VZŤAHOVAŤ. + +b. V MAXIMÁLNOM MOŽNOM ROZSAHU LICENCOR V ŽIADNOM PRÍPADE NEBUDE ZODPOVEDNÝ VOČI VÁM NA ZÁKLADE ŽIADNEJ PRÁVNEJ TEÓRIE (VRÁTANE, BEZ OBMEDZENIA, NEDBANLIVOSTI) ALEBO INAK ZA AKÉKOĽVEK PRIAME, ŠPECIÁLNE, NEPRIAME, NÁHODNÉ, NÁSLEDNÉ, TRESTNÉ, EXEMPLÁRNE ALEBO INÉ STRATY, NÁKLADY, VÝDAVKY ALEBO ŠKODY VYPLÝVAJÚCE Z TEJTO VEREJNEJ LICENCIE ALEBO POUŽÍVANIA LICENCOVANÉHO MATERIÁLU, AJ KEĎ BOL LICENCOR UPOZORNENÝ NA MOŽNOSŤ TAKÝCHTO STRÁT, NÁKLADOV, VÝDAVKOV ALEBO ŠKÔD. TAM, KDE OBMEDZENIE ZODPOVEDNOSTI NIE JE POVOLENÉ V PLNOM ROZSAHU ALEBO ČIASTOČNE, TOTO OBMEDZENIE SA NA VÁS NEMUSÍ VZŤAHOVAŤ. + +c. Zrieknutie sa záruk a obmedzenie zodpovednosti uvedené vyššie sa má interpretovať spôsobom, ktorý, v maximálnom možnom rozsahu, najviac pripomína absolútne zrieknutie sa a vzdanie sa všetkej zodpovednosti. + +--- + +Oddiel 6 -- Trvanie a ukončenie. + +a. Táto verejná licencia platí počas trvania autorských práv a podobných práv licencovaných tu. Ak však nedodržíte túto verejnú licenciu, vaše práva podľa tejto verejnej licencie sa automaticky ukončia. + +b. Ak vaše právo používať licencovaný materiál bolo ukončené podľa oddielu 6(a), obnoví sa: + +1. automaticky k dátumu, keď bola porušenie napravené, za predpokladu, že bolo napravené do 30 dní od vášho zistenia porušenia; alebo +2. na základe výslovného obnovenia zo strany Licencora. + +Pre vyjasnenie, tento oddiel 6(b) neovplyvňuje žiadne právo Licencora hľadať nápravu za vaše porušenia tejto verejnej licencie. + +c. Pre vyjasnenie, Licencor môže tiež ponúknuť licencovaný materiál za samostatných podmienok alebo zastaviť distribúciu licencovaného materiálu kedykoľvek; avšak, toto nezruší túto verejnú licenciu. + +d. Oddiely 1, 5, 6, 7 a 8 zostávajú v platnosti po ukončení tejto verejnej licencie. + +--- + +Oddiel 7 -- Iné podmienky. + +a. Licencor nie je viazaný žiadnymi dodatočnými alebo odlišnými podmienkami komunikovanými vami, pokiaľ s nimi výslovne nesúhlasí. + +b. Akékoľvek dohody, porozumenia alebo zmluvy týkajúce sa licencovaného materiálu, ktoré nie sú uvedené tu, sú oddelené od a nezávislé od podmienok tejto verejnej licencie. + +--- + +Oddiel 8 -- Interpretácia. + +a. Pre vyjasnenie, táto verejná licencia neznižuje, neobmedzuje, neobmedzuje ani neukladá podmienky na akékoľvek použitie licencovaného materiálu, ktoré by mohlo byť zákonne vykonané bez povolenia podľa tejto verejnej licencie. + +b. V maximálnom možnom rozsahu, ak sa akékoľvek ustanovenie tejto verejnej licencie považuje za nevymáhateľné, automaticky sa upraví na minimálny rozsah potrebný na jeho vymáhateľnosť. Ak ustanovenie nemôže byť upravené, bude oddelené od tejto verejnej licencie bez ovplyvnenia vymáhateľnosti zostávajúcich podmienok. + +c. Žiadna podmienka tejto verejnej licencie nebude zrušená a žiadne nedodržanie nebude schválené, pokiaľ s tým výslovne nesúhlasí Licencor. + +d. Nič v tejto verejnej licencii nepredstavuje ani nemôže byť interpretované ako obmedzenie alebo vzdanie sa akýchkoľvek výsad a imunít, ktoré sa vzťahujú na Licencora alebo vás, vrátane právnych procesov akejkoľvek jurisdikcie alebo autority. + +--- + +======================================================================= + +Creative Commons nie je stranou svojich verejných licencií. Napriek tomu sa Creative Commons môže rozhodnúť použiť jednu zo svojich verejných licencií na materiál, ktorý publikuje, a v týchto prípadoch bude považovaný za „Licencora“. Text verejných licencií Creative Commons je venovaný verejnej doméne pod CC0 Public Domain Dedication. Okrem obmedzeného účelu označenia, že materiál je zdieľaný pod verejnou licenciou Creative Commons alebo ako inak povolené politikami Creative Commons publikovanými na creativecommons.org/policies, Creative Commons neautorizuje použitie ochrannej známky „Creative Commons“ alebo akejkoľvek inej ochrannej známky alebo loga Creative Commons bez predchádzajúceho písomného súhlasu, vrátane, bez obmedzenia, v súvislosti s akýmikoľvek neoprávnenými úpravami akýchkoľvek jeho verejných licencií alebo akýchkoľvek iných dohôd, porozumení alebo zmlúv týkajúcich sa použitia licencovaného materiálu. Pre vyjasnenie, tento odsek nie je súčasťou verejných licencií. + +Creative Commons môžete kontaktovať na creativecommons.org. + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sk/lessons/sketchnotes/README.md b/translations/sk/lessons/sketchnotes/README.md new file mode 100644 index 00000000..90c775f8 --- /dev/null +++ b/translations/sk/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Všetky sketchnoty z učebných osnov si môžete stiahnuť tu. + +🎨 Vytvorila: 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/) + +**Zrieknutie sa zodpovednosti**: +Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file diff --git a/translations/sl/README.md b/translations/sl/README.md new file mode 100644 index 00000000..490c0b9b --- /dev/null +++ b/translations/sl/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) + +# Umetna inteligenca za začetnike - Kurikulum + +|![ Sketchnote by [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI za začetnike - _Sketchnote by [@girlie_mac](https://twitter.com/girlie_mac)_ | + +Raziskujte svet **umetne inteligence** (AI) z našim 12-tedenskim kurikulumom, ki vključuje 24 lekcij! Vsebuje praktične lekcije, kvize in laboratorijske vaje. Kurikulum je prijazen začetnikom in pokriva orodja, kot sta TensorFlow in PyTorch, ter etiko v AI. + +## Kaj boste spoznali + +**[Miselni zemljevid tečaja](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** + +V tem kurikulumu boste spoznali: + +* Različne pristope k umetni inteligenci, vključno z "dobrim starim" simbolnim pristopom z **predstavitvijo znanja** in sklepanjem ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Nevronske mreže** in **globoko učenje**, ki sta jedro sodobne umetne inteligence. Koncepte teh pomembnih tem bomo ponazorili s kodo v dveh najbolj priljubljenih ogrodjih - [TensorFlow](http://Tensorflow.org) in [PyTorch](http://pytorch.org). +* **Nevronske arhitekture** za delo s slikami in besedilom. Pokrili bomo nedavne modele, vendar morda ne bomo zajeli najnovejših dosežkov. +* Manj priljubljene pristope AI, kot so **genetski algoritmi** in **sistemi z več agenti**. + +Kaj ne bomo pokrili v tem kurikulumu: + +> [Poiščite vse dodatne vire za ta tečaj v naši zbirki Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) + +* Poslovne primere uporabe **AI v poslovanju**. Razmislite o tečaju [Uvod v AI za poslovne uporabnike](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) na Microsoft Learn ali [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), razvit v sodelovanju z [INSEAD](https://www.insead.edu/). +* **Klasično strojno učenje**, ki je dobro opisano v našem [kurikulumu Strojno učenje za začetnike](http://github.com/Microsoft/ML-for-Beginners). +* Praktične aplikacije AI, zgrajene z uporabo **[Cognitive Services](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Za to priporočamo, da začnete z moduli Microsoft Learn za [vizijo](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [obdelavo naravnega jezika](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generativno AI z Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** in druge. +* Specifična **oblaka ML ogrodja**, kot so [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) ali [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Razmislite o uporabi učnih poti [Build and operate machine learning solutions with Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) in [Build and Operate Machine Learning Solutions with Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **Pogovorna AI** in **klepetalni roboti**. Obstaja ločena učna pot [Ustvarite pogovorne AI rešitve](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), prav tako pa lahko preberete [ta blog prispevek](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) za več podrobnosti. +* **Globoka matematika** za globoko učenje. Za to priporočamo knjigo [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) avtorjev Ian Goodfellow, Yoshua Bengio in Aaron Courville, ki je na voljo tudi na spletu na [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). + +Za uvod v teme _AI v oblaku_ razmislite o učni poti [Začnite z umetno inteligenco na Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). + +# Vsebina + +| | Povezava do lekcije | PyTorch/Keras/TensorFlow | Laboratorij | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Nastavitev tečaja](./lessons/0-course-setup/setup.md) | [Nastavite svoje razvojno okolje](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Uvod v AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Uvod in zgodovina AI](./lessons/1-Intro/README.md) | - | - | +| II | **Simbolna AI** | +| 02 | [Predstavitev znanja in ekspertni sistemi](./lessons/2-Symbolic/README.md) | [Ekspertni sistemi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologija](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Konceptni graf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Uvod v nevronske mreže**](./lessons/3-NeuralNetworks/README.md) ||| +| 03 | [Perceptron](./lessons/3-NeuralNetworks/03-Perceptron/README.md) | [Zvezek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) | [Laboratorij](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Večplastni perceptron in ustvarjanje lastnega ogrodja](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Zvezek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Laboratorij](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Uvod v ogrodja (PyTorch/TensorFlow) in prenaučenje](./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) | [Laboratorij](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Računalniški vid**](./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)| [Raziskovanje računalniškega vida na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Uvod v računalniški vid. OpenCV](./lessons/4-ComputerVision/06-IntroCV/README.md) | [Zvezek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) | [Laboratorij](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Konvolucijske nevronske mreže](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Arhitekture 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) | [Laboratorij](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Vnaprej naučena omrežja in prenos učenja](./lessons/4-ComputerVision/08-TransferLearning/README.md) in [Triki za učenje](./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) | [Laboratorij](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | +| 09 | [Avtoenkoderji in 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 | [Generativna nasprotujoča si omrežja in prenos umetniškega sloga](./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 | [Prepoznavanje objektov](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratorij](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | +| 12 | [Semantična segmentacija. 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 | [**Obdelava naravnega jezika**](./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) | [Raziščite obdelavo naravnega jezika na Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Predstavitev besedila. 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 | [Semantične besedne vektorske predstavitve. Word2Vec in 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 | [Jezikovno modeliranje. Ustvarjanje lastnih vektorskih predstavitev](./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) | [Laboratorij](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | +| 16 | [Rekurentna nevronska omrežja](./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 | [Generativna rekurentna omrežja](./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) | [Laboratorij](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| 18 | [Transformerji. 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 | [Prepoznavanje imenovanih entitet](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorij](./lessons/5-NLP/19-NER/lab/README.md) | +| 20 | [Veliki jezikovni modeli, programiranje z navodili in naloge z malo primeri](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Druge tehnike umetne inteligence** || | +| 21 | [Genetski algoritmi](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Zvezek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | +| 22 | [Globoko okrepljeno učenje](./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) | [Laboratorij](./lessons/6-Other/22-DeepRL/lab/README.md) | +| 23 | [Sistemi z več agenti](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Etika umetne inteligence** | | | +| 24 | [Etika umetne inteligence in odgovorna umetna inteligenca](./lessons/7-Ethics/README.md) | [Microsoft Learn: Načela odgovorne umetne inteligence](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Dodatki** | | | +| 25 | [Večmodalna omrežja, CLIP in VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Zvezek](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | + +## Vsaka lekcija vsebuje + +* Gradivo za predhodno branje +* Izvedljive Jupyterjeve zvezke, ki so pogosto specifični za ogrodje (**PyTorch** ali **TensorFlow**). Izvedljivi zvezek vsebuje tudi veliko teoretičnega gradiva, zato je za razumevanje teme potrebno preučiti vsaj eno različico zvezka (bodisi PyTorch bodisi TensorFlow). +* **Laboratorije**, ki so na voljo za nekatere teme in vam omogočajo, da preizkusite uporabo naučenega gradiva na določenem problemu. +* Nekateri razdelki vsebujejo povezave do modulov [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum), ki pokrivajo sorodne teme. + +## Začetek + +- Pripravili smo [lekcijo za nastavitev](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md), ki vam bo pomagala pri nastavitvi vašega razvojnega okolja. - Za izobraževalce smo pripravili tudi [lekcijo za nastavitev kurikuluma](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md)! +- Kako [zagnati kodo v VSCode ali Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) + +Sledite tem korakom: + +Forkajte repozitorij: Kliknite na gumb "Fork" v zgornjem desnem kotu te strani. + +Klonirajte repozitorij: `git clone https://github.com/microsoft/AI-For-Beginners.git` + +Ne pozabite označiti (🌟) tega repozitorija, da ga boste lažje našli kasneje. + +## Spoznajte druge učence + +Pridružite se našemu [uradnemu AI Discord strežniku](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum), da spoznate in se povežete z drugimi učenci, ki obiskujejo ta tečaj, ter prejmete podporo. + +Če imate povratne informacije o izdelku ali vprašanja med gradnjo, obiščite naš [Azure AI Foundry Developer Forum](https://aka.ms/foundry/forum) + +## Kvizi +> **Opomba o kvizih**: Vsi kvizi se nahajajo v mapi Quiz-app v etc\quiz-app. Povezani so znotraj lekcij, aplikacijo za kvize pa je mogoče zagnati lokalno ali namestiti na Azure; sledite navodilom v mapi `quiz-app`. Postopoma se lokalizirajo. +## Potrebna pomoč + +Imate predloge ali ste našli napake v črkovanju ali kodi? Odprite težavo ali ustvarite zahtevo za združitev. + +## Posebna zahvala + +* **✍️ Glavni avtor:** [Dmitry Soshnikov](http://soshnikov.com), doktor znanosti +* **🔥 Urednica:** [Jen Looper](https://twitter.com/jenlooper), doktor znanosti +* **🎨 Ilustratorka skic:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Ustvarjalka kvizov:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Glavni sodelavci:** [Evgenii Pishchik](https://github.com/Pe4enIks) + +## Drugi učni načrti + +Naša ekipa ustvarja tudi druge učne načrte! Oglejte si: + +- [Generativna umetna inteligenca za začetnike](https://aka.ms/genai-beginners) +- [Generativna umetna inteligenca za začetnike .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generativna umetna inteligenca z JavaScriptom](https://github.com/microsoft/generative-ai-with-javascript) +- [Generativna umetna inteligenca z Javo](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [Umetna inteligenca za začetnike](https://aka.ms/ai-beginners) +- [Podatkovna znanost za začetnike](https://aka.ms/datascience-beginners) +- [Strojno učenje za začetnike](https://aka.ms/ml-beginners) +- [Kibernetska varnost za začetnike](https://github.com/microsoft/Security-101) +- [Spletni razvoj za začetnike](https://aka.ms/webdev-beginners) +- [IoT za začetnike](https://aka.ms/iot-beginners) +- [Razvoj XR za začetnike](https://github.com/microsoft/xr-development-for-beginners) +- [Obvladovanje GitHub Copilot za agentno uporabo](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Obvladovanje GitHub Copilot za razvijalce C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Izberite svojo lastno Copilot pustolovščino](https://github.com/microsoft/CopilotAdventures) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/SECURITY.md b/translations/sl/SECURITY.md new file mode 100644 index 00000000..a1f25f40 --- /dev/null +++ b/translations/sl/SECURITY.md @@ -0,0 +1,49 @@ + +## Varnost + +Microsoft jemlje varnost svojih programsko-opremskih izdelkov in storitev resno, kar vključuje vse repozitorije izvorne kode, ki jih upravljajo naše GitHub organizacije, med katerimi so [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) in [naše GitHub organizacije](https://opensource.microsoft.com/). + +Če menite, da ste odkrili varnostno ranljivost v katerem koli repozitoriju v lasti Microsofta, ki ustreza [Microsoftovi definiciji varnostne ranljivosti](https://aka.ms/opensource/security/definition), nam to, prosimo, prijavite, kot je opisano spodaj. + +## Prijava varnostnih težav + +**Prosimo, ne prijavljajte varnostnih ranljivosti prek javnih GitHub težav.** + +Namesto tega jih prijavite Microsoftovemu centru za odzivanje na varnost (MSRC) na [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +Če želite prijavo oddati brez prijave, pošljite e-pošto na [secure@microsoft.com](mailto:secure@microsoft.com). Če je mogoče, šifrirajte svoje sporočilo z našim PGP ključem; prenesite ga s strani [Microsoft Security Response Center PGP Key](https://aka.ms/opensource/security/pgpkey). + +Odgovor bi morali prejeti v 24 urah. Če ga iz kakršnega koli razloga ne prejmete, nas ponovno kontaktirajte prek e-pošte, da zagotovite, da smo prejeli vaše prvotno sporočilo. Dodatne informacije najdete na [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Prosimo, vključite spodaj navedene zahtevane informacije (kolikor jih lahko zagotovite), da nam pomagate bolje razumeti naravo in obseg možne težave: + + * Vrsta težave (npr. prekoračitev medpomnilnika, SQL vbrizgavanje, skriptanje na strani odjemalca itd.) + * Polne poti do izvornih datotek, povezanih z manifestacijo težave + * Lokacija prizadete izvorne kode (oznaka/veja/commita ali neposredni URL) + * Kakršna koli posebna konfiguracija, potrebna za ponovitev težave + * Korak za korakom navodila za ponovitev težave + * Dokaz koncepta ali izkoriščevalna koda (če je mogoče) + * Vpliv težave, vključno s tem, kako bi napadalec lahko izkoristil težavo + +Te informacije nam bodo pomagale hitreje obravnavati vaše poročilo. + +Če poročate v okviru programa za nagrade za napake, lahko bolj popolna poročila prispevajo k višji nagradi. Prosimo, obiščite našo stran [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) za več podrobnosti o naših aktivnih programih. + +## Prednostni jeziki + +Zaželeno je, da so vsa sporočila v angleščini. + +## Politika + +Microsoft sledi načelu [usklajenega razkritja ranljivosti](https://aka.ms/opensource/security/cvd). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/CODE_OF_CONDUCT.md b/translations/sl/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..2433ce6a --- /dev/null +++ b/translations/sl/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Microsoftov kodeks ravnanja za odprtokodno programsko opremo + +Ta projekt je sprejel [Microsoftov kodeks ravnanja za odprtokodno programsko opremo](https://opensource.microsoft.com/codeofconduct/). + +Viri: + +- [Microsoftov kodeks ravnanja za odprtokodno programsko opremo](https://opensource.microsoft.com/codeofconduct/) +- [Pogosta vprašanja o kodeksu ravnanja](https://opensource.microsoft.com/codeofconduct/faq/) +- Za vprašanja ali pomisleke se obrnite na [opencode@microsoft.com](mailto:opencode@microsoft.com) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/CONTRIBUTING.md b/translations/sl/etc/CONTRIBUTING.md new file mode 100644 index 00000000..a2be96ea --- /dev/null +++ b/translations/sl/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# Prispevanje + +Ta projekt pozdravlja prispevke in predloge. Večina prispevkov zahteva, da se strinjate s Pogodbo o licenciranju prispevkov (CLA), s katero potrjujete, da imate pravico in dejansko podeljujete pravice za uporabo vašega prispevka. Za podrobnosti obiščite https://cla.microsoft.com. + +Ko oddate zahtevo za združitev (pull request), bo CLA-bot samodejno preveril, ali morate predložiti CLA, in ustrezno označil PR (npr. z oznako ali komentarjem). Preprosto sledite navodilom, ki jih zagotovi bot. To boste morali storiti le enkrat za vse repozitorije, ki uporabljajo naš CLA. + +Ta projekt je sprejel [Microsoftov kodeks ravnanja za odprto kodo](https://opensource.microsoft.com/codeofconduct/). Za več informacij si oglejte [pogosta vprašanja o kodeksu ravnanja](https://opensource.microsoft.com/codeofconduct/faq/) ali se obrnite na [opencode@microsoft.com](mailto:opencode@microsoft.com) za dodatna vprašanja ali komentarje. + +# Iščemo prispevke + +Trenutno aktivno iščemo prispevke na naslednjih področjih: + +- [ ] Napišite razdelek o globokem okrepljenem učenju +- [ ] Izboljšajte razdelek + beležko o prepoznavanju objektov +- [ ] PyTorch Lightning (za [ta razdelek](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Napišite razdelek + primere o prepoznavanju poimenovanih entitet +- [ ] Ustvarite primere za učenje lastnih vgrajenih predstavitev za [ta razdelek](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/Mindmap.md b/translations/sl/etc/Mindmap.md new file mode 100644 index 00000000..4395e7b7 --- /dev/null +++ b/translations/sl/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# Umetna inteligenca (UI) + +## [Uvod v UI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Definicija UI + - Zgodovina UI + - Pristopi k UI + - Top-down/simbolični + - Bottom-up/nevronski + - Evolucijski + - Sinergijski / emergentni UI + - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) + +## [Simbolični UI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Predstavljanje znanja + - [Ekspertni sistemi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontologije](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Semantični splet + +## [Nevronske mreže](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) + - [Večplastne mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Uvod v ogrodja](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) + - [Prenaučenost](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) + +## [Računalniški vid](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Na MS Learn + - [Osnove UI: Raziskovanje računalniškega vida](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [Računalniški vid s PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [Računalniški vid s TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Uvod v računalniški vid. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Konvolucijske mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Arhitekture CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Prenos učenja](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Triki za učenje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Avtoenkoderji in VAE](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Generativne adversarne mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Prenos sloga](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Prepoznavanje objektov](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Segmentacija](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) + +## [Obdelava naravnega jezika (NLP)](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Na MS Learn + - [Osnove UI: Raziskovanje NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP s PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP s TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Predstavljanje besedila](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Vreča besed (Bag of Words) + - TF/IDF + - [Semantične vektorske predstavitve](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Modeliranje jezika](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Rekurentne nevronske mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Generativne rekurentne mreže](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformerji in BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Prepoznavanje imenovanih entitet](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Generiranje besedila in GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) + +## Druge tehnike + - [Genetski algoritmi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Globoko okrepljeno učenje](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Sistemi z več agenti](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Etika UI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn o odgovorni UI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Dodatki + - [Multimodalne mreže](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 + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/SUPPORT.md b/translations/sl/etc/SUPPORT.md new file mode 100644 index 00000000..c6bb2f29 --- /dev/null +++ b/translations/sl/etc/SUPPORT.md @@ -0,0 +1,23 @@ + +# Podpora + +## Kako prijaviti težave in dobiti pomoč + +Ta projekt uporablja GitHub Issues za sledenje napakam in zahtevam za nove funkcije. Preden prijavite novo težavo, preverite obstoječe težave, da se izognete podvajanju. Za nove težave prijavite svojo napako ali zahtevo za funkcijo kot novo težavo. + +Za pomoč in vprašanja o uporabi tega projekta uporabite razpravljalne forume. + +## Microsoftova politika podpore + +Podpora za ta projekt je omejena na zgoraj navedene vire. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/TRANSLATIONS.md b/translations/sl/etc/TRANSLATIONS.md new file mode 100644 index 00000000..f2518c57 --- /dev/null +++ b/translations/sl/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Prispevajte s prevajanjem lekcij + +Z veseljem sprejemamo prevode lekcij v tem učnem načrtu! + +## Smernice + +V vsaki mapi lekcij in uvodni mapi lekcij so mape, ki vsebujejo prevedene markdown datoteke. + +> Opomba: prosimo, ne prevajajte nobene kode v datotekah z vzorci kode; edine stvari, ki jih je treba prevesti, so README, naloge in kvizi. Hvala! + +Prevedene datoteke naj sledijo temu poimenovanju: + +**README._[language]_.md** + +kjer je _[language]_ dvomestna oznaka jezika po standardu ISO 639-1 (npr. `README.es.md` za španščino in `README.nl.md` za nizozemščino). + +**assignment._[language]_.md** + +Podobno kot README datoteke, prosimo, prevedite tudi naloge. + +**Kvizi** + +1. Dodajte svoj prevod v aplikacijo za kvize tako, da dodate datoteko tukaj: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, z ustreznim poimenovanjem (en.json, fr.json). **Prosimo, ne lokalizirajte besed 'true' ali 'false'. Hvala!** + +2. Dodajte kodo svojega jezika v spustni meni v datoteki App.vue aplikacije za kvize. + +3. Uredite [index.js datoteko prevodov](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) aplikacije za kvize, da dodate svoj jezik. + +4. Na koncu uredite VSE povezave do kvizov v svojih prevedenih README.md datotekah, da neposredno kažejo na vaš prevedeni kviz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 postane https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id + +**HVALA** + +Resnično cenimo vaš trud! + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/etc/quiz-app/README.md b/translations/sl/etc/quiz-app/README.md new file mode 100644 index 00000000..a98095d9 --- /dev/null +++ b/translations/sl/etc/quiz-app/README.md @@ -0,0 +1,136 @@ + +# Kvizi + +Ti kvizi so pred- in po-predavanji kvizi za učni načrt umetne inteligence na https://aka.ms/ai-beginners + +## Dodajanje prevedenega nabora kvizov + +Prevod kviza dodate tako, da ustvarite ustrezne strukture kvizov v mapah `assets/translations`. Izvirni kvizi so v `assets/translations/en`. Kvizi so razdeljeni v več skupin po lekcijah. Poskrbite, da bo številčenje usklajeno s pravilnim razdelkom kviza. V tem učnem načrtu je skupaj 40 kvizov, številčenje pa se začne pri 0. + +Po urejanju prevodov uredite datoteko index.js v mapi za prevode, da uvozite vse datoteke v skladu s konvencijami v `en`. + +Uredite datoteko `index.js` v `assets/translations`, da uvozite nove prevedene datoteke. + +Nato uredite spustni meni v `App.vue` v tej aplikaciji, da dodate svoj jezik. Ujemajte lokalizirano okrajšavo z imenom mape za vaš jezik. + +Na koncu uredite vse povezave do kvizov v prevedenih lekcijah, če obstajajo, tako da vključite to lokalizacijo kot parameter poizvedbe: `?loc=fr` na primer. + +## Nastavitev projekta + +``` +npm install +``` + +### Prevajanje in samodejno osveževanje za razvoj + +``` +npm run serve +``` + +### Prevajanje in minimiziranje za produkcijo + +``` +npm run build +``` + +### Preverjanje kode in odpravljanje napak + +``` +npm run lint +``` + +### Prilagoditev konfiguracije + +Glejte [Referenca konfiguracije](https://cli.vuejs.org/config/). + +Zasluge: Zahvala za izvirno različico te aplikacije za kvize: https://github.com/arpan45/simple-quiz-vue + +## Uvajanje na Azure + +Tukaj je korak za korakom vodnik, ki vam bo pomagal začeti: + +1. Fork GitHub repozitorija +Poskrbite, da je koda vaše statične spletne aplikacije v vašem GitHub repozitoriju. Forkajte ta repozitorij. + +2. Ustvarite Azure Static Web App +- Ustvarite [Azure račun](http://azure.microsoft.com) +- Pojdite na [Azure portal](https://portal.azure.com) +- Kliknite na “Create a resource” in poiščite “Static Web App”. +- Kliknite “Create”. + +3. Konfigurirajte Static Web App +- Osnovno: Naročnina: Izberite svojo Azure naročnino. +- Skupina virov: Ustvarite novo skupino virov ali uporabite obstoječo. +- Ime: Določite ime za svojo statično spletno aplikacijo. +- Regija: Izberite regijo, ki je najbližje vašim uporabnikom. + +- #### Podrobnosti uvajanja: +- Vir: Izberite “GitHub”. +- GitHub račun: Pooblastite Azure za dostop do vašega GitHub računa. +- Organizacija: Izberite svojo GitHub organizacijo. +- Repozitorij: Izberite repozitorij, ki vsebuje vašo statično spletno aplikacijo. +- Branch: Izberite vejo, iz katere želite uvajati. + +- #### Podrobnosti gradnje: +- Prednastavitve gradnje: Izberite ogrodje, s katerim je vaša aplikacija zgrajena (npr. React, Angular, Vue itd.). +- Lokacija aplikacije: Določite mapo, ki vsebuje kodo vaše aplikacije (npr. /, če je v korenu). +- Lokacija API-ja: Če imate API, določite njegovo lokacijo (neobvezno). +- Lokacija izhoda: Določite mapo, kjer je ustvarjen izhod gradnje (npr. build ali dist). + +4. Pregled in ustvarjanje +Preglejte svoje nastavitve in kliknite “Create”. Azure bo nastavil potrebne vire in ustvaril GitHub Actions delovni tok v vašem repozitoriju. + +5. GitHub Actions delovni tok +Azure bo samodejno ustvaril GitHub Actions delovni tok datoteko v vašem repozitoriju (.github/workflows/azure-static-web-apps-.yml). Ta delovni tok bo upravljal proces gradnje in uvajanja. + +6. Spremljanje uvajanja +Pojdite na zavihek “Actions” v vašem GitHub repozitoriju. +Videti bi morali, da delovni tok teče. Ta delovni tok bo zgradil in uvedel vašo statično spletno aplikacijo na Azure. +Ko se delovni tok zaključi, bo vaša aplikacija na voljo na dodeljenem Azure URL-ju. + +### Primer datoteke delovnega toka + +Tukaj je primer, kako bi lahko izgledala datoteka GitHub Actions delovnega toka: +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 +``` + +### Dodatni viri +- [Dokumentacija za Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentacija za GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/0-course-setup/for-teachers.md b/translations/sl/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..086084d0 --- /dev/null +++ b/translations/sl/lessons/0-course-setup/for-teachers.md @@ -0,0 +1,35 @@ + +# Za učitelje + +Bi radi uporabili ta učni načrt v svojem razredu? Kar izvolite! + +Pravzaprav ga lahko uporabite kar znotraj GitHuba, tako da uporabite GitHub Classroom. + +Za to morate narediti fork tega repozitorija. Za vsako lekcijo boste morali ustvariti ločen repozitorij, zato boste morali vsako mapo izvleči v ločen repozitorij. Na ta način lahko [GitHub Classroom](https://classroom.github.com/classrooms) vsako lekcijo obravnava ločeno. + +Te [celovite smernice](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) vam bodo dale idejo, kako postaviti svoj razred. + +## Uporaba repozitorija v trenutni obliki + +Če želite uporabiti ta repozitorij v trenutni obliki, brez uporabe GitHub Classroom, je to prav tako mogoče. Svojim učencem boste morali sporočiti, katero lekcijo naj skupaj predelajo. + +V spletnem formatu (Zoom, Teams ali drugo) lahko organizirate ločene sobe za kvize in mentorirate učence, da se pripravijo na učenje. Nato povabite učence, da opravijo kvize in oddajo svoje odgovore kot 'issues' ob določenem času. Podobno lahko ravnate z nalogami, če želite, da učenci sodelujejo javno. + +Če imate raje bolj zaseben format, prosite učence, da forkajo učni načrt, lekcijo za lekcijo, v svoje zasebne GitHub repozitorije, in vam omogočijo dostop. Tako lahko kvize in naloge opravijo zasebno ter jih oddajo prek issues na vašem razrednem repozitoriju. + +Obstaja veliko načinov, kako to prilagoditi spletnemu učnemu okolju. Prosimo, sporočite nam, kaj vam najbolj ustreza! + +## Prosimo, delite svoje mnenje + +Želimo, da ta učni načrt deluje za vas in vaše učence. Prosimo, podajte povratne informacije na forumih za razpravo! + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/0-course-setup/how-to-run.md b/translations/sl/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..86c7e943 --- /dev/null +++ b/translations/sl/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,76 @@ + +# Kako zagnati kodo + +Ta učni načrt vsebuje veliko primerov kode in laboratorijskih vaj, ki jih boste želeli zagnati. Da bi to storili, potrebujete možnost izvajanja Python kode v Jupyter Notebookih, ki so del tega učnega načrta. Na voljo imate več možnosti za zagon kode: + +## Zagon lokalno na vašem računalniku + +Za zagon kode lokalno na vašem računalniku morate imeti nameščeno neko različico Pythona. Osebno priporočam namestitev **[miniconda](https://conda.io/en/latest/miniconda.html)** - gre za precej lahkotno namestitev, ki podpira upravitelja paketov `conda` za različna Python **virtualna okolja**. + +Ko namestite minicondo, morate klonirati repozitorij in ustvariti virtualno okolje, ki ga boste uporabljali za ta tečaj: + +```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 +``` + +### Uporaba Visual Studio Code z razširitvijo za Python + +Verjetno je najboljši način za uporabo učnega načrta, da ga odprete v [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) z [razširitvijo za Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). + +> **Note**: Ko klonirate in odprete mapo v VS Code, vam bo samodejno predlagal namestitev razširitev za Python. Prav tako boste morali namestiti minicondo, kot je opisano zgoraj. + +> **Note**: Če vam VS Code predlaga, da ponovno odprete repozitorij v vsebniku, morate to zavrniti, da uporabite lokalno namestitev Pythona. + +### Uporaba Jupyterja v brskalniku + +Jupyter okolje lahko uporabljate tudi neposredno iz brskalnika na vašem računalniku. Pravzaprav tako klasični Jupyter kot Jupyter Hub nudita precej priročno razvojno okolje z avtomatskim dopolnjevanjem, označevanjem kode itd. + +Za zagon Jupyterja lokalno pojdite v mapo tečaja in izvedite: + +```bash +jupyter notebook +``` +ali +```bash +jupyterhub +``` +Nato lahko odprete katero koli `.ipynb` datoteko, jo odprete in začnete delati. + +### Zagon v vsebniku + +Alternativa namestitvi Pythona je zagon kode v vsebniku. Ker naš repozitorij vsebuje posebno mapo `.devcontainer`, ki določa, kako zgraditi vsebnik za ta repozitorij, vam bo VS Code ponudil možnost, da kodo ponovno odprete v vsebniku. To bo zahtevalo namestitev Dockerja in je nekoliko bolj zapleteno, zato to priporočamo bolj izkušenim uporabnikom. + +## Zagon v oblaku + +Če ne želite namestiti Pythona lokalno in imate dostop do nekaterih oblačnih virov, je dobra alternativa zagon kode v oblaku. Obstaja več načinov, kako to storiti: + +* Uporaba **[GitHub Codespaces](https://github.com/features/codespaces)**, ki je virtualno okolje, ustvarjeno za vas na GitHubu, dostopno prek brskalniškega vmesnika VS Code. Če imate dostop do Codespaces, lahko preprosto kliknete gumb **Code** v repozitoriju, zaženete Codespace in začnete delovati v trenutku. +* Uporaba **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) je brezplačen računalniški vir v oblaku, namenjen ljudem, kot ste vi, za testiranje kode na GitHubu. Na začetni strani je gumb za odpiranje repozitorija v Binderju - to vas bo hitro pripeljalo na Binderjevo stran, ki bo zgradila osnovni vsebnik in brez težav zagnala Jupyterjev spletni vmesnik. + +> **Note**: Da bi preprečili zlorabo, ima Binder dostop do nekaterih spletnih virov blokiran. To lahko prepreči delovanje kode, ki pridobiva modele in/ali podatkovne nabore z javnega interneta. Morda boste morali poiskati nekatere rešitve. Poleg tega so računalniški viri, ki jih ponuja Binder, precej osnovni, zato bo učenje počasno, zlasti pri kasnejših bolj zapletenih lekcijah. + +## Zagon v oblaku z GPU + +Nekatere kasnejše lekcije v tem učnem načrtu bodo močno koristile podpori za GPU, saj bo sicer učenje boleče počasno. Na voljo imate nekaj možnosti, še posebej, če imate dostop do oblaka bodisi prek [Azure za študente](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) bodisi prek vaše institucije: + +* Ustvarite [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) in se povežite z njo prek Jupyterja. Nato lahko klonirate repozitorij neposredno na stroj in začnete z učenjem. NC-serija VM-jev ima podporo za GPU. + +> **Note**: Nekatere naročnine, vključno z Azure za študente, ne zagotavljajo podpore za GPU takoj. Morda boste morali zaprositi za dodatna GPU jedra prek tehnične podpore. + +* Ustvarite [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) in nato uporabite funkcijo Notebook tam. [Ta video](https://azure-for-academics.github.io/quickstart/azureml-papers/) prikazuje, kako klonirati repozitorij v Azure ML Notebook in ga začeti uporabljati. + +Lahko uporabite tudi Google Colab, ki ponuja nekaj brezplačne podpore za GPU, in naložite Jupyter Notebooke tja, da jih izvajate enega za drugim. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/0-course-setup/setup.md b/translations/sl/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..061ac83e --- /dev/null +++ b/translations/sl/lessons/0-course-setup/setup.md @@ -0,0 +1,54 @@ + +# Začetek z učnim načrtom + +## Ste študent? + +Začnite z naslednjimi viri: + +* [Stran za študente](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Na tej strani boste našli vire za začetnike, pakete za študente in celo načine, kako pridobiti brezplačen certifikacijski bon. To je stran, ki jo želite dodati med zaznamke in občasno preveriti, saj vsebino menjamo vsaj enkrat mesečno. +* [Microsoftovi študentski ambasadorji](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Pridružite se globalni skupnosti študentskih ambasadorjev, to bi lahko bil vaš vstop v Microsoft. + +**Študenti**, obstaja več načinov za uporabo učnega načrta. Najprej lahko preprosto preberete besedilo in si ogledate kodo neposredno na GitHubu. Če želite zagnati kodo v katerem koli od zvezkov - [preberite naša navodila](./etc/how-to-run.md) in poiščite več nasvetov o tem, kako to storiti [v tem blogu](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +> **Note**: [Navodila za zagon kode v tem učnem načrtu](./how-to-run.md) + +## Samostojno učenje + +Če pa bi želeli tečaj opraviti kot samostojni projekt, predlagamo, da celoten repozitorij forkate v svoj GitHub račun in naloge opravite sami ali v skupini: + +* Začnite s kvizom pred predavanjem. +* Preberite uvodno besedilo za predavanje. +* Če predavanje vključuje dodatne zvezke, jih preglejte, preberite in zaženite kodo. Če so na voljo zvezki za TensorFlow in PyTorch, se lahko osredotočite na enega od njiju - izberite svoj najljubši okvir. +* Zvezki pogosto vsebujejo izzive, ki zahtevajo, da nekoliko prilagodite kodo in eksperimentirate. +* Opravite kviz po predavanju. +* Če je modulu priložen laboratorij - dokončajte nalogo. +* Obiščite [diskusijsko ploščo](https://github.com/microsoft/AI-For-Beginners/discussions) za "učenje na glas". + +> Za nadaljnje učenje priporočamo, da sledite tem [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) modulom in učnim potem. + +**Učitelji**, [vključili smo nekaj predlogov](/for-teachers.md) o tem, kako uporabiti ta učni načrt. + +--- + +## Pedagogika + +Pri oblikovanju tega učnega načrta smo izbrali dve pedagoški načeli: zagotoviti, da je praktično **projektno usmerjen** in da vključuje **pogoste kvize**. + +Z zagotavljanjem, da je vsebina usklajena s projekti, je proces bolj privlačen za študente, hkrati pa se izboljša tudi pomnjenje konceptov. Poleg tega nizko tvegan kviz pred predavanjem usmeri študentovo pozornost na učenje teme, medtem ko drugi kviz po predavanju zagotovi dodatno pomnjenje. Ta učni načrt je zasnovan tako, da je prilagodljiv in zabaven ter ga je mogoče opraviti v celoti ali delno. Projekti se začnejo z enostavnimi nalogami in postajajo vse bolj zapleteni do konca 12-tedenskega cikla. + +> **Opomba o kvizih**: Vsi kvizi so vključeni [v tej aplikaciji](https://red-field-0a6ddfd03.1.azurestaticapps.net/), skupaj 50 kvizov s po tremi vprašanji. Povezave do njih so vključene v lekcije, aplikacijo za kvize pa lahko zaženete lokalno; sledite navodilom v mapi `etc/quiz-app`. + +## Dostop brez povezave + +To dokumentacijo lahko zaženete brez povezave z uporabo [Docsify](https://docsify.js.org/#/). Forkajte ta repozitorij, [namestite Docsify](https://docsify.js.org/#/quickstart) na svoj lokalni računalnik in nato v korenski mapi tega repozitorija vnesite `docsify serve`. Spletna stran bo na voljo na vratih 3000 na vašem lokalnem računalniku: `localhost:3000`. PDF različica učnega načrta je na voljo [na tej povezavi](../../../../../../../../../etc/pdf/readme.pdf). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/1-Intro/README.md b/translations/sl/lessons/1-Intro/README.md new file mode 100644 index 00000000..3e833842 --- /dev/null +++ b/translations/sl/lessons/1-Intro/README.md @@ -0,0 +1,163 @@ + +# Uvod v umetno inteligenco + +![Povzetek vsebine uvoda v umetno inteligenco v skici](../../../../translated_images/ai-intro.bf28d1ac4235881c096f0ffdb320ba4102940eafcca4e9d7a55a03914361f8f3.sl.png) + +> Skica avtorja [Tomomi Imura](https://twitter.com/girlie_mac) + +## [Predavanje - kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/101) + +**Umetna inteligenca** je vznemirljiva znanstvena disciplina, ki preučuje, kako lahko računalnike naučimo, da izkazujejo inteligentno vedenje, npr. opravljajo naloge, v katerih so ljudje dobri. + +Računalnike je prvotno izumil [Charles Babbage](https://en.wikipedia.org/wiki/Charles_Babbage) za obdelavo številk po natančno določenem postopku – algoritmu. Sodobni računalniki, čeprav bistveno naprednejši od prvotnega modela iz 19. stoletja, še vedno sledijo isti ideji nadzorovanih izračunov. Tako je mogoče programirati računalnik, da opravi neko nalogo, če poznamo natančen zaporedje korakov, ki jih je treba izvesti za dosego cilja. + +![Fotografija osebe](../../../../translated_images/dsh_age.d212a30d4e54fb5f68b94a624aad64bc086124bcbbec9561ae5bd5da661e22d8.sl.png) + +> Fotografija avtorja [Vickie Soshnikova](http://twitter.com/vickievalerie) + +> ✅ Določanje starosti osebe na podlagi njene fotografije je naloga, ki je ni mogoče eksplicitno programirati, saj ne vemo, kako v svoji glavi pridemo do številke, ko to počnemo. + +--- + +Obstajajo pa naloge, za katere ne vemo natančno, kako jih rešiti. Na primer, določanje starosti osebe na podlagi njene fotografije. To se nekako naučimo, ker smo videli veliko primerov ljudi različnih starosti, vendar ne moremo natančno razložiti, kako to počnemo, niti ne moremo programirati računalnika, da to naredi. Prav takšne naloge so zanimive za **umetno inteligenco** (krajše UI). + +✅ Pomislite na nekatere naloge, ki bi jih lahko prenesli na računalnik in bi koristile od UI. Razmislite o področjih financ, medicine in umetnosti – kako ta področja danes koristijo od UI? + +## Šibka UI proti močni UI + +Šibka UI | Močna UI +---------------------------------------|------------------------------------- +Šibka UI se nanaša na sisteme UI, ki so zasnovani in usposobljeni za določeno nalogo ali ozek nabor nalog.|Močna UI, ali umetna splošna inteligenca (AGI), se nanaša na sisteme UI s človeško ravnjo inteligence in razumevanja. +Ti sistemi UI niso splošno inteligentni; odlično opravljajo vnaprej določeno nalogo, vendar jim primanjkuje pravega razumevanja ali zavesti.|Ti sistemi UI imajo sposobnost opravljanja katere koli intelektualne naloge, ki jo lahko opravi človek, prilagajanja različnim področjem in posedovanja neke oblike zavesti ali samozavedanja. +Primeri šibke UI vključujejo virtualne asistente, kot so Siri ali Alexa, algoritme za priporočila, ki jih uporabljajo storitve pretakanja, in klepetalne bote, zasnovane za specifične naloge v podpori strankam.|Doseganje močne UI je dolgoročni cilj raziskav UI in bi zahtevalo razvoj sistemov UI, ki lahko razmišljajo, se učijo, razumejo in prilagajajo v širokem spektru nalog in kontekstov. +Šibka UI je zelo specializirana in nima človeških kognitivnih sposobnosti ali splošnih sposobnosti reševanja problemov zunaj svojega ozkega področja.|Močna UI je trenutno teoretični koncept in noben sistem UI še ni dosegel te ravni splošne inteligence. + +Za več informacij glejte **[Umetna splošna inteligenca](https://en.wikipedia.org/wiki/Artificial_general_intelligence)** (AGI). + +## Definicija inteligence in Turingov test + +Ena od težav pri obravnavi izraza **[inteligenca](https://en.wikipedia.org/wiki/Intelligence)** je, da ni jasne definicije tega pojma. Lahko bi trdili, da je inteligenca povezana z **abstraktnim razmišljanjem** ali **samozavedanjem**, vendar je ne moremo ustrezno opredeliti. + +![Fotografija mačke](../../../../translated_images/photo-cat.8c8e8fb760ffe45725c5b9f6b0d954e9bf114475c01c55adf0303982851b7eae.sl.jpg) + +> [Fotografija](https://unsplash.com/photos/75715CVEJhI) avtorja [Amber Kipp](https://unsplash.com/@sadmax) iz Unsplash + +Da bi videli dvoumnost izraza *inteligenca*, poskusite odgovoriti na vprašanje: "Ali je mačka inteligentna?". Različni ljudje ponavadi dajejo različne odgovore na to vprašanje, saj ni univerzalno sprejetega testa, ki bi dokazal, da je trditev resnična ali ne. In če mislite, da obstaja – poskusite svojo mačko spraviti skozi IQ test... + +✅ Razmislite za trenutek, kako definirate inteligenco. Ali je vrana, ki lahko reši labirint in pride do hrane, inteligentna? Ali je otrok inteligenten? + +--- + +Ko govorimo o AGI, moramo imeti nek način, da ugotovimo, ali smo ustvarili resnično inteligenten sistem. [Alan Turing](https://en.wikipedia.org/wiki/Alan_Turing) je predlagal način, imenovan **[Turingov test](https://en.wikipedia.org/wiki/Turing_test)**, ki deluje tudi kot definicija inteligence. Test primerja dani sistem z nečim, kar je inherentno inteligentno – resnično človeško bitje, in ker lahko vsak avtomatski primerjalni test računalniški program zaobide, uporabimo človeškega spraševalca. Če človeško bitje ne more razlikovati med resnično osebo in računalniškim sistemom v besedilnem dialogu, se sistem šteje za inteligentnega. + +> Klepetalni bot z imenom [Eugene Goostman](https://en.wikipedia.org/wiki/Eugene_Goostman), razvit v Sankt Peterburgu, se je leta 2014 približal prehodu Turingovega testa z uporabo pametnega osebnostnega trika. Vnaprej je napovedal, da je 13-letni ukrajinski deček, kar bi pojasnilo pomanjkanje znanja in nekatere neskladnosti v besedilu. Bot je prepričal 30 % sodnikov, da je človek, po petminutnem dialogu, kar je bila metrika, za katero je Turing verjel, da jo bo stroj lahko dosegel do leta 2000. Vendar je treba razumeti, da to ne pomeni, da smo ustvarili inteligenten sistem ali da je računalniški sistem prevaral človeškega spraševalca – sistem ni prevaral ljudi, temveč so to storili ustvarjalci bota! + +✅ Ste že kdaj mislili, da se pogovarjate s človekom, ko ste v resnici govorili s klepetalnim botom? Kako vas je prepričal? + +## Različni pristopi k UI + +Če želimo, da se računalnik obnaša kot človek, moramo nekako modelirati naš način razmišljanja znotraj računalnika. Posledično moramo poskusiti razumeti, kaj naredi človeka inteligentnega. + +> Da bi lahko programirali inteligenco v stroj, moramo razumeti, kako delujejo naši lastni procesi odločanja. Če se malo poglobite vase, boste ugotovili, da nekateri procesi potekajo podzavestno – npr. lahko ločimo mačko od psa, ne da bi o tem razmišljali – medtem ko drugi vključujejo razmišljanje. + +Obstajata dva možna pristopa k tej težavi: + +Pristop od zgoraj navzdol (simbolično razmišljanje) | Pristop od spodaj navzgor (nevronske mreže) +---------------------------------------|------------------------------------- +Pristop od zgoraj navzdol modelira način, kako oseba razmišlja za reševanje problema. Vključuje pridobivanje **znanja** od človeka in njegovo predstavitev v obliki, ki jo računalnik lahko prebere. Prav tako moramo razviti način za modeliranje **razmišljanja** znotraj računalnika. | Pristop od spodaj navzgor modelira strukturo človeških možganov, ki jih sestavlja ogromno število preprostih enot, imenovanih **nevroni**. Vsak nevron deluje kot tehtano povprečje svojih vhodov, in mrežo nevronov lahko naučimo reševati uporabne probleme z zagotavljanjem **učnih podatkov**. + +Obstajajo tudi nekateri drugi možni pristopi k inteligenci: + +* **Emergentni**, **sinergijski** ali **večagentni pristop** temelji na dejstvu, da je mogoče kompleksno inteligentno vedenje doseči z interakcijo velikega števila preprostih agentov. Po [evolucijski kibernetiki](https://en.wikipedia.org/wiki/Global_brain#Evolutionary_cybernetics) lahko inteligenca *nastane* iz bolj preprostega, reaktivnega vedenja v procesu *prehoda metasistema*. + +* **Evolucijski pristop** ali **genetski algoritem** je optimizacijski proces, ki temelji na načelih evolucije. + +Te pristope bomo obravnavali kasneje v tečaju, trenutno pa se bomo osredotočili na dve glavni smeri: od zgoraj navzdol in od spodaj navzgor. + +### Pristop od zgoraj navzdol + +Pri **pristopu od zgoraj navzdol** poskušamo modelirati naše razmišljanje. Ker lahko sledimo svojim mislim, ko razmišljamo, lahko poskusimo formalizirati ta proces in ga programirati v računalnik. To se imenuje **simbolično razmišljanje**. + +Ljudje imajo v glavi določena pravila, ki usmerjajo njihove procese odločanja. Na primer, ko zdravnik postavlja diagnozo pacientu, lahko ugotovi, da ima oseba vročino, in zato lahko v telesu poteka vnetje. Z uporabo velikega nabora pravil za določen problem lahko zdravnik pride do končne diagnoze. + +Ta pristop se močno opira na **predstavitev znanja** in **razmišljanje**. Pridobivanje znanja od človeškega strokovnjaka je lahko najtežji del, saj zdravnik v mnogih primerih ne ve natančno, zakaj pride do določene diagnoze. Včasih rešitev preprosto pride v njegovo glavo brez eksplicitnega razmišljanja. Nekaterih nalog, kot je določanje starosti osebe na podlagi fotografije, sploh ni mogoče zmanjšati na manipulacijo z znanjem. + +### Pristop od spodaj navzgor + +Alternativno lahko poskusimo modelirati najpreprostejše elemente v naših možganih – nevron. V računalniku lahko zgradimo tako imenovano **umetno nevronsko mrežo** in jo nato poskusimo naučiti reševati probleme z zagotavljanjem primerov. Ta proces je podoben temu, kako se novorojenček uči o svojem okolju z opazovanjem. + +✅ Raziščite, kako se dojenčki učijo. Kateri so osnovni elementi dojenčkovih možganov? + +> | Kaj pa ML? | | +> |--------------|-----------| +> | Del umetne inteligence, ki temelji na tem, da se računalnik nauči reševati problem na podlagi nekaterih podatkov, se imenuje **strojno učenje**. Klasičnega strojnega učenja v tem tečaju ne bomo obravnavali – priporočamo vam ločen učni načrt [Strojno učenje za začetnike](http://aka.ms/ml-beginners). | ![ML za začetnike](../../../../translated_images/ml-for-beginners.9e4fed176fd5817d7d1f7d358302515186579cbf09b2a6c5bd8092b345da7f22.sl.png) | + +## Kratek pregled zgodovine UI + +Umetna inteligenca se je kot področje začela razvijati sredi dvajsetega stoletja. Sprva je bil prevladujoč pristop simbolično razmišljanje, kar je privedlo do številnih pomembnih uspehov, kot so ekspertni sistemi – računalniški programi, ki so lahko delovali kot strokovnjaki na nekaterih omejenih problematičnih področjih. Vendar se je kmalu izkazalo, da takšen pristop ni dobro skalabilen. Pridobivanje znanja od strokovnjaka, njegovo predstavitev v računalniku in vzdrževanje točne baze znanja se je izkazalo za zelo zapleteno nalogo in predrago za praktično uporabo v mnogih primerih. To je v sedemdesetih letih privedlo do tako imenovane [zime UI](https://en.wikipedia.org/wiki/AI_winter). + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +Sčasoma so računalniški viri postali cenejši, na voljo je bilo več podatkov, zato so pristopi z nevronskimi mrežami začeli kazati odlične rezultate pri tekmovanju z ljudmi na številnih področjih, kot so računalniški vid ali razumevanje govora. V zadnjem desetletju se izraz umetna inteligenca večinoma uporablja kot sinonim za nevronske mreže, saj večina uspehov UI, o katerih slišimo, temelji na njih. + +Lahko opazujemo, kako so se pristopi spreminjali, na primer pri ustvarjanju računalniškega programa za igranje šaha: + +* Zgodnji šahovski programi so temeljili na iskanju – program je eksplicitno poskušal oceniti možne poteze nasprotnika za določeno število naslednjih potez in izbral optimalno potezo na podlagi optimalnega položaja, ki ga je mogoče doseči v nekaj potezah. To je privedlo do razvoja tako imenovanega [alpha-beta obrezovanja](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning) algoritma iskanja. +* Strategije iskanja dobro delujejo proti koncu igre, kjer je iskalni prostor omejen z majhnim številom možnih potez. Vendar pa je na začetku igre iskalni prostor ogromen, in algoritem je mogoče izboljšati z učenjem iz obstoječih tekem med človeškimi igralci. Kasnejši eksperimenti so uporabljali tako imenovano [razmišljanje na podlagi primerov](https://en.wikipedia.org/wiki/Case-based_reasoning), kjer je program iskal primere v bazi znanja, ki so zelo podobni trenutnemu položaju v igri. +* Sodobni programi, ki premagujejo človeške igralce, temeljijo na nevronskih mrežah in [okrepitvenem učenju](https://en.wikipedia.org/wiki/Reinforcement_learning), kjer se programi učijo igrati izključno z igranjem proti sebi in učenjem iz lastnih napak – podobno kot ljudje, ko se učijo igrati šah. Vendar pa lahko računalniški program odigra veliko več iger v veliko krajšem času in se tako uči veliko hitreje. + +✅ Raziščite še druge igre, ki jih je igrala UI. + +Podobno lahko vidimo, kako se je pristop k ustvarjanju "govorečih programov" (ki bi lahko prestali Turingov test) spreminjal: + +* Zgodnji programi te vrste, kot je [Eliza](https://en.wikipedia.org/wiki/ELIZA), so temeljili na zelo preprostih slovničnih pravilih in preoblikovanju vhodnega stavka v vprašanje. +* Sodobni asistenti, kot so Cortana, Siri ali Google Assistant, so vsi hibridni sistemi, ki uporabljajo nevronske mreže za pretvorbo govora v besedilo in prepoznavanje našega namena, nato pa uporabijo nekaj razmišljanja ali eksplicitnih algoritmov za izvedbo zahtevanih dejanj. +* V prihodnosti lahko pričakujemo popoln model, ki temelji na nevronskih mrežah, za samostojno obravnavo dialoga. Nedavne družine nevronskih mrež GPT in [Turing-NLG](https://turing.microsoft.com/) kažejo velik uspeh pri tem. + +> Slika Dmitry Soshnikov, [fotografija](https://unsplash.com/photos/r8LmVbUKgns) avtorja [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Nedavne raziskave na področju umetne inteligence + +Ogromen nedavni napredek v raziskavah nevronskih mrež se je začel okoli leta 2010, ko so postali dostopni veliki javni podatkovni nabori. Velika zbirka slik, imenovana [ImageNet](https://en.wikipedia.org/wiki/ImageNet), ki vsebuje približno 14 milijonov označenih slik, je dala zagon [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![ILSVRC Natančnost](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +Leta 2012 so bile [konvolucijske nevronske mreže](../4-ComputerVision/07-ConvNets/README.md) prvič uporabljene za razvrščanje slik, kar je povzročilo znatno zmanjšanje napak pri razvrščanju (s skoraj 30 % na 16,4 %). Leta 2015 je arhitektura ResNet iz Microsoft Research [dosegla natančnost na ravni človeka](https://doi.org/10.1109/ICCV.2015.123). + +Od takrat so nevronske mreže pokazale zelo uspešno delovanje pri številnih nalogah: + +--- + +Leto | Dosežena enakovrednost človeku +-----|-------- +2015 | [Razvrščanje slik](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Prepoznavanje govora v pogovoru](https://arxiv.org/abs/1610.05256) +2018 | [Samodejno strojno prevajanje](https://arxiv.org/abs/1803.05567) (kitajščina v angleščino) +2020 | [Opisovanje slik](https://arxiv.org/abs/2009.13682) + +V zadnjih nekaj letih smo bili priča velikim uspehom z velikimi jezikovnimi modeli, kot sta BERT in GPT-3. To se je zgodilo predvsem zaradi dejstva, da je na voljo veliko splošnih besedilnih podatkov, ki omogočajo treniranje modelov za zajemanje strukture in pomena besedil, predhodno treniranje na splošnih zbirkah besedil ter nato specializacijo teh modelov za bolj specifične naloge. Več o [obdelavi naravnega jezika](../5-NLP/README.md) bomo izvedeli kasneje v tem tečaju. + +## 🚀 Izziv + +Raziskujte po internetu in ugotovite, kje se po vašem mnenju umetna inteligenca najbolj učinkovito uporablja. Je to v aplikaciji za kartiranje, storitvi za pretvorbo govora v besedilo ali videoigri? Raziščite, kako je bil sistem zgrajen. + +## [Kvizi po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) + +## Pregled in samostojno učenje + +Preglejte zgodovino umetne inteligence in strojnega učenja z branjem [te lekcije](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Izberite element iz sketchnote na vrhu te lekcije ali te in ga raziskujte bolj podrobno, da bi razumeli kulturni kontekst, ki je vplival na njegov razvoj. + +**Naloga**: [Game Jam](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/1-Intro/assignment.md b/translations/sl/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..e6e0f3b2 --- /dev/null +++ b/translations/sl/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Igre so področje, ki so ga močno zaznamovali razvoj umetne inteligence (UI) in strojnega učenja (SU). V tej nalogi napišite kratko razpravo o igri, ki vam je všeč in na katero je vplival razvoj UI. Igra naj bo dovolj stara, da je bila pod vplivom več različnih računalniških procesnih sistemov. Dober primer sta šah ali go, lahko pa razmislite tudi o videoigrah, kot sta Pong ali Pac-Man. Napišite esej, ki obravnava preteklost, sedanjost in prihodnost UI v tej igri. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku naj se šteje za avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/2-Symbolic/README.md b/translations/sl/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..85687cb4 --- /dev/null +++ b/translations/sl/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Predstavitev znanja in ekspertni sistemi + +![Povzetek vsebine o simbolni umetni inteligenci](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sl.png) + +> Sketchnote avtorja [Tomomi Imura](https://twitter.com/girlie_mac) + +Iskanje umetne inteligence temelji na iskanju znanja, da bi razumeli svet na podoben način, kot to počnejo ljudje. Toda kako to doseči? + +## [Predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) + +V zgodnjih dneh umetne inteligence je bil priljubljen pristop od zgoraj navzdol za ustvarjanje inteligentnih sistemov (o katerem smo govorili v prejšnji lekciji). Ideja je bila, da se znanje pridobi od ljudi v obliki, ki jo lahko razume računalnik, in nato uporabi za samodejno reševanje problemov. Ta pristop temelji na dveh velikih idejah: + +* Predstavitev znanja +* Razmišljanje + +## Predstavitev znanja + +Eden pomembnih konceptov v simbolni umetni inteligenci je **znanje**. Pomembno je razlikovati znanje od *informacij* ali *podatkov*. Na primer, lahko rečemo, da knjige vsebujejo znanje, ker lahko z njihovim študijem postanemo strokovnjaki. Vendar pa knjige dejansko vsebujejo *podatke*, ki jih z branjem in vključevanjem v naš model sveta pretvorimo v znanje. + +> ✅ **Znanje** je nekaj, kar je v naši glavi in predstavlja naše razumevanje sveta. Pridobimo ga z aktivnim procesom **učenja**, ki vključuje koščke informacij, ki jih prejmemo, v naš aktivni model sveta. + +Najpogosteje znanja ne definiramo strogo, temveč ga uskladimo z drugimi povezanimi koncepti s pomočjo [DIKW piramide](https://en.wikipedia.org/wiki/DIKW_pyramid). Ta vsebuje naslednje koncepte: + +* **Podatki** so nekaj, kar je predstavljeno na fizičnih medijih, kot so pisano besedilo ali govorjene besede. Podatki obstajajo neodvisno od ljudi in se lahko prenašajo med njimi. +* **Informacije** so način, kako interpretiramo podatke v svoji glavi. Na primer, ko slišimo besedo *računalnik*, imamo neko razumevanje, kaj to je. +* **Znanje** je informacija, vključena v naš model sveta. Na primer, ko se naučimo, kaj je računalnik, začnemo imeti ideje o tem, kako deluje, koliko stane in za kaj se lahko uporablja. Ta mreža medsebojno povezanih konceptov tvori naše znanje. +* **Modrost** je še ena raven našega razumevanja sveta in predstavlja *meta-znanje*, npr. neko predstavo o tem, kako in kdaj naj se znanje uporabi. + +*Slika [iz Wikipedije](https://commons.wikimedia.org/w/index.php?curid=37705247), avtor Longlivetheux - lastno delo, CC BY-SA 4.0* + +Tako je problem **predstavitve znanja** najti učinkovit način za predstavitev znanja v računalniku v obliki podatkov, da bi bilo samodejno uporabno. To lahko vidimo kot spekter: + +![Spekter predstavitve znanja](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sl.png) + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +* Na levi strani so zelo preproste vrste predstavitev znanja, ki jih računalniki lahko učinkovito uporabljajo. Najenostavnejša je algoritmična, kjer je znanje predstavljeno z računalniškim programom. To pa ni najboljši način za predstavitev znanja, ker ni prilagodljiv. Znanje v naši glavi je pogosto nealgoritmično. +* Na desni strani so predstavitve, kot je naravno besedilo. To je najmočnejše, vendar ga ni mogoče uporabiti za samodejno razmišljanje. + +> ✅ Razmislite za trenutek, kako predstavljate znanje v svoji glavi in ga pretvarjate v zapiske. Ali obstaja določen format, ki vam pomaga pri pomnjenju? + +## Razvrščanje računalniških predstavitev znanja + +Različne metode predstavitve znanja v računalnikih lahko razvrstimo v naslednje kategorije: + +* **Mrežne predstavitve** temeljijo na dejstvu, da imamo v glavi mrežo medsebojno povezanih konceptov. Poskusimo lahko reproducirati iste mreže kot graf znotraj računalnika - tako imenovano **semantično mrežo**. + +1. **Trojčki objekt-lastnost-vrednost** ali **pari lastnost-vrednost**. Ker je graf mogoče predstaviti v računalniku kot seznam vozlišč in povezav, lahko semantično mrežo predstavimo s seznamom trojčkov, ki vsebujejo objekte, lastnosti in vrednosti. Na primer, zgradimo naslednje trojčke o programskih jezikih: + +Objekt | Lastnost | Vrednost +-------|----------|--------- +Python | je | Ne-tipiziran jezik +Python | izumil | Guido van Rossum +Python | blok-sintaksa | zamik +Ne-tipiziran jezik | nima | definicij tipov + +> ✅ Razmislite, kako lahko trojčke uporabimo za predstavitev drugih vrst znanja. + +2. **Hierarhične predstavitve** poudarjajo dejstvo, da pogosto ustvarjamo hierarhijo objektov v svoji glavi. Na primer, vemo, da je kanarček ptica in da imajo vse ptice krila. Prav tako imamo neko predstavo o tem, kakšne barve je običajno kanarček in kakšna je njegova hitrost letenja. + + - **Predstavitev okvirjev** temelji na predstavitvi vsakega objekta ali razreda objektov kot **okvirja**, ki vsebuje **reže**. Reže imajo možne privzete vrednosti, omejitve vrednosti ali shranjene postopke, ki jih je mogoče poklicati za pridobitev vrednosti reže. Vsi okvirji tvorijo hierarhijo, podobno hierarhiji objektov v objektno usmerjenih programskih jezikih. + - **Scenariji** so posebna vrsta okvirjev, ki predstavljajo kompleksne situacije, ki se lahko odvijajo skozi čas. + +**Python** + +Reža | Vrednost | Privzeta vrednost | Interval | +-----|---------|-------------------|----------| +Ime | Python | | | +Je | Ne-tipiziran jezik | | | +Velikost spremenljivke | | CamelCase | | +Dolžina programa | | | 5-5000 vrstic | +Blok-sintaksa | Zamik | | | + +3. **Postopkovne predstavitve** temeljijo na predstavitvi znanja s seznamom dejanj, ki jih je mogoče izvesti, ko se zgodi določen pogoj. + - Proizvodna pravila so if-then izjave, ki nam omogočajo sklepanje. Na primer, zdravnik lahko ima pravilo, ki pravi, da **ČE** ima pacient visoko vročino **ALI** visoko raven C-reaktivnega proteina v krvnem testu, **POTEM** ima vnetje. Ko naletimo na enega od pogojev, lahko sklepamo na vnetje in ga nato uporabimo pri nadaljnjem sklepanju. + - Algoritmi se lahko štejejo za drugo obliko postopkovne predstavitve, čeprav se skoraj nikoli ne uporabljajo neposredno v sistemih, ki temeljijo na znanju. + +4. **Logika** je bila prvotno predlagana s strani Aristotela kot način za predstavitev univerzalnega človeškega znanja. + - Predikatna logika kot matematična teorija je prebogata, da bi bila izračunljiva, zato se običajno uporablja njen podmnožek, kot so Hornove klavzule, uporabljene v Prologu. + - Opisna logika je družina logičnih sistemov, ki se uporabljajo za predstavitev in razmišljanje o hierarhijah objektov ter porazdeljenih predstavitvah znanja, kot je *semantični splet*. + +## Ekspertni sistemi + +Eden zgodnjih uspehov simbolne umetne inteligence so bili tako imenovani **ekspertni sistemi** - računalniški sistemi, zasnovani za delovanje kot strokovnjak na omejenem področju problemov. Temeljili so na **bazi znanja**, pridobljeni od enega ali več človeških strokovnjakov, in vsebovali **inferenčni mehanizem**, ki je izvajal določeno razmišljanje na podlagi te baze. + +![Človeška arhitektura](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sl.png) | ![Arhitektura sistema, ki temelji na znanju](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sl.png) +---------------------------------------------|------------------------------------------------ +Poenostavljena struktura človeškega nevronskega sistema | Arhitektura sistema, ki temelji na znanju + +Ekspertni sistemi so zgrajeni podobno kot človeški sistem razmišljanja, ki vsebuje **kratkoročni spomin** in **dolgoročni spomin**. Podobno v sistemih, ki temeljijo na znanju, ločimo naslednje komponente: + +* **Spomin problema**: vsebuje znanje o problemu, ki se trenutno rešuje, npr. temperatura ali krvni tlak pacienta, ali ima vnetje ali ne itd. To znanje se imenuje tudi **statično znanje**, ker vsebuje posnetek tega, kar trenutno vemo o problemu - tako imenovano *stanje problema*. +* **Baza znanja**: predstavlja dolgoročno znanje o problematičnem področju. Ročno se pridobi od človeških strokovnjakov in se ne spreminja od posvetovanja do posvetovanja. Ker nam omogoča navigacijo od enega stanja problema do drugega, se imenuje tudi **dinamično znanje**. +* **Inferenčni mehanizem**: usklajuje celoten proces iskanja v prostoru stanja problema, postavlja vprašanja uporabniku, kadar je to potrebno. Prav tako je odgovoren za iskanje pravih pravil, ki jih je treba uporabiti za vsako stanje. + +Kot primer si oglejmo naslednji ekspertni sistem za določanje živali na podlagi njihovih fizičnih značilnosti: + +![AND-OR Drevo](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sl.png) + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +Ta diagram se imenuje **AND-OR drevo** in je grafična predstavitev nabora proizvodnih pravil. Risanje drevesa je koristno na začetku pridobivanja znanja od strokovnjaka. Za predstavitev znanja znotraj računalnika je bolj priročno uporabiti pravila: + +``` +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 +``` + +Opazite lahko, da vsako stanje na levi strani pravila in dejanje dejansko predstavljata trojčke objekt-lastnost-vrednost (OAV). **Delovni spomin** vsebuje nabor OAV trojčkov, ki ustrezajo problemu, ki se trenutno rešuje. **Pravilni mehanizem** išče pravila, za katera je pogoj izpolnjen, in jih uporabi, pri čemer doda nov trojček v delovni spomin. + +> ✅ Narišite svoje AND-OR drevo na temo, ki vam je všeč! + +### Naprej in nazaj sklepanje + +Zgornji proces se imenuje **naprej sklepanje**. Začne se z nekaterimi začetnimi podatki o problemu, ki so na voljo v delovnem spominu, in nato izvaja naslednjo zanko razmišljanja: + +1. Če je ciljna lastnost prisotna v delovnem spominu - ustavi in poda rezultat +2. Poišči vsa pravila, katerih pogoj je trenutno izpolnjen - pridobi **nabor konfliktov** pravil. +3. Izvedi **reševanje konfliktov** - izberi eno pravilo, ki bo izvedeno v tem koraku. Obstajajo različne strategije reševanja konfliktov: + - Izberi prvo uporabno pravilo v bazi znanja + - Izberi naključno pravilo + - Izberi *bolj specifično* pravilo, tj. tisto, ki izpolnjuje največ pogojev na "levi strani" (LHS) +4. Uporabi izbrano pravilo in vstavi nov del znanja v stanje problema +5. Ponovi od koraka 1. + +Vendar pa v nekaterih primerih želimo začeti z ničelnim znanjem o problemu in postavljati vprašanja, ki nam bodo pomagala priti do zaključka. Na primer, pri medicinski diagnostiki običajno ne izvajamo vseh medicinskih analiz vnaprej, preden začnemo diagnosticirati pacienta. Raje želimo izvajati analize, ko je treba sprejeti odločitev. + +Ta proces lahko modeliramo z uporabo **nazaj sklepanje**. Vodeno je z **ciljem** - vrednostjo lastnosti, ki jo želimo najti: + +1. Izberi vsa pravila, ki nam lahko dajo vrednost cilja (tj. s ciljem na RHS ("desni strani")) - nabor konfliktov +1. Če za to lastnost ni pravil ali obstaja pravilo, ki pravi, da moramo vrednost vprašati uporabnika - vprašaj za to, sicer: +1. Uporabi strategijo reševanja konfliktov za izbiro enega pravila, ki ga bomo uporabili kot *hipotezo* - poskusili jo bomo dokazati +1. Rekurzivno ponovi proces za vse lastnosti na LHS pravila, poskušajoč jih dokazati kot cilje +1. Če proces kadar koli ne uspe - uporabi drugo pravilo v koraku 3. + +> ✅ V katerih situacijah je naprej sklepanje bolj primerno? Kaj pa nazaj sklepanje? + +### Implementacija ekspertnih sistemov + +Ekspertne sisteme je mogoče implementirati z različnimi orodji: + +* Neposredno programiranje v nekem visokonivojskem programskem jeziku. To ni najboljša ideja, ker je glavna prednost sistema, ki temelji na znanju, ta, da je znanje ločeno od sklepanja, in potencialno bi moral strokovnjak za problematično področje biti sposoben pisati pravila brez razumevanja podrobnosti procesa sklepanja. +* Uporaba **lupine ekspertnega sistema**, tj. sistema, posebej zasnovanega za polnjenje z znanjem z uporabo nekega jezika za predstavitev znanja. + +## ✍️ Vaja: Sklepanje o živalih + +Oglejte si [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) za primer implementacije ekspertnega sistema za naprej in nazaj sklepanje. +> **Opomba**: Ta primer je precej preprost in zgolj prikazuje, kako izgleda ekspertni sistem. Ko začnete ustvarjati tak sistem, boste opazili nekaj *inteligentnega* vedenja šele, ko dosežete določeno število pravil, približno 200+. Na neki točki postanejo pravila preveč zapletena, da bi jih lahko vse ohranili v mislih, in takrat se morda začnete spraševati, zakaj sistem sprejema določene odločitve. Vendar pa je pomembna značilnost sistemov, ki temeljijo na znanju, ta, da lahko vedno *pojasnite*, kako je bila sprejeta katera koli odločitev. +## Ontologije in Semantični splet + +Ob koncu 20. stoletja se je pojavila pobuda za uporabo predstavitve znanja za označevanje internetnih virov, da bi bilo mogoče najti vire, ki ustrezajo zelo specifičnim poizvedbam. Ta pobuda se je imenovala **Semantični splet**, in temeljila je na več konceptih: + +- Posebna predstavitev znanja, ki temelji na **[logiki opisov](https://en.wikipedia.org/wiki/Description_logic)** (DL). Ta je podobna predstavitvi znanja s pomočjo okvirjev, saj gradi hierarhijo objektov z lastnostmi, vendar ima formalno logično semantiko in sklepanje. Obstaja cela družina DL-jev, ki uravnotežijo med izražanjem in algoritmično kompleksnostjo sklepanja. +- Porazdeljena predstavitev znanja, kjer so vsi koncepti predstavljeni z globalnim URI identifikatorjem, kar omogoča ustvarjanje hierarhij znanja, ki se raztezajo po internetu. +- Družina jezikov, ki temeljijo na XML za opis znanja: RDF (Okvir za opis virov), RDFS (Shema RDF), OWL (Jezik spletnih ontologij). + +Osrednji koncept v semantičnem spletu je koncept **ontologije**. Nanaša se na eksplicitno specifikacijo domene problema z uporabo formalne predstavitve znanja. Najenostavnejša ontologija je lahko le hierarhija objektov v domeni problema, bolj kompleksne ontologije pa vključujejo pravila, ki jih je mogoče uporabiti za sklepanje. + +V semantičnem spletu so vse predstavitve osnovane na trojicah. Vsak objekt in vsaka relacija sta enolično identificirana z URI. Na primer, če želimo navesti dejstvo, da je ta učni načrt umetne inteligence razvil Dmitry Soshnikov 1. januarja 2022, so tukaj trojice, ki jih lahko uporabimo: + + + +``` +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 +``` + +> ✅ Tukaj sta `http://www.example.com/terms/creation-date` in `http://purl.org/dc/elements/1.1/creator` dobro znana in splošno sprejeta URI-ja za izražanje konceptov *ustvarjalec* in *datum ustvarjanja*. + +V bolj kompleksnem primeru, če želimo definirati seznam ustvarjalcev, lahko uporabimo nekatere podatkovne strukture, definirane v RDF. + + + +> Zgornji diagrami avtorja [Dmitry Soshnikov](http://soshnikov.com) + +Napredek pri gradnji semantičnega spleta je bil nekoliko upočasnjen zaradi uspeha iskalnikov in tehnik obdelave naravnega jezika, ki omogočajo pridobivanje strukturiranih podatkov iz besedila. Vendar pa na nekaterih področjih še vedno obstajajo pomembna prizadevanja za vzdrževanje ontologij in baz znanja. Nekaj projektov, ki jih je vredno omeniti: + +* [WikiData](https://wikidata.org/) je zbirka strojno berljivih baz znanja, povezanih z Wikipedijo. Večina podatkov je pridobljena iz Wikipedijinih *InfoBoxov*, delov strukturirane vsebine znotraj strani Wikipedije. Wikidata lahko [poizvedujete](https://query.wikidata.org/) v SPARQL, posebnem jeziku za poizvedbe v semantičnem spletu. Tukaj je primer poizvedbe, ki prikazuje najbolj priljubljene barve oči med ljudmi: + +```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/) je še en projekt, podoben WikiData. + +> ✅ Če želite eksperimentirati z gradnjo lastnih ontologij ali odpiranjem obstoječih, obstaja odličen vizualni urejevalnik ontologij, imenovan [Protégé](https://protege.stanford.edu/). Prenesite ga ali ga uporabite na spletu. + + + +*Spletni urejevalnik Protégé odprt z ontologijo družine Romanov. Posnetek zaslona avtorja Dmitry Soshnikov* + +## ✍️ Naloga: Ontologija družine + +Oglejte si [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) za primer uporabe tehnik semantičnega spleta za sklepanje o družinskih odnosih. Vzeli bomo družinsko drevo, predstavljeno v običajnem formatu GEDCOM, in ontologijo družinskih odnosov ter zgradili graf vseh družinskih odnosov za določen nabor posameznikov. + +## Microsoft Concept Graph + +V večini primerov so ontologije skrbno ustvarjene ročno. Vendar pa je mogoče ontologije tudi **pridobiti** iz nestrukturiranih podatkov, na primer iz besedil v naravnem jeziku. + +Eden takšnih poskusov je bil izveden s strani Microsoft Research in je privedel do [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Gre za veliko zbirko entitet, združenih z relacijo dedovanja `is-a`. Omogoča odgovarjanje na vprašanja, kot je "Kaj je Microsoft?" - odgovor pa je nekaj takega: "podjetje s verjetnostjo 0,87 in blagovna znamka s verjetnostjo 0,75". + +Graf je na voljo bodisi kot REST API bodisi kot velik prenosljiv besedilni dokument, ki navaja vse pare entitet. + +## ✍️ Naloga: Graf konceptov + +Preizkusite zvezek [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb), da vidite, kako lahko uporabimo Microsoft Concept Graph za razvrščanje novic v več kategorij. + +## Zaključek + +Danes se umetna inteligenca pogosto obravnava kot sinonim za *strojno učenje* ali *nevronske mreže*. Vendar pa človek izkazuje tudi eksplicitno sklepanje, kar je nekaj, česar nevronske mreže trenutno ne obravnavajo. Pri projektih v resničnem svetu se eksplicitno sklepanje še vedno uporablja za izvajanje nalog, ki zahtevajo razlage ali možnost nadzorovanega spreminjanja vedenja sistema. + +## 🚀 Izziv + +V zvezku Ontologija družine, povezanem s to lekcijo, je priložnost za eksperimentiranje z drugimi družinskimi odnosi. Poskusite odkriti nove povezave med ljudmi v družinskem drevesu. + +## [Kvizi po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Pregled in samostojno učenje + +Raziskujte na internetu, da odkrijete področja, kjer so ljudje poskušali kvantificirati in kodificirati znanje. Oglejte si Bloomovo taksonomijo in se vrnite v zgodovino, da se naučite, kako so ljudje poskušali razumeti svoj svet. Raziščite delo Linnaeusa pri ustvarjanju taksonomije organizmov in opazujte, kako je Dmitri Mendelejev ustvaril način za opisovanje in razvrščanje kemijskih elementov. Katere druge zanimive primere lahko najdete? + +**Naloga**: [Zgradite ontologijo](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/2-Symbolic/assignment.md b/translations/sl/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..965d15e6 --- /dev/null +++ b/translations/sl/lessons/2-Symbolic/assignment.md @@ -0,0 +1,15 @@ + +# Zgradite ontologijo + +Gradnja baze znanja pomeni kategorizacijo modela, ki predstavlja dejstva o določeni temi. Izberite temo - na primer osebo, kraj ali stvar - in nato zgradite model te teme. Uporabite nekatere tehnike in strategije gradnje modelov, opisane v tej lekciji. Primer bi bil ustvarjanje ontologije dnevne sobe s pohištvom, lučmi in podobno. Kako se dnevna soba razlikuje od kuhinje? Kopalnice? Kako veste, da gre za dnevno sobo in ne jedilnico? Uporabite [Protégé](https://protege.stanford.edu/) za gradnjo svoje ontologije. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..4fa850d8 --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Uvod v nevronske mreže: Perceptron + +## [Predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Eden prvih poskusov implementacije nečesa podobnega sodobni nevronski mreži je izvedel Frank Rosenblatt iz Cornell Aeronautical Laboratory leta 1957. Šlo je za strojno implementacijo, imenovano "Mark-1", zasnovano za prepoznavanje osnovnih geometrijskih oblik, kot so trikotniki, kvadrati in krogi. + +| | | +|--------------|-----------| +|Frank Rosenblatt | The Mark 1 Perceptron| + +> Slike [iz Wikipedije](https://en.wikipedia.org/wiki/Perceptron) + +Vhodna slika je bila predstavljena z matriko fotocelic velikosti 20x20, zato je imela nevronska mreža 400 vhodov in en binarni izhod. Preprosta mreža je vsebovala en nevron, imenovan tudi **enota logičnega praga**. Teže nevronske mreže so delovale kot potenciometri, ki so zahtevali ročno prilagoditev med fazo učenja. + +> ✅ Potenciometer je naprava, ki omogoča uporabniku prilagajanje upornosti v vezju. + +> New York Times je takrat o perceptronu zapisal: *zarodek elektronskega računalnika, za katerega [mornarica] pričakuje, da bo lahko hodil, govoril, videl, pisal, se razmnoževal in bil zaveden svojega obstoja.* + +## Model perceptrona + +Predpostavimo, da imamo v našem modelu N značilnosti, v tem primeru bi bil vhodni vektor velikosti N. Perceptron je model za **binarno klasifikacijo**, kar pomeni, da lahko razlikuje med dvema razredoma vhodnih podatkov. Predpostavljamo, da bo za vsak vhodni vektor x izhod našega perceptrona bodisi +1 ali -1, odvisno od razreda. Izhod se izračuna po formuli: + +y(x) = f(wTx) + +kjer je f funkcija aktivacije s pragom. + + + + +## Učenje perceptrona + +Za učenje perceptrona moramo najti vektor tež w, ki pravilno razvrsti večino vrednosti, tj. povzroči najmanjšo **napako**. Ta napaka E je definirana z **merilom perceptrona** na naslednji način: + +E(w) = -∑wTxiti + +kjer: + +* je vsota vzeta za tiste točke učnih podatkov i, ki so napačno razvrščene, +* xi so vhodni podatki, ti pa je bodisi -1 ali +1 za negativne oziroma pozitivne primere. + +To merilo obravnavamo kot funkcijo tež w, ki jo moramo minimizirati. Pogosto se uporablja metoda, imenovana **gradientni spust**, pri kateri začnemo z začetnimi težami w(0), nato pa pri vsakem koraku posodobimo teže po formuli: + +w(t+1) = w(t) - η∇E(w) + +Tukaj je η tako imenovana **hitrost učenja**, ∇E(w) pa označuje **gradient** E. Po izračunu gradienta dobimo: + +w(t+1) = w(t) + ∑ηxiti + +Algoritem v Pythonu izgleda takole: + +```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 +``` + +## Zaključek + +V tej lekciji ste spoznali perceptron, ki je model za binarno klasifikacijo, in kako ga naučiti z uporabo vektorja tež. + +## 🚀 Izziv + +Če želite poskusiti zgraditi svoj perceptron, poskusite [to delavnico na Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste), ki uporablja [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) + +## Pregled in samostojno učenje + +Če želite videti, kako lahko uporabimo perceptron za reševanje preprostih problemov in resničnih problemov, ter nadaljevati z učenjem, obiščite zvezek [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). + +Tukaj je zanimiv [članek o perceptronih](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590). + +## [Naloga](lab/README.md) + +V tej lekciji smo implementirali perceptron za nalogo binarne klasifikacije in ga uporabili za razvrščanje med dvema ročno napisanima številkama. V tej delavnici morate rešiti problem popolne klasifikacije številk, tj. določiti, katera številka najverjetneje ustreza določeni sliki. + +* [Navodila](lab/README.md) +* [Zvezek](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..ece1a759 --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -0,0 +1,31 @@ + +# Večrazredna klasifikacija s perceptronom + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Z uporabo kode, ki smo jo razvili v tej lekciji za binarno klasifikacijo ročno napisanih številk MNIST, ustvarite večrazredni klasifikator, ki bo sposoben prepoznati katerokoli številko. Izračunajte natančnost klasifikacije na učnem in testnem naboru podatkov ter izpišite matriko zmede. + +## Namigi + +1. Za vsako številko ustvarite nabor podatkov za binarno klasifikacijo "ta številka proti vsem ostalim številkam". +1. Natrenirajte 10 različnih perceptronov za binarno klasifikacijo (enega za vsako številko). +1. Definirajte funkcijo, ki bo razvrstila vhodno številko. + +> **Namig**: Če združimo uteži vseh 10 perceptronov v eno matriko, lahko vseh 10 perceptronov uporabimo na vhodnih številkah z eno matriko množenja. Najverjetnejšo številko lahko nato najdemo z uporabo operacije `argmax` na izhodu. + +## Začetni zvezek + +Začnite nalogo z odpiranjem [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..10bee23a --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -0,0 +1,98 @@ + +# Uvod v nevronske mreže. Večplastni perceptron + +V prejšnjem poglavju ste spoznali najpreprostejši model nevronske mreže - enoplastni perceptron, linearen model za klasifikacijo dveh razredov. + +V tem poglavju bomo ta model razširili v bolj prilagodljiv okvir, ki nam omogoča: + +* izvajanje **klasifikacije več razredov** poleg klasifikacije dveh razredov +* reševanje **regresijskih problemov** poleg klasifikacije +* ločevanje razredov, ki niso linearno ločljivi + +Prav tako bomo razvili svoj modularni okvir v Pythonu, ki nam bo omogočil sestavljanje različnih arhitektur nevronskih mrež. + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) + +## Formalizacija strojnega učenja + +Začnimo s formalizacijo problema strojnega učenja. Predpostavimo, da imamo učni podatkovni niz **X** z oznakami **Y**, in moramo zgraditi model *f*, ki bo podajal najbolj natančne napovedi. Kakovost napovedi merimo z **funkcijo izgube** ℒ. Pogosto uporabljene funkcije izgube so: + +* Pri regresijskih problemih, ko moramo napovedati število, lahko uporabimo **absolutno napako** ∑i|f(x(i))-y(i)| ali **kvadratno napako** ∑i(f(x(i))-y(i))2 +* Pri klasifikaciji uporabljamo **0-1 izgubo** (ki je v bistvu enaka **natančnosti** modela) ali **logistično izgubo**. + +Pri enoplastnem perceptronu je bila funkcija *f* definirana kot linearna funkcija *f(x)=wx+b* (kjer je *w* matrika uteži, *x* vektor vhodnih značilnosti, in *b* vektor pristranskosti). Pri različnih arhitekturah nevronskih mrež lahko ta funkcija prevzame bolj zapleteno obliko. + +> Pri klasifikaciji je pogosto zaželeno, da dobimo verjetnosti ustreznih razredov kot izhod mreže. Za pretvorbo poljubnih števil v verjetnosti (npr. za normalizacijo izhoda) pogosto uporabljamo funkcijo **softmax** σ, in funkcija *f* postane *f(x)=σ(wx+b)*. + +V zgornji definiciji *f* sta *w* in *b* imenovana **parametra** θ=⟨*w,b*⟩. Glede na podatkovni niz ⟨**X**,**Y**⟩ lahko izračunamo skupno napako na celotnem podatkovnem nizu kot funkcijo parametrov θ. + +> ✅ **Cilj učenja nevronske mreže je zmanjšati napako z spreminjanjem parametrov θ** + +## Optimizacija z gradientnim spustom + +Obstaja dobro poznana metoda optimizacije funkcij, imenovana **gradientni spust**. Ideja je, da lahko izračunamo odvod (v večdimenzionalnem primeru imenovan **gradient**) funkcije izgube glede na parametre in spreminjamo parametre tako, da se napaka zmanjša. To lahko formaliziramo na naslednji način: + +* Inicializiramo parametre z naključnimi vrednostmi w(0), b(0) +* Večkrat ponovimo naslednji korak: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b + +Med učenjem naj bi se koraki optimizacije izračunavali glede na celoten podatkovni niz (spomnite se, da se izguba izračuna kot vsota skozi vse učne primere). V praksi pa vzamemo majhne dele podatkovnega niza, imenovane **miniserije**, in izračunamo gradient na podlagi podniza podatkov. Ker se podniz vsakič izbere naključno, se takšna metoda imenuje **stohastični gradientni spust** (SGD). + +## Večplastni perceptroni in povratno razširjanje + +Enoplastna mreža, kot smo videli zgoraj, je sposobna klasificirati linearno ločljive razrede. Za gradnjo bogatejšega modela lahko združimo več plasti mreže. Matematično to pomeni, da bo funkcija *f* imela bolj zapleteno obliko in bo izračunana v več korakih: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) + +Tukaj je α **nelinearna aktivacijska funkcija**, σ funkcija softmax, in parametri θ=<*w1,b1,w2,b2*>. + +Algoritem gradientnega spusta ostane enak, vendar je izračun gradientov bolj zahteven. Glede na pravilo verižnega diferenciiranja lahko izračunamo odvode kot: + +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) + +> ✅ Pravilo verižnega diferenciiranja se uporablja za izračun odvoda funkcije izgube glede na parametre. + +Opazimo, da je levi del vseh teh izrazov enak, zato lahko učinkovito izračunamo odvode, začenši s funkcijo izgube in gremo "nazaj" skozi računski graf. Zato se metoda učenja večplastnega perceptrona imenuje **povratno razširjanje** ali 'backprop'. + +računski graf + +> TODO: navedba vira slike + +> ✅ Povratno razširjanje bomo podrobneje obravnavali v našem zvezku z zgledom. + +## Zaključek + +V tej lekciji smo zgradili svojo knjižnico nevronskih mrež in jo uporabili za preprosto dvodimenzionalno klasifikacijsko nalogo. + +## 🚀 Izziv + +V priloženem zvezku boste implementirali svoj okvir za gradnjo in učenje večplastnih perceptronov. Podrobno boste lahko videli, kako delujejo sodobne nevronske mreže. + +Nadaljujte z zvezkom [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) in ga preučite. + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) + +## Pregled in samostojno učenje + +Povratno razširjanje je pogost algoritem, ki se uporablja v umetni inteligenci in strojnem učenju, zato je vredno [ga podrobneje preučiti](https://wikipedia.org/wiki/Backpropagation). + +## [Naloga](lab/README.md) + +V tej laboratorijski nalogi boste uporabili okvir, ki ste ga zgradili v tej lekciji, za reševanje klasifikacije ročno napisanih številk MNIST. + +* [Navodila](lab/README.md) +* [Zvezek](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..06d94f9d --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -0,0 +1,32 @@ + +# MNIST klasifikacija z našim lastnim ogrodjem + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Rešite problem klasifikacije ročno napisanih številk MNIST z uporabo perceptrona z 1, 2 in 3 plastmi. Uporabite ogrodje za nevronske mreže, ki smo ga razvili med lekcijo. + +## Začetek zvezka + +Začnite laboratorijsko nalogo z odpiranjem [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Vprašanja + +Kot rezultat te naloge poskusite odgovoriti na naslednja vprašanja: + +- Ali funkcija aktivacije med plastmi vpliva na zmogljivost mreže? +- Ali potrebujemo mrežo z 2 ali 3 plastmi za to nalogo? +- Ste imeli kakršne koli težave pri učenju mreže? Še posebej, ko se je število plasti povečalo. +- Kako se uteži mreže obnašajo med učenjem? Lahko narišete največjo absolutno vrednost uteži glede na epoho, da razumete povezavo. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..1821d381 --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Okvirji za nevronske mreže + +Kot smo že spoznali, za učinkovito učenje nevronskih mrež moramo narediti dve stvari: + +* Operirati na tensorjih, npr. množiti, seštevati in izračunavati funkcije, kot sta sigmoid ali softmax +* Izračunati gradient vseh izrazov, da lahko izvedemo optimizacijo z gradientnim spustom + +## [Pre-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) + +Medtem ko knjižnica `numpy` omogoča prvo nalogo, potrebujemo mehanizem za izračun gradientov. V [našem okviru](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb), ki smo ga razvili v prejšnjem razdelku, smo morali ročno programirati vse funkcije za odvode znotraj metode `backward`, ki izvaja povratno propagacijo. Idealno bi bilo, da nam okvir omogoča izračun gradientov *kateregakoli izraza*, ki ga lahko definiramo. + +Druga pomembna stvar je možnost izvajanja izračunov na GPU ali drugih specializiranih enotah, kot je [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Učenje globokih nevronskih mrež zahteva *zelo veliko* izračunov, zato je ključnega pomena, da lahko te izračune paraleliziramo na GPU-jih. + +> ✅ Izraz 'paralelizirati' pomeni razdeliti izračune med več naprav. + +Trenutno sta najbolj priljubljena okvira za nevronske mreže: [TensorFlow](http://TensorFlow.org) in [PyTorch](https://pytorch.org/). Oba ponujata nizkonivojski API za delo s tensorji na CPU in GPU. Poleg nizkonivojskega API-ja obstaja tudi višjenivojski API, imenovan [Keras](https://keras.io/) in [PyTorch Lightning](https://pytorchlightning.ai/). + +Nizkonivojski API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) +------------------|-------------------------------------|-------------------------------- +Višjenivojski API | [Keras](https://keras.io/) | [PyTorch Lightning](https://pytorchlightning.ai/) + +**Nizkonivojski API-ji** v obeh okvirjih omogočajo gradnjo tako imenovanih **računalniških grafov**. Ta graf definira, kako izračunati rezultat (običajno funkcijo izgube) z danimi vhodnimi parametri, in ga je mogoče prenesti na GPU za izračun, če je na voljo. Obstajajo funkcije za diferenciacijo tega računalniškega grafa in izračun gradientov, ki jih nato lahko uporabimo za optimizacijo parametrov modela. + +**Višjenivojski API-ji** obravnavajo nevronske mreže kot **zaporedje slojev** in omogočajo enostavnejšo konstrukcijo večine nevronskih mrež. Učenje modela običajno zahteva pripravo podatkov in nato klic funkcije `fit`, ki opravi delo. + +Višjenivojski API omogoča hitro konstrukcijo tipičnih nevronskih mrež brez skrbi za številne podrobnosti. Hkrati pa nizkonivojski API ponuja veliko več nadzora nad procesom učenja, zato se pogosto uporablja v raziskavah, ko se ukvarjamo z novimi arhitekturami nevronskih mrež. + +Pomembno je tudi razumeti, da lahko oba API-ja uporabljamo skupaj, npr. lahko razvijemo svojo arhitekturo sloja mreže z nizkonivojskim API-jem in jo nato uporabimo znotraj večje mreže, ki je bila konstruirana in naučena z višjenivojskim API-jem. Lahko pa definiramo mrežo z višjenivojskim API-jem kot zaporedje slojev in nato uporabimo svoj nizkonivojski učni zanki za izvedbo optimizacije. Oba API-ja uporabljata iste osnovne koncepte in sta zasnovana tako, da dobro delujeta skupaj. + +## Učenje + +V tem tečaju ponujamo večino vsebine tako za PyTorch kot za TensorFlow. Izberete lahko svoj najljubši okvir in se osredotočite le na ustrezne zvezke. Če niste prepričani, kateri okvir izbrati, preberite nekaj razprav na internetu o **PyTorch vs. TensorFlow**. Lahko si tudi ogledate oba okvira, da pridobite boljše razumevanje. + +Kjer je mogoče, bomo za enostavnost uporabljali višjenivojske API-je. Vendar pa verjamemo, da je pomembno razumeti, kako nevronske mreže delujejo od temeljev naprej, zato na začetku začnemo z delom z nizkonivojskim API-jem in tensorji. Če pa želite hitro začeti in ne želite porabiti veliko časa za učenje teh podrobnosti, lahko te preskočite in se takoj osredotočite na zvezke z višjenivojskim API-jem. + +## ✍️ Naloge: Okvirji + +Nadaljujte z učenjem v naslednjih zvezkih: + +Nizkonivojski API | [TensorFlow+Keras Zvezek](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) +------------------|-------------------------------------|-------------------------------- +Višjenivojski API | [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* + +Ko obvladate okvirje, si poglejmo koncept prenaučenja. + +# Prenaučenje + +Prenaučenje je izjemno pomemben koncept v strojnem učenju, zato je zelo pomembno, da ga pravilno razumemo! + +Razmislimo o naslednjem problemu približevanja 5 točk (predstavljenih z `x` na spodnjih grafih): + +![linearno](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sl.jpg) | ![prenaučeno](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sl.jpg) +-------------------------|-------------------------- +**Linearen model, 2 parametra** | **Nelinearen model, 7 parametrov** +Napaka pri učenju = 5.3 | Napaka pri učenju = 0 +Napaka pri validaciji = 5.1 | Napaka pri validaciji = 20 + +* Na levi vidimo dobro približanje s premico. Ker je število parametrov ustrezno, model pravilno razume razporeditev točk. +* Na desni je model premočan. Ker imamo le 5 točk in model ima 7 parametrov, se lahko prilagodi tako, da gre skozi vse točke, kar povzroči, da je napaka pri učenju 0. Vendar pa to preprečuje modelu, da bi razumel pravilni vzorec podatkov, zato je napaka pri validaciji zelo visoka. + +Zelo pomembno je najti pravo ravnovesje med kompleksnostjo modela (številom parametrov) in številom učnih vzorcev. + +## Zakaj pride do prenaučenja + + * Premalo učnih podatkov + * Preveč zmogljiv model + * Preveč šuma v vhodnih podatkih + +## Kako zaznati prenaučenje + +Kot lahko vidite na zgornjem grafu, lahko prenaučenje zaznamo z zelo nizko napako pri učenju in visoko napako pri validaciji. Običajno med učenjem vidimo, da se napake pri učenju in validaciji zmanjšujejo, nato pa se pri neki točki napaka pri validaciji preneha zmanjševati in začne naraščati. To je znak prenaučenja in indikator, da bi morali verjetno prenehati z učenjem (ali vsaj narediti posnetek modela). + +![prenaučenje](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sl.png) + +## Kako preprečiti prenaučenje + +Če opazite, da pride do prenaučenja, lahko storite naslednje: + + * Povečate količino učnih podatkov + * Zmanjšate kompleksnost modela + * Uporabite kakšno [tehniko regularizacije](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), kot je [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), ki jo bomo obravnavali kasneje. + +## Prenaučenje in kompromis med pristranskostjo in varianco + +Prenaučenje je pravzaprav primer bolj splošnega problema v statistiki, imenovanega [kompromis med pristranskostjo in varianco](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Če razmislimo o možnih virih napak v našem modelu, lahko vidimo dva tipa napak: + +* **Napake zaradi pristranskosti** nastanejo, ker naš algoritem ne more pravilno zajeti odnosa med učnimi podatki. To je lahko posledica dejstva, da naš model ni dovolj zmogljiv (**podnaučenje**). +* **Napake zaradi variance**, ki nastanejo, ker model približuje šum v vhodnih podatkih namesto smiselnega odnosa (**prenaučenje**). + +Med učenjem se napake zaradi pristranskosti zmanjšujejo (ker se naš model uči približevati podatke), medtem ko se napake zaradi variance povečujejo. Pomembno je, da prenehamo z učenjem - bodisi ročno (ko zaznamo prenaučenje) bodisi samodejno (z uvedbo regularizacije) - da preprečimo prenaučenje. + +## Zaključek + +V tej lekciji ste spoznali razlike med različnimi API-ji za dva najbolj priljubljena AI okvirja, TensorFlow in PyTorch. Poleg tega ste se naučili o zelo pomembni temi, prenaučenju. + +## 🚀 Izziv + +V priloženih zvezkih boste našli 'naloge' na dnu; preglejte zvezke in dokončajte naloge. + +## [Po-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) + +## Pregled & Samostojno učenje + +Raziskujte naslednje teme: + +- TensorFlow +- PyTorch +- Prenaučenje + +Vprašajte se naslednja vprašanja: + +- Kakšna je razlika med TensorFlow in PyTorch? +- Kakšna je razlika med prenaučenjem in podnaučenjem? + +## [Naloga](lab/README.md) + +V tej nalogi boste reševali dve klasifikacijski težavi z uporabo enoslojnih in večslojnih popolnoma povezanih mrež z uporabo PyTorch ali TensorFlow. + +* [Navodila](lab/README.md) +* [Zvezek](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..4a90f242 --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -0,0 +1,28 @@ + +# Klasifikacija s PyTorch/TensorFlow + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Rešite dve klasifikacijski nalogi z uporabo enoslojnih in večslojnih popolnoma povezanih mrež s PyTorch ali TensorFlow: + +1. **[Klasifikacija irisa](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - primer problema s tabelaričnimi vhodnimi podatki, ki jih je mogoče obdelati s klasičnim strojnih učenjem. Vaša naloga bo razvrstiti irise v 3 razrede na podlagi 4 numeričnih parametrov. +2. **MNIST** problem klasifikacije ročno napisanih številk, ki smo ga že obravnavali. + +Preizkusite različne arhitekture mrež, da dosežete najboljšo možno natančnost. + +## Začetni zvezek + +Začnite laboratorijsko nalogo z odpiranjem [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/3-NeuralNetworks/README.md b/translations/sl/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..3b6255c7 --- /dev/null +++ b/translations/sl/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Uvod v nevronske mreže + +![Povzetek vsebine o uvodu v nevronske mreže v skici](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sl.png) + +Kot smo razpravljali v uvodu, je eden od načinov za dosego inteligence treniranje **računalniškega modela** ali **umetnih možganov**. Od sredine 20. stoletja so raziskovalci preizkušali različne matematične modele, dokler se v zadnjih letih ta smer ni izkazala za izjemno uspešno. Takšni matematični modeli možganov se imenujejo **nevronske mreže**. + +> Včasih se nevronske mreže imenujejo *Umetne nevronske mreže* (Artificial Neural Networks, ANNs), da bi poudarili, da govorimo o modelih, ne o resničnih mrežah nevronov. + +## Strojno učenje + +Nevronske mreže so del širše discipline, imenovane **Strojno učenje**, katere cilj je uporaba podatkov za treniranje računalniških modelov, ki so sposobni reševati probleme. Strojno učenje predstavlja velik del umetne inteligence, vendar v tem učnem načrtu ne pokrivamo klasičnega strojnega učenja. + +> Obiščite naš ločen učni načrt **[Strojno učenje za začetnike](http://github.com/microsoft/ml-for-beginners)**, da se naučite več o klasičnem strojnem učenju. + +Pri strojnem učenju predpostavljamo, da imamo nek nabor podatkov primerov **X** in ustrezne izhodne vrednosti **Y**. Primeri so pogosto N-dimenzionalni vektorji, ki vsebujejo **značilnosti**, medtem ko se izhodi imenujejo **oznake**. + +Obravnavali bomo dve najpogostejši težavi strojnega učenja: + +* **Klasifikacija**, kjer moramo razvrstiti vhodni objekt v dva ali več razredov. +* **Regresija**, kjer moramo za vsak vhodni vzorec napovedati številčno vrednost. + +> Pri predstavljanju vhodov in izhodov kot tenzorjev je vhodni nabor podatkov matrika velikosti M×N, kjer je M število vzorcev, N pa število značilnosti. Izhodne oznake Y so vektor velikosti M. + +V tem učnem načrtu se bomo osredotočili le na modele nevronskih mrež. + +## Model nevrona + +Iz biologije vemo, da naši možgani sestojijo iz nevralnih celic, od katerih ima vsaka več "vhodov" (aksonov) in en izhod (dendrit). Aksoni in dendriti lahko prenašajo električne signale, povezave med aksoni in dendriti pa lahko kažejo različne stopnje prevodnosti (nadzorovane z nevromediatorji). + +![Model nevrona](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sl.jpg) | ![Model nevrona](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sl.png) +----|---- +Resnični nevron *([Slika](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) iz Wikipedije)* | Umetni nevron *(Slika avtorja)* + +Tako najpreprostejši matematični model nevrona vsebuje več vhodov X1, ..., XN in en izhod Y ter vrsto uteži W1, ..., WN. Izhod se izračuna kot: + +Y = f\left(\sum_{i=1}^N X_iW_i\right) + +kjer je f neka nelinearna **aktivacijska funkcija**. + +> Zgodnji modeli nevrona so bili opisani v klasičnem članku [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) avtorjev Warren McCullock in Walter Pitts leta 1943. Donald Hebb je v svoji knjigi "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" predlagal način, kako je mogoče te mreže trenirati. + +## V tem poglavju + +V tem poglavju se bomo naučili o: +* [Perceptronu](03-Perceptron/README.md), enem najzgodnejših modelov nevronskih mrež za klasifikacijo z dvema razredoma +* [Večplastnih mrežah](04-OwnFramework/README.md) z ustreznim zvezkom [kako zgraditi svoj okvir](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Okvirih nevronskih mrež](05-Frameworks/README.md), z naslednjimi zvezki: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) in [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Prenaučenju](../../../../lessons/3-NeuralNetworks/05-Frameworks) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku naj se šteje za avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/sl/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..7e71849f --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Uvod v računalniški vid + +[Računalniški vid](https://wikipedia.org/wiki/Computer_vision) je področje, katerega cilj je omogočiti računalnikom, da pridobijo visok nivo razumevanja digitalnih slik. To je precej široka definicija, saj lahko *razumevanje* pomeni veliko različnih stvari, vključno z iskanjem objekta na sliki (**prepoznavanje objektov**), razumevanjem dogajanja (**prepoznavanje dogodkov**), opisovanjem slike z besedilom ali rekonstrukcijo prizora v 3D. Obstajajo tudi posebne naloge, povezane s človeškimi slikami: ocenjevanje starosti in čustev, prepoznavanje obrazov ter določanje 3D drže, če naštejemo le nekaj primerov. + +## [Pred-predavanjski kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) + +Ena najpreprostejših nalog računalniškega vida je **klasifikacija slik**. + +Računalniški vid pogosto velja za vejo umetne inteligence. Danes se večina nalog računalniškega vida rešuje z uporabo nevronskih mrež. Več o posebni vrsti nevronskih mrež, ki se uporabljajo za računalniški vid, [konvolucijske nevronske mreže](../07-ConvNets/README.md), bomo spoznali v tem poglavju. + +Vendar pa je v mnogih primerih smiselno, da pred obdelavo slike z nevronsko mrežo uporabimo nekatere algoritmične tehnike za izboljšanje slike. + +Na voljo je več Python knjižnic za obdelavo slik: + +* **[imageio](https://imageio.readthedocs.io/en/stable/)** omogoča branje/pisanje različnih formatov slik. Podpira tudi ffmpeg, uporabno orodje za pretvorbo video okvirjev v slike. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (znan tudi kot PIL) je nekoliko zmogljivejši in podpira manipulacijo slik, kot so morfing, prilagoditve palete in drugo. +* **[OpenCV](https://opencv.org/)** je zmogljiva knjižnica za obdelavo slik, napisana v C++, ki je postala *de facto* standard za obdelavo slik. Ima priročen Python vmesnik. +* **[dlib](http://dlib.net/)** je knjižnica v C++, ki implementira številne algoritme strojnega učenja, vključno z nekaterimi algoritmi računalniškega vida. Ima tudi Python vmesnik in se lahko uporablja za zahtevne naloge, kot so prepoznavanje obrazov in zaznavanje obraznih značilnosti. + +## OpenCV + +[OpenCV](https://opencv.org/) velja za *de facto* standard za obdelavo slik. Vsebuje veliko uporabnih algoritmov, implementiranih v C++. OpenCV lahko uporabljate tudi v Pythonu. + +Dober vir za učenje OpenCV je [tečaj Learn OpenCV](https://learnopencv.com/getting-started-with-opencv/). V našem učnem načrtu ni cilj, da se naučimo OpenCV, ampak da vam pokažemo nekaj primerov, kdaj ga lahko uporabimo in kako. + +### Nalaganje slik + +Slike v Pythonu lahko priročno predstavimo z NumPy polji. Na primer, sivinske slike velikosti 320x200 pik bi bile shranjene v polju velikosti 200x320, barvne slike enakih dimenzij pa bi imele obliko 200x320x3 (za 3 barvne kanale). Za nalaganje slike lahko uporabite naslednjo kodo: + +```python +import cv2 +import matplotlib.pyplot as plt + +im = cv2.imread('image.jpeg') +plt.imshow(im) +``` + +Tradicionalno OpenCV uporablja kodiranje BGR (modro-zelena-rdeča) za barvne slike, medtem ko ostala Python orodja uporabljajo bolj tradicionalno RGB (rdeča-zelena-modra). Da bo slika pravilno prikazana, jo morate pretvoriti v barvni prostor RGB, bodisi z zamenjavo dimenzij v NumPy polju ali z uporabo funkcije OpenCV: + +```python +im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) +``` + +Ista funkcija `cvtColor` se lahko uporablja za izvajanje drugih pretvorb barvnih prostorov, kot je pretvorba slike v sivinsko ali v HSV (odtenek-nasičenost-vrednost) barvni prostor. + +OpenCV lahko uporabite tudi za nalaganje video posnetkov okvir za okvir - primer je podan v vajah [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +### Obdelava slik + +Preden sliko posredujete nevronski mreži, boste morda želeli uporabiti več korakov predobdelave. OpenCV omogoča številne funkcije, vključno z: + +* **Spreminjanje velikosti** slike z uporabo `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Zameglitev** slike z uporabo `im = cv2.medianBlur(im,3)` ali `im = cv2.GaussianBlur(im, (3,3), 0)` +* Spreminjanje **svetlosti in kontrasta** slike je mogoče z manipulacijo NumPy polj, kot je opisano [v tej opombi na Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Uporaba [pragovne obdelave](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) z uporabo funkcij `cv2.threshold`/`cv2.adaptiveThreshold`, kar je pogosto boljše od prilagajanja svetlosti ali kontrasta. +* Uporaba različnih [transformacij](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) na sliki: + - **[Afine transformacije](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** so uporabne, če morate kombinirati rotacijo, spreminjanje velikosti in nagib slike ter poznate izvorno in ciljno lokacijo treh točk na sliki. Afine transformacije ohranjajo vzporedne črte vzporedne. + - **[Perspektivne transformacije](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** so uporabne, ko poznate izvorne in ciljne položaje 4 točk na sliki. Na primer, če posnamete sliko pravokotnega dokumenta s pametnim telefonom pod kotom in želite narediti pravokotno sliko samega dokumenta. +* Razumevanje gibanja znotraj slike z uporabo **[optičnega toka](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. + +## Primeri uporabe računalniškega vida + +V našem [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) podajamo nekaj primerov, kdaj lahko računalniški vid uporabimo za izvajanje specifičnih nalog: + +* **Predobdelava fotografije Braillove knjige**. Osredotočamo se na to, kako lahko uporabimo pragovno obdelavo, zaznavanje značilnosti, perspektivno transformacijo in manipulacijo NumPy za ločevanje posameznih Braillovih simbolov za nadaljnjo klasifikacijo z nevronsko mrežo. + +![Braillova slika](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sl.jpeg) | ![Predobdelana Braillova slika](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sl.png) | ![Braillovi simboli](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sl.png) +----|-----|----- + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Zaznavanje gibanja v videu z uporabo razlike med okvirji**. Če je kamera fiksna, bi morali biti okvirji iz video posnetka med seboj precej podobni. Ker so okvirji predstavljeni kot polja, lahko z odštevanjem teh polj za dva zaporedna okvirja dobimo razliko med piksli, ki bi morala biti nizka za statične okvirje in postati višja, ko je v sliki zaznano večje gibanje. + +![Slika video okvirjev in razlik med okvirji](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sl.png) + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Zaznavanje gibanja z uporabo optičnega toka**. [Optični tok](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) nam omogoča razumevanje, kako se posamezni piksli na video okvirjih premikajo. Obstajata dve vrsti optičnega toka: + + - **Gost optični tok** izračuna vektorsko polje, ki kaže, kam se premika vsak piksel. + - **Redek optični tok** temelji na zaznavanju nekaterih značilnih značilnosti slike (npr. robov) in gradnji njihove trajektorije od okvirja do okvirja. + +![Slika optičnega toka](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sl.png) + +> Slika iz [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +## ✍️ Primeri zvezkov: OpenCV [preizkusite OpenCV v akciji](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +Izvedimo nekaj eksperimentov z OpenCV z raziskovanjem [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). + +## Zaključek + +Včasih je mogoče relativno kompleksne naloge, kot so zaznavanje gibanja ali zaznavanje konic prstov, rešiti zgolj z računalniškim vidom. Zato je zelo koristno poznati osnovne tehnike računalniškega vida in kaj knjižnice, kot je OpenCV, omogočajo. + +## 🚀 Izziv + +Oglejte si [ta 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) iz oddaje AI show, da se naučite o projektu Cortic Tigers in kako so zgradili rešitev na osnovi blokov za demokratizacijo nalog računalniškega vida prek robota. Raziskujte druge podobne projekte, ki pomagajo novim učencem pri vstopu na področje. + +## [Po-predavanjski kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) + +## Pregled in samostojno učenje + +Preberite več o optičnem toku [v tem odličnem vodiču](https://learnopencv.com/optical-flow-in-opencv/). + +## [Naloga](lab/README.md) + +V tej nalogi boste posneli video s preprostimi gestami, vaš cilj pa bo izluščiti premike gor/dol/levo/desno z uporabo optičnega toka. + +Okvir premika dlani + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/sl/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..dde156fb --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Zaznavanje gibanja z optičnim tokom + +Laboratorijska naloga iz [učnega načrta AI za začetnike](https://aka.ms/ai-beginners). + +## Naloga + +Oglejte si [ta video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), v katerem se dlan osebe premika levo/desno/gor/dol na stabilnem ozadju. + +**Vaš cilj** je uporabiti optični tok za določitev, kateri deli videa vsebujejo gibanje gor/dol/levo/desno. + +**Razširjeni cilj** bi bil dejansko slediti gibanju dlani/prsta z uporabo tona kože, kot je opisano [v tem blogu](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) ali [tukaj](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). + +## Začetni zvezek + +Začnite nalogo z odpiranjem [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) + +## Ključna spoznanja + +Včasih je mogoče relativno kompleksne naloge, kot sta zaznavanje gibanja ali zaznavanje konic prstov, rešiti zgolj s pomočjo računalniškega vida. Zato je zelo koristno vedeti, kaj knjižnice, kot je OpenCV, omogočajo. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/sl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..6cf151bb --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Dobro poznane arhitekture CNN + +### VGG-16 + +VGG-16 je mreža, ki je leta 2014 dosegla 92,7 % natančnost pri razvrščanju top-5 na ImageNet. Ima naslednjo strukturo slojev: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sl.jpg) + +Kot lahko vidite, VGG sledi tradicionalni piramidni arhitekturi, ki je zaporedje slojev konvolucije in združevanja (pooling). + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sl.jpg) + +> Slika iz [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 je družina modelov, ki jih je leta 2015 predlagal Microsoft Research. Glavna ideja ResNet-a je uporaba **rezidualnih blokov**: + + + +> Slika iz [tega članka](https://arxiv.org/pdf/1512.03385.pdf) + +Razlog za uporabo identitetnega prehoda je, da sloj napove **razliko** med rezultatom prejšnjega sloja in izhodom rezidualnega bloka - od tod ime *rezidual*. Ti bloki so veliko lažji za treniranje, kar omogoča gradnjo mrež s stotinami teh blokov (najpogostejše različice so ResNet-52, ResNet-101 in ResNet-152). + +To mrežo si lahko predstavljate tudi kot sposobno prilagajanja svoje kompleksnosti podatkovnemu naboru. Na začetku, ko začnete trenirati mrežo, so vrednosti uteži majhne, večina signala pa gre skozi identitetne sloje. Ko se trening nadaljuje in uteži postanejo večje, se poveča pomen parametrov mreže, mreža pa se prilagodi, da doseže potrebno izrazno moč za pravilno razvrščanje slik iz treninga. + +### Google Inception + +Arhitektura Google Inception to idejo nadgradi in zgradi vsak sloj mreže kot kombinacijo več različnih poti: + + + +> Slika iz [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) + +Tukaj je treba poudariti vlogo konvolucij 1x1, saj na prvi pogled nimajo smisla. Zakaj bi potrebovali filter velikosti 1x1 za obdelavo slike? Vendar pa morate upoštevati, da konvolucijski filtri delujejo tudi z več globinskimi kanali (sprva - RGB barve, v nadaljnjih slojih - kanali za različne filtre), konvolucija 1x1 pa se uporablja za mešanje teh vhodnih kanalov z različnimi učljivimi utežmi. To lahko razumemo tudi kot vzorčenje navzdol (pooling) po dimenziji kanalov. + +Tukaj je [dober blog prispevek](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) na to temo in [izvirni članek](https://arxiv.org/pdf/1312.4400.pdf). + +### MobileNet + +MobileNet je družina modelov z zmanjšano velikostjo, primernih za mobilne naprave. Uporabite jih, če imate omejene vire in lahko žrtvujete nekaj natančnosti. Glavna ideja teh modelov je tako imenovana **globinska ločljiva konvolucija**, ki omogoča predstavitev konvolucijskih filtrov kot sestavo prostorskih konvolucij in konvolucije 1x1 po globinskih kanalih. To bistveno zmanjša število parametrov, kar naredi mrežo manjšo in tudi lažjo za treniranje z manj podatki. + +Tukaj je [dober blog prispevek o MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). + +## Zaključek + +V tej enoti ste spoznali glavni koncept nevronskih mrež za računalniški vid - konvolucijske mreže. Arhitekture iz resničnega sveta, ki poganjajo razvrščanje slik, zaznavanje objektov in celo generiranje slik, so vse osnovane na CNN-jih, le z več sloji in nekaterimi dodatnimi triki pri treniranju. + +## 🚀 Izziv + +V priloženih zvezkih so na dnu zapiski o tem, kako doseči večjo natančnost. Naredite nekaj eksperimentov, da preverite, ali lahko dosežete višjo natančnost. + +## [Kvizi po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Pregled in samostojno učenje + +Čeprav se CNN-ji najpogosteje uporabljajo za naloge računalniškega vida, so na splošno dobri za ekstrakcijo vzorcev fiksne velikosti. Na primer, če obdelujemo zvoke, lahko uporabimo CNN-je za iskanje specifičnih vzorcev v avdio signalu - v tem primeru bi bili filtri enodimenzionalni (in ta CNN bi se imenoval 1D-CNN). Prav tako se včasih uporablja 3D-CNN za ekstrakcijo značilnosti v večdimenzionalnem prostoru, kot so določeni dogodki, ki se pojavljajo na videoposnetku - CNN lahko zajame določene vzorce spreminjanja značilnosti skozi čas. Naredite pregled in samostojno učenje o drugih nalogah, ki jih je mogoče opraviti s CNN-ji. + +## [Naloga](lab/README.md) + +V tej laboratorijski nalogi boste razvrščali različne pasme mačk in psov. Te slike so bolj kompleksne kot podatkovni nabor MNIST, imajo višje dimenzije in več kot 10 razredov. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/sl/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..d1229557 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Konvolucijske nevronske mreže + +Prej smo videli, da so nevronske mreže precej dobre pri obdelavi slik, celo enoslojni perceptron lahko z razumno natančnostjo prepozna ročno napisane številke iz podatkovne zbirke MNIST. Vendar je podatkovna zbirka MNIST zelo posebna, saj so vse številke centrirane znotraj slike, kar nalogo poenostavi. + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +V resničnem življenju želimo prepoznati predmete na sliki ne glede na njihovo natančno lokacijo na sliki. Računalniški vid se razlikuje od splošne klasifikacije, saj pri iskanju določenega predmeta na sliki pregledujemo sliko in iščemo specifične **vzorce** ter njihove kombinacije. Na primer, pri iskanju mačke najprej iščemo horizontalne črte, ki lahko tvorijo brke, nato pa določena kombinacija brkov lahko nakazuje, da gre za sliko mačke. Relativna pozicija in prisotnost določenih vzorcev sta pomembni, ne pa njihova natančna lokacija na sliki. + +Za ekstrakcijo vzorcev bomo uporabili koncept **konvolucijskih filtrov**. Kot veste, je slika predstavljena z 2D-matriko ali 3D-tenzorjem z barvno globino. Uporaba filtra pomeni, da vzamemo relativno majhno matriko **jedra filtra** in za vsak piksel v izvirni sliki izračunamo uteženo povprečje s sosednjimi točkami. To si lahko predstavljamo kot majhno okno, ki drsi po celotni sliki in povpreči vse piksle glede na uteži v matriki jedra filtra. + +![Filter za vertikalne robove](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sl.png) | ![Filter za horizontalne robove](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sl.png) +----|---- + +> Slika avtorja Dmitry Soshnikov + +Na primer, če na številke MNIST uporabimo filtre za vertikalne in horizontalne robove velikosti 3x3, lahko dobimo poudarke (npr. visoke vrednosti) tam, kjer so vertikalni in horizontalni robovi v naši izvirni sliki. Tako lahko ta dva filtra uporabimo za "iskanje" robov. Podobno lahko oblikujemo različne filtre za iskanje drugih nizkoročnih vzorcev: + +> Slika [Leung-Malikovega nabora filtrov](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Vendar pa, medtem ko lahko filtre oblikujemo ročno za ekstrakcijo nekaterih vzorcev, lahko mrežo oblikujemo tudi tako, da se vzorce nauči samodejno. To je ena glavnih idej za CNN. + +## Glavne ideje za CNN + +Delovanje CNN temelji na naslednjih pomembnih idejah: + +* Konvolucijski filtri lahko izločijo vzorce +* Mrežo lahko oblikujemo tako, da se filtri trenirajo samodejno +* Enak pristop lahko uporabimo za iskanje vzorcev v visokoročnih značilnostih, ne le v izvirni sliki. Tako CNN za ekstrakcijo značilnosti deluje na hierarhiji značilnosti, od nizkoročnih kombinacij pikslov do visokoročnih kombinacij delov slike. + +![Hierarhična ekstrakcija značilnosti](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sl.png) + +> Slika iz [članka Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), na podlagi [njihove raziskave](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) + +## ✍️ Vaje: Konvolucijske nevronske mreže + +Nadaljujmo z raziskovanjem, kako delujejo konvolucijske nevronske mreže in kako lahko dosežemo trenirane filtre, tako da preučimo ustrezne zvezke: + +* [Konvolucijske nevronske mreže - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Konvolucijske nevronske mreže - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) + +## Piramidna arhitektura + +Večina CNN-jev, ki se uporabljajo za obdelavo slik, sledi tako imenovani piramidni arhitekturi. Prva konvolucijska plast, ki se uporabi na izvirnih slikah, običajno vsebuje relativno majhno število filtrov (8-16), ki ustrezajo različnim kombinacijam pikslov, kot so horizontalne/vertikalne črte ali poteze. Na naslednji ravni zmanjšamo prostorsko dimenzijo mreže in povečamo število filtrov, kar ustreza več možnim kombinacijam preprostih značilnosti. Z vsako plastjo, ko se premikamo proti končnemu klasifikatorju, se prostorske dimenzije slike zmanjšujejo, število filtrov pa narašča. + +Kot primer si poglejmo arhitekturo VGG-16, mreže, ki je leta 2014 dosegla 92,7 % natančnost pri klasifikaciji top-5 na ImageNetu: + +![Plasti ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sl.jpg) + +![Piramida ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sl.jpg) + +> Slika iz [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) + +## Najbolj znane arhitekture CNN + +[Študij najbolj znanih arhitektur CNN nadaljujte tukaj](CNN_Architectures.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/sl/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..61886a00 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -0,0 +1,43 @@ + +# Razvrščanje obrazov hišnih ljubljenčkov + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Predstavljajte si, da morate razviti aplikacijo za vrtec hišnih ljubljenčkov, ki bo katalogizirala vse živali. Ena izmed odličnih funkcij takšne aplikacije bi bila samodejno prepoznavanje pasme s fotografije. To je mogoče uspešno doseči z uporabo nevronskih mrež. + +Vaša naloga je, da usposobite konvolucijsko nevronsko mrežo za razvrščanje različnih pasem mačk in psov z uporabo podatkovne zbirke **Pet Faces**. + +## Podatkovna zbirka + +Uporabili bomo podatkovno zbirko **Pet Faces**, ki je izpeljana iz podatkovne zbirke hišnih ljubljenčkov [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Vsebuje 35 različnih pasem psov in mačk. + +![Podatkovna zbirka, s katero bomo delali](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sl.png) + +Za prenos podatkovne zbirke uporabite naslednji del kode: + +```python +!wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz +!tar xfz petfaces.tar.gz +!rm petfaces.tar.gz +``` + +## Začetek zvezka + +Začnite laboratorijsko nalogo z odpiranjem [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) + +## Ključne ugotovitve + +Rešili ste razmeroma zapleten problem razvrščanja slik od začetka! Kljub velikemu številu razredov ste uspeli doseči razumno natančnost! Smiselno je tudi meriti top-k natančnost, saj je enostavno zamenjati nekatere razrede, ki tudi ljudem niso jasno različni. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..47a03fef --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -0,0 +1,90 @@ + +# Vnaprej naučena omrežja in prenos učenja + +Učenje konvolucijskih nevronskih omrežij (CNN) lahko zahteva veliko časa in podatkov. Velik del časa se porabi za učenje najboljših nizkofrekvenčnih filtrov, ki jih omrežje lahko uporabi za prepoznavanje vzorcev iz slik. Naravno se pojavi vprašanje – ali lahko uporabimo nevronsko omrežje, naučeno na enem naboru podatkov, in ga prilagodimo za razvrščanje drugih slik, ne da bi morali izvesti celoten proces učenja? + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) + +Ta pristop se imenuje **prenos učenja**, saj prenesemo določeno znanje iz enega modela nevronskega omrežja na drugega. Pri prenosu učenja običajno začnemo z vnaprej naučenim modelom, ki je bil naučen na velikem naboru slik, kot je **ImageNet**. Ti modeli že dobro prepoznavajo različne značilnosti iz splošnih slik, in v mnogih primerih lahko že samo zgraditev klasifikatorja na podlagi teh značilnosti prinese dobre rezultate. + +> ✅ Prenos učenja je izraz, ki ga najdemo tudi na drugih akademskih področjih, kot je izobraževanje. Nanaša se na proces prenosa znanja iz enega področja na drugo. + +## Vnaprej naučeni modeli kot ekstraktorji značilnosti + +Konvolucijska omrežja, o katerih smo govorili v prejšnjem poglavju, vsebujejo več plasti, od katerih vsaka iz slike izlušči določene značilnosti – od nizkofrekvenčnih kombinacij pikslov (kot so horizontalne/vertikalne črte ali poteze) do višjefrekvenčnih kombinacij značilnosti, ki ustrezajo stvarem, kot je oko plamena. Če CNN naučimo na dovolj velikem naboru splošnih in raznolikih slik, bi se moralo omrežje naučiti prepoznavati te skupne značilnosti. + +Tako Keras kot PyTorch vsebujeta funkcije za enostavno nalaganje vnaprej naučenih uteži nevronskih omrežij za nekatere pogoste arhitekture, večina katerih je bila naučena na slikah iz ImageNet. Najpogosteje uporabljene so opisane na strani [Arhitekture CNN](../07-ConvNets/CNN_Architectures.md) iz prejšnje lekcije. Še posebej lahko razmislite o uporabi enega od naslednjih: + +* **VGG-16/VGG-19**, ki sta relativno preprosta modela, a še vedno zagotavljata dobro natančnost. Pogosto je uporaba VGG kot prvi poskus dobra izbira za preverjanje delovanja prenosa učenja. +* **ResNet** je družina modelov, ki jih je predlagal Microsoft Research leta 2015. Imajo več plasti in zato zahtevajo več virov. +* **MobileNet** je družina modelov z zmanjšano velikostjo, primernih za mobilne naprave. Uporabite jih, če imate omejene vire in lahko žrtvujete nekaj natančnosti. + +Tukaj so primeri značilnosti, izluščenih iz slike mačke z omrežjem VGG-16: + +![Značilnosti, izluščene z VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sl.png) + +## Nabor podatkov Mačke proti psom + +V tem primeru bomo uporabili nabor podatkov [Mačke in psi](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), ki je zelo podoben resničnemu scenariju razvrščanja slik. + +## ✍️ Vaja: Prenos učenja + +Poglejmo prenos učenja v praksi v ustreznih beležnicah: + +* [Prenos učenja - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Prenos učenja - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) + +## Vizualizacija nasprotne mačke + +Vnaprej naučeno nevronsko omrežje vsebuje različne vzorce v svojem *"možganu"*, vključno s pojmi, kot je **idealna mačka** (pa tudi idealen pes, idealna zebra itd.). Zanimivo bi bilo nekako **vizualizirati to sliko**. Vendar to ni preprosto, saj so vzorci razpršeni po utežeh omrežja in organizirani v hierarhično strukturo. + +Eden od pristopov, ki ga lahko uporabimo, je začeti z naključno sliko in nato uporabiti tehniko **optimizacije z gradientnim spustom**, da prilagodimo to sliko tako, da omrežje začne misliti, da gre za mačko. + +![Zanka optimizacije slike](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sl.png) + +Če to storimo, bomo dobili nekaj, kar je zelo podobno naključnemu šumu. To je zato, ker *obstaja veliko načinov, kako omrežje prepričati, da je vhodna slika mačka*, vključno z nekaterimi, ki vizualno nimajo smisla. Čeprav te slike vsebujejo veliko vzorcev, značilnih za mačko, jih nič ne omejuje, da bi bile vizualno prepoznavne. + +Za izboljšanje rezultata lahko v funkcijo izgube dodamo še en člen, imenovan **izguba variacije**. To je metrika, ki prikazuje, kako podobni so sosednji piksli slike. Zmanjšanje izgube variacije naredi sliko bolj gladko in odstrani šum – s tem razkrije bolj vizualno privlačne vzorce. Tukaj je primer takšnih "idealnih" slik, ki so z visoko verjetnostjo razvrščene kot mačka in kot zebra: + +![Idealna mačka](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sl.png) | ![Idealna zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sl.png) +-----|----- +*Idealna mačka* | *Idealna zebra* + +Podoben pristop lahko uporabimo za izvajanje tako imenovanih **nasprotnih napadov** na nevronsko omrežje. Recimo, da želimo prevarati nevronsko omrežje in narediti, da pes izgleda kot mačka. Če vzamemo sliko psa, ki jo omrežje prepozna kot psa, jo lahko nato nekoliko prilagodimo z uporabo optimizacije z gradientnim spustom, dokler omrežje ne začne razvrščati slike kot mačko: + +![Slika psa](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sl.png) | ![Slika psa, razvrščena kot mačka](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sl.png) +-----|----- +*Izvirna slika psa* | *Slika psa, razvrščena kot mačka* + +Kodo za reproduciranje zgornjih rezultatov si oglejte v naslednji beležnici: + +* [Idealna in nasprotna mačka - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) + +## Zaključek + +S prenosom učenja lahko hitro sestavite klasifikator za nalogo razvrščanja prilagojenih objektov in dosežete visoko natančnost. Vidite lahko, da bolj zapletene naloge, ki jih zdaj rešujemo, zahtevajo večjo računsko moč in jih ni mogoče enostavno rešiti na CPU. V naslednji enoti bomo poskusili uporabiti lažjo implementacijo za učenje istega modela z nižjimi računalniškimi viri, kar bo prineslo le nekoliko nižjo natančnost. + +## 🚀 Izziv + +V priloženih beležnicah so na dnu zapiski o tem, kako prenos znanja najbolje deluje s sorodnimi učnimi podatki (na primer nova vrsta živali). Naredite nekaj eksperimentov s popolnoma novimi vrstami slik, da vidite, kako dobro ali slabo delujejo vaši modeli za prenos znanja. + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Pregled in samostojno učenje + +Preberite [TrainingTricks.md](TrainingTricks.md), da poglobite svoje znanje o drugih načinih učenja vaših modelov. + +## [Naloga](lab/README.md) + +V tem laboratoriju bomo uporabili resnični nabor podatkov [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) z 35 pasmami mačk in psov ter zgradili klasifikator s prenosom učenja. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..e9190b22 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -0,0 +1,117 @@ + +# Triki za učenje globokega učenja + +Ko postajajo nevronske mreže globlje, postaja proces njihovega učenja vse bolj zahteven. Ena glavnih težav so tako imenovani [izginjajoči gradienti](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) ali [eksplodirajoči gradienti](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Ta objava](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ponuja dober uvod v te težave. + +Da bi bilo učenje globokih mrež bolj učinkovito, lahko uporabimo nekaj tehnik. + +## Ohranjanje vrednosti v razumnih intervalih + +Da bi bile numerične izračune bolj stabilne, moramo zagotoviti, da so vse vrednosti znotraj naše nevronske mreže v razumnem obsegu, običajno [-1..1] ali [0..1]. To ni zelo stroga zahteva, vendar je narava izračunov s plavajočo vejico takšna, da vrednosti različnih velikosti ni mogoče natančno obdelovati skupaj. Na primer, če seštejemo 10-10 in 1010, bomo verjetno dobili 1010, ker se bo manjša vrednost "pretvorila" v isti red kot večja, s čimer se bo mantisa izgubila. + +Večina aktivacijskih funkcij ima nelinearnosti okoli [-1..1], zato je smiselno skalirati vse vhodne podatke na interval [-1..1] ali [0..1]. + +## Začetna inicializacija uteži + +Idealno bi bilo, da so vrednosti v istem obsegu po prehodu skozi sloje mreže. Zato je pomembno inicializirati uteži na način, ki ohranja porazdelitev vrednosti. + +Normalna porazdelitev **N(0,1)** ni dobra ideja, ker če imamo *n* vhodov, bo standardni odklon izhoda *n*, vrednosti pa bodo verjetno presegle interval [0..1]. + +Pogosto uporabljene inicializacije so: + +- Enakomerna porazdelitev -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** zagotavlja, da za vhode z ničelno srednjo vrednostjo in standardnim odklonom 1 ostaneta enaka srednja vrednost in standardni odklon +- **N(0,√2/(n_in+n_out))** -- tako imenovana **Xavier inicializacija** (`glorot`), ki pomaga ohranjati signale v obsegu med naprej in nazaj propagacijo + +## Normalizacija po sklopih + +Tudi ob pravilni inicializaciji uteži lahko te med učenjem postanejo poljubno velike ali majhne, kar bo signale spravilo iz ustreznega obsega. Signale lahko vrnemo nazaj z uporabo ene od tehnik **normalizacije**. Čeprav jih je več (normalizacija uteži, normalizacija slojev), se najpogosteje uporablja normalizacija po sklopih. + +Ideja **normalizacije po sklopih** je upoštevati vse vrednosti znotraj minibatch-a in izvesti normalizacijo (tj. odšteti srednjo vrednost in deliti s standardnim odklonom) na podlagi teh vrednosti. Implementirana je kot sloj mreže, ki izvaja to normalizacijo po uporabi uteži, vendar pred aktivacijsko funkcijo. Rezultat je višja končna natančnost in hitrejše učenje. + +Tukaj je [izvirni članek](https://arxiv.org/pdf/1502.03167.pdf) o normalizaciji po sklopih, [razlaga na Wikipediji](https://en.wikipedia.org/wiki/Batch_normalization) in [dober uvodni blog](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (ter eden [v ruščini](https://habrahabr.ru/post/309302/)). + +## Dropout + +**Dropout** je zanimiva tehnika, ki med učenjem odstrani določen odstotek naključnih nevronov. Implementirana je kot sloj z enim parametrom (odstotek nevronov za odstranitev, običajno 10%-50%), med učenjem pa ničla naključne elemente vhodnega vektorja, preden jih posreduje naslednjemu sloju. + +Čeprav se to morda sliši kot nenavadna ideja, lahko učinek dropout-a na učenje klasifikatorja MNIST številk vidite v zvezku [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Pospeši učenje in omogoča doseganje višje natančnosti v manj učnih epohah. + +Ta učinek lahko razložimo na več načinov: + +- Lahko ga obravnavamo kot naključni šok modelu, ki optimizacijo premakne iz lokalnega minimuma +- Lahko ga obravnavamo kot *implicitno povprečenje modela*, saj lahko rečemo, da med dropout-om učimo nekoliko drugačen model + +> *Nekateri pravijo, da si pijan človek bolje zapomni nekaj naslednje jutro v primerjavi s treznim človekom, ker možgani z nekaj okvarjenimi nevroni bolje prilagodijo, da zajamejo pomen. Nikoli nismo sami testirali, ali je to res ali ne.* + +## Preprečevanje prenaučenja + +Eden najpomembnejših vidikov globokega učenja je sposobnost preprečevanja [prenaučenja](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Čeprav je morda mamljivo uporabiti zelo zmogljiv model nevronske mreže, moramo vedno uravnotežiti število parametrov modela s številom učnih vzorcev. + +> Poskrbite, da razumete koncept [prenaučenja](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), ki smo ga predstavili prej! + +Obstaja več načinov za preprečevanje prenaučenja: + +- Zgodnje ustavljanje -- neprekinjeno spremljanje napake na validacijskem sklopu in ustavitev učenja, ko se napaka na validacijskem sklopu začne povečevati. +- Eksplicitno razpadanje uteži / regularizacija -- dodajanje dodatne kazni funkciji izgube za visoke absolutne vrednosti uteži, kar preprečuje modelu doseganje zelo nestabilnih rezultatov +- Povprečenje modela -- učenje več modelov in nato povprečenje rezultatov. To pomaga zmanjšati varianco. +- Dropout (Implicitno povprečenje modela) + +## Optimizatorji / algoritmi učenja + +Drug pomemben vidik učenja je izbira dobrega algoritma učenja. Čeprav je klasični **gradientni spust** razumna izbira, je lahko včasih prepočasen ali povzroči druge težave. + +V globokem učenju uporabljamo **stohastični gradientni spust** (SGD), ki je gradientni spust, uporabljen na minibatch-ih, naključno izbranih iz učnega sklopa. Uteži se prilagodijo po tej formuli: + +wt+1 = wt - η∇ℒ + +### Momentum + +Pri **momentum SGD** ohranjamo del gradienta iz prejšnjih korakov. To je podobno, kot če se premikamo nekam z inercijo, in prejmemo udarec v drugo smer; naša pot se ne spremeni takoj, ampak ohranja del prvotnega gibanja. Tukaj uvedemo še en vektor v, ki predstavlja *hitrost*: + +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt + vt+1 + +Parameter γ tukaj označuje, v kolikšni meri upoštevamo inercijo: γ=0 ustreza klasičnemu SGD; γ=1 je čista enačba gibanja. + +### Adam, Adagrad itd. + +Ker v vsakem sloju množimo signale z matriko Wi, odvisno od ||Wi||, lahko gradient bodisi izginja in je blizu 0, bodisi narašča neomejeno. To je bistvo problema eksplodirajočih/izginjajočih gradientov. + +Ena od rešitev tega problema je uporaba samo smeri gradienta v enačbi in ignoriranje absolutne vrednosti, tj. + +wt+1 = wt - η(∇ℒ/||∇ℒ||), kjer ||∇ℒ|| = √∑(∇ℒ)2 + +Ta algoritem se imenuje **Adagrad**. Drugi algoritmi, ki uporabljajo isto idejo: **RMSProp**, **Adam** + +> **Adam** velja za zelo učinkovit algoritem za številne aplikacije, zato če niste prepričani, katerega uporabiti - uporabite Adam. + +### Omejevanje gradienta + +Omejevanje gradienta je razširitev zgornje ideje. Ko je ||∇ℒ|| ≤ θ, upoštevamo prvotni gradient pri optimizaciji uteži, in ko je ||∇ℒ|| > θ - gradient delimo z njegovo normo. Tukaj je θ parameter, v večini primerov lahko vzamemo θ=1 ali θ=10. + +### Zmanjševanje hitrosti učenja + +Uspeh učenja pogosto zavisi od parametra hitrosti učenja η. Logično je domnevati, da večje vrednosti η vodijo do hitrejšega učenja, kar je nekaj, kar običajno želimo na začetku učenja, nato pa manjše vrednosti η omogočajo fino nastavitev mreže. Zato v večini primerov želimo zmanjšati η med procesom učenja. + +To lahko storimo tako, da η pomnožimo z nekim številom (npr. 0,98) po vsaki epohi učenja ali z uporabo bolj zapletenega **načrta hitrosti učenja**. + +## Različne arhitekture mrež + +Izbira prave arhitekture mreže za vaš problem je lahko zahtevna. Običajno bi izbrali arhitekturo, ki se je izkazala za učinkovito za našo specifično nalogo (ali podobno). Tukaj je [dober pregled](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) arhitektur nevronskih mrež za računalniški vid. + +> Pomembno je izbrati arhitekturo, ki bo dovolj zmogljiva glede na število učnih vzorcev, ki jih imamo. Izbira preveč zmogljivega modela lahko vodi do [prenaučenja](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). + +Druga dobra možnost je uporaba arhitekture, ki se bo samodejno prilagodila zahtevani kompleksnosti. Do neke mere sta arhitekturi **ResNet** in **Inception** samoprilagodljivi. [Več o arhitekturah za računalniški vid](../07-ConvNets/CNN_Architectures.md). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..23a8d09e --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -0,0 +1,39 @@ + +# Klasifikacija hišnih ljubljenčkov iz Oxforda z uporabo prenosa učenja + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Predstavljajte si, da morate razviti aplikacijo za vrtec za hišne ljubljenčke, ki bi katalogizirala vse ljubljenčke. Ena izmed odličnih funkcij takšne aplikacije bi bila samodejno prepoznavanje pasme s fotografije. V tej nalogi bomo uporabili prenos učenja za klasifikacijo slik resničnih hišnih ljubljenčkov iz nabora podatkov [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). + +## Nabor podatkov + +Uporabili bomo izvirni nabor podatkov [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), ki vsebuje 35 različnih pasem psov in mačk. + +Za prenos nabora podatkov uporabite to kodo: + +```python +!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz +!tar xfz images.tar.gz +!rm images.tar.gz +``` + +## Začetek zvezka + +Začnite laboratorijsko nalogo z odpiranjem [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) + +## Ključna spoznanja + +Prenos učenja in vnaprej naučena omrežja nam omogočajo, da relativno enostavno rešujemo resnične probleme klasifikacije slik. Vendar pa vnaprej naučena omrežja dobro delujejo na slikah podobne vrste, in če začnemo klasificirati zelo različne slike (npr. medicinske slike), bodo rezultati verjetno precej slabši. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/sl/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..554117b0 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -0,0 +1,109 @@ + +# Avtoenkoderji + +Pri treniranju CNN-jev je ena izmed težav, da potrebujemo veliko označenih podatkov. Pri klasifikaciji slik moramo slike razvrstiti v različne razrede, kar zahteva ročno delo. + +## [Pre-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) + +Vendar pa bi morda želeli uporabiti surove (neoznačene) podatke za treniranje CNN ekstraktorjev značilnosti, kar imenujemo **samostojno učenje**. Namesto oznak bomo uporabili slike za treniranje kot vhod in izhod mreže. Glavna ideja **avtoenkoderja** je, da imamo **kodirno mrežo**, ki vhodno sliko pretvori v nek **latentni prostor** (običajno je to vektor manjših dimenzij), nato pa **dekodirno mrežo**, katere cilj je rekonstruirati izvirno sliko. + +> ✅ [Avtoenkoder](https://wikipedia.org/wiki/Autoencoder) je "vrsta umetne nevronske mreže, ki se uporablja za učenje učinkovitega kodiranja neoznačenih podatkov." + +Ker treniramo avtoenkoder, da zajame čim več informacij iz izvirne slike za natančno rekonstrukcijo, mreža poskuša najti najboljšo **vgradnjo** vhodnih slik, da zajame njihov pomen. + +![Diagram avtoenkoderja](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sl.jpg) + +> Slika iz [Keras bloga](https://blog.keras.io/building-autoencoders-in-keras.html) + +## Scenariji uporabe avtoenkoderjev + +Čeprav rekonstrukcija izvirnih slik sama po sebi morda ne zveni uporabno, obstaja nekaj scenarijev, kjer so avtoenkoderji še posebej koristni: + +* **Zmanjšanje dimenzije slik za vizualizacijo** ali **treniranje vgradnje slik**. Običajno avtoenkoderji dajejo boljše rezultate kot PCA, ker upoštevajo prostorsko naravo slik in hierarhične značilnosti. +* **Odstranjevanje šuma**, tj. odstranjevanje šuma s slike. Ker šum vsebuje veliko nepotrebnih informacij, avtoenkoder ne more vsega vključiti v relativno majhen latentni prostor, zato zajame le pomemben del slike. Pri treniranju odstranjevalcev šuma začnemo z izvirnimi slikami in uporabimo slike z umetno dodanim šumom kot vhod za avtoenkoder. +* **Super-resolucija**, povečanje ločljivosti slike. Začnemo z visokoločljivostnimi slikami in uporabimo sliko z nižjo ločljivostjo kot vhod za avtoenkoder. +* **Generativni modeli**. Ko treniramo avtoenkoder, lahko dekodirni del uporabimo za ustvarjanje novih objektov, ki izhajajo iz naključnih latentnih vektorjev. + +## Variacijski avtoenkoderji (VAE) + +Tradicionalni avtoenkoderji nekako zmanjšajo dimenzijo vhodnih podatkov in ugotovijo pomembne značilnosti vhodnih slik. Vendar pa latentni vektorji pogosto nimajo veliko smisla. Z drugimi besedami, če vzamemo MNIST podatkovno zbirko kot primer, ugotoviti, katere številke ustrezajo različnim latentnim vektorjem, ni enostavna naloga, saj bližnji latentni vektorji ne ustrezajo nujno istim številkam. + +Po drugi strani pa je za treniranje *generativnih* modelov bolje imeti neko razumevanje latentnega prostora. Ta ideja nas pripelje do **variacijskega avtoenkoderja** (VAE). + +VAE je avtoenkoder, ki se nauči napovedovati *statistično porazdelitev* latentnih parametrov, tako imenovano **latentno porazdelitev**. Na primer, morda želimo, da so latentni vektorji normalno porazdeljeni z nekim povprečjem zmean in standardnim odklonom zsigma (obe vrednosti sta vektorja neke dimenzionalnosti d). Kodirnik v VAE se nauči napovedovati te parametre, nato pa dekodirnik vzame naključni vektor iz te porazdelitve za rekonstrukcijo objekta. + +Povzetek: + +* Iz vhodnega vektorja napovemo `z_mean` in `z_log_sigma` (namesto da napovemo standardni odklon, napovemo njegov logaritem) +* Vzamemo vzorec `sample` iz porazdelitve N(zmean,exp(zlog\_sigma)) +* Dekodirnik poskuša dekodirati izvirno sliko z uporabo `sample` kot vhodnega vektorja + + + +> Slika iz [tega bloga](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) avtorja Isaaka Dykemana + +Variacijski avtoenkoderji uporabljajo kompleksno funkcijo izgube, ki je sestavljena iz dveh delov: + +* **Izguba rekonstrukcije** je funkcija izgube, ki prikazuje, kako blizu je rekonstruirana slika ciljni (lahko je povprečna kvadratna napaka ali MSE). To je ista funkcija izgube kot pri običajnih avtoenkoderjih. +* **KL izguba**, ki zagotavlja, da porazdelitev latentnih spremenljivk ostane blizu normalni porazdelitvi. Temelji na konceptu [Kullback-Leiblerjeve divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - merilu za oceno podobnosti dveh statističnih porazdelitev. + +Ena pomembna prednost VAE-jev je, da omogočajo relativno enostavno generiranje novih slik, ker vemo, iz katere porazdelitve vzeti latentne vektorje. Na primer, če treniramo VAE z 2D latentnim vektorjem na MNIST, lahko nato spreminjamo komponente latentnega vektorja, da dobimo različne številke: + +vaemnist + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +Opazite, kako se slike prelivajo ena v drugo, ko začnemo jemati latentne vektorje iz različnih delov latentnega prostora parametrov. Ta prostor lahko vizualiziramo tudi v 2D: + +vaemnist cluster + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +## ✍️ Vaje: Avtoenkoderji + +Več o avtoenkoderjih se naučite v teh priloženih zvezkih: + +* [Avtoenkoderji v TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Avtoenkoderji v PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) + +## Lastnosti avtoenkoderjev + +* **Specifični za podatke** - dobro delujejo le s tipom slik, na katerih so bili trenirani. Na primer, če treniramo mrežo za super-resolucijo na rožah, ne bo dobro delovala na portretih. To je zato, ker mreža lahko ustvari sliko z višjo ločljivostjo tako, da vzame fine podrobnosti iz značilnosti, naučenih iz podatkovne zbirke za treniranje. +* **Izgubni** - rekonstruirana slika ni enaka izvirni sliki. Narava izgube je določena z *funkcijo izgube*, uporabljeno med treniranjem. +* Deluje na **neoznačenih podatkih** + +## [Post-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) + +## Zaključek + +V tej lekciji ste se naučili o različnih vrstah avtoenkoderjev, ki so na voljo AI znanstveniku. Naučili ste se, kako jih zgraditi in kako jih uporabiti za rekonstrukcijo slik. Prav tako ste se naučili o VAE in kako ga uporabiti za generiranje novih slik. + +## 🚀 Izziv + +V tej lekciji ste se naučili o uporabi avtoenkoderjev za slike. Vendar pa jih lahko uporabimo tudi za glasbo! Oglejte si projekt Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), ki uporablja avtoenkoderje za učenje rekonstrukcije glasbe. Izvedite nekaj [eksperimentov](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) s to knjižnico, da vidite, kaj lahko ustvarite. + +## [Post-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) + +## Pregled in samostojno učenje + +Za referenco preberite več o avtoenkoderjih v teh virih: + +* [Gradnja avtoenkoderjev v Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blog objava na NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Razlaga variacijskih avtoenkoderjev](https://kvfrans.com/variational-autoencoders-explained/) +* [Pogojni variacijski avtoenkoderji](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) + +## Naloga + +Na koncu [tega zvezka z uporabo TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) boste našli 'nalogo' - uporabite jo kot svojo nalogo. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/10-GANs/README.md b/translations/sl/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..d2718bf0 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,110 @@ + +# Generativne nasprotujoče si mreže + +V prejšnjem poglavju smo spoznali **generativne modele**: modele, ki lahko ustvarijo nove slike, podobne tistim v učnem naboru podatkov. VAE je bil dober primer generativnega modela. + +## [Pre-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Če pa poskušamo ustvariti nekaj resnično smiselnega, na primer sliko z razumno ločljivostjo, z VAE, bomo opazili, da se učenje ne konvergira dobro. Za ta primer uporabe se moramo naučiti o drugi arhitekturi, ki je posebej namenjena generativnim modelom - **Generativne nasprotujoče si mreže** ali GAN-i. + +Glavna ideja GAN-a je, da imamo dve nevronski mreži, ki se učita ena proti drugi: + + + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +> ✅ Malo besedišča: +> * **Generator** je mreža, ki vzame naključni vektor in kot rezultat ustvari sliko. +> * **Diskriminator** je mreža, ki vzame sliko in mora ugotoviti, ali je to prava slika (iz učnega nabora podatkov) ali pa jo je ustvaril generator. V bistvu gre za klasifikator slik. + +### Diskriminator + +Arhitektura diskriminatorja se ne razlikuje od običajne mreže za klasifikacijo slik. V najpreprostejšem primeru je lahko popolnoma povezan klasifikator, najverjetneje pa bo [konvolucijska mreža](../07-ConvNets/README.md). + +> ✅ GAN, ki temelji na konvolucijskih mrežah, se imenuje [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +CNN diskriminator je sestavljen iz naslednjih slojev: več konvolucij+poolingov (z zmanjševanjem prostorske velikosti) in enega ali več popolnoma povezanih slojev za pridobitev "vektorskih značilnosti", končnega binarnega klasifikatorja. + +> ✅ 'Pooling' v tem kontekstu je tehnika, ki zmanjša velikost slike. "Pooling sloji zmanjšajo dimenzije podatkov tako, da združijo izhode skupin nevronov na enem sloju v en nevron na naslednjem sloju." - [vir](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Generator + +Generator je nekoliko bolj zahteven. Lahko si ga predstavljate kot obrnjenega diskriminatorja. Začne se z latentnim vektorjem (namesto vektorskih značilnosti), ima popolnoma povezan sloj, ki ga pretvori v zahtevano velikost/obliko, nato pa sledi dekonvolucija+povečevanje. To je podobno *dekoderju* v [avtoenkoderju](../09-Autoencoders/README.md). + +> ✅ Ker je konvolucijski sloj implementiran kot linearni filter, ki prehaja skozi sliko, je dekonvolucija v bistvu podobna konvoluciji in jo je mogoče implementirati z isto logiko sloja. + + + +> Slika avtorja [Dmitry Soshnikov](http://soshnikov.com) + +### Učenje GAN-a + +GAN-i se imenujejo **nasprotujoči si**, ker med generatorjem in diskriminatorjem poteka stalno tekmovanje. Med tem tekmovanjem se oba, generator in diskriminator, izboljšujeta, kar omogoča mreži, da se nauči ustvarjati vedno boljše slike. + +Učenje poteka v dveh fazah: + +* **Učenje diskriminatorja**. Ta naloga je precej preprosta: ustvarimo serijo slik z generatorjem, jih označimo z 0, kar pomeni lažna slika, in vzamemo serijo slik iz vhodnega nabora podatkov (z oznako 1, prava slika). Dobimo *izgubo diskriminatorja* in izvedemo povratno propagacijo. +* **Učenje generatorja**. To je nekoliko bolj zahtevno, ker neposredno ne poznamo pričakovanega izhoda za generator. Vzamemo celotno GAN mrežo, ki jo sestavljata generator in diskriminator, jo napolnimo z naključnimi vektorji in pričakujemo, da bo rezultat 1 (kar ustreza pravim slikam). Nato zamrznemo parametre diskriminatorja (ne želimo, da se uči v tem koraku) in izvedemo povratno propagacijo. + +Med tem procesom izgube generatorja in diskriminatorja ne upadata bistveno. V idealnem primeru bi se morali nihati, kar ustreza izboljšanju obeh mrež. + +## ✍️ Vaje: GAN-i + +* [GAN zvezek v TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN zvezek v PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Težave pri učenju GAN-ov + +GAN-i so znani po tem, da jih je še posebej težko učiti. Tukaj je nekaj težav: + +* **Kolaps načina**. S tem izrazom mislimo, da se generator nauči ustvariti eno uspešno sliko, ki zavaja diskriminator, in ne raznolikosti različnih slik. +* **Občutljivost na hiperparametre**. Pogosto lahko opazimo, da GAN sploh ne konvergira, nato pa nenadoma znižanje stopnje učenja vodi do konvergence. +* Ohranitev **ravnotežja** med generatorjem in diskriminatorjem. V mnogih primerih lahko izguba diskriminatorja relativno hitro pade na nič, kar povzroči, da generator ne more nadaljevati učenja. Da bi to premagali, lahko poskusimo nastaviti različne stopnje učenja za generator in diskriminator ali preskočimo učenje diskriminatorja, če je izguba že prenizka. +* Učenje za **visoko ločljivost**. Odraža isti problem kot pri avtoenkoderjih, ta težava se pojavi, ker rekonstrukcija preveč slojev konvolucijske mreže vodi do artefaktov. Ta težava se običajno reši s tako imenovanim **progresivnim povečevanjem**, ko se najprej nekaj slojev uči na slikah z nizko ločljivostjo, nato pa se sloji "odblokirajo" ali dodajo. Druga rešitev bi bila dodajanje dodatnih povezav med sloji in učenje več ločljivosti hkrati - podrobnosti si oglejte v tem [Multi-Scale Gradient GANs članku](https://arxiv.org/abs/1903.06048). + +## Prenos sloga + +GAN-i so odličen način za ustvarjanje umetniških slik. Druga zanimiva tehnika je tako imenovani **prenos sloga**, ki vzame eno **vsebinsko sliko** in jo ponovno nariše v drugačnem slogu, pri čemer uporabi filtre iz **slogovne slike**. + +Kako deluje: +* Začnemo z naključno šumovsko sliko (ali z vsebinsko sliko, vendar je za razumevanje lažje začeti z naključnim šumom). +* Naš cilj je ustvariti takšno sliko, ki bo blizu tako vsebinski sliki kot slogovni sliki. To določata dve funkciji izgube: + - **Izguba vsebine** se izračuna na podlagi značilnosti, ki jih CNN izlušči na nekaterih slojih iz trenutne slike in vsebinske slike. + - **Izguba sloga** se izračuna med trenutno sliko in slogovno sliko na pameten način z uporabo Gramovih matrik (več podrobnosti v [primeru zvezka](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Da bi sliko naredili bolj gladko in odstranili šum, uvedemo tudi **izgubo variacije**, ki izračuna povprečno razdaljo med sosednjimi slikovnimi pikami. +* Glavna optimizacijska zanka prilagaja trenutno sliko z uporabo gradientnega spusta (ali kakšnega drugega optimizacijskega algoritma), da minimizira skupno izgubo, ki je utežena vsota vseh treh izgub. + +## ✍️ Primer: [Prenos sloga](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Po-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Zaključek + +V tej lekciji ste se naučili o GAN-ih in kako jih učiti. Prav tako ste spoznali posebne izzive, s katerimi se ta vrsta nevronske mreže lahko sooča, ter nekatere strategije, kako jih premagati. + +## 🚀 Izziv + +Preizkusite [zvezek za prenos sloga](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) z uporabo svojih slik. + +## Pregled in samostojno učenje + +Za referenco preberite več o GAN-ih v teh virih: + +* Marco Pasini, [10 lekcij, ki sem se jih naučil pri učenju GAN-ov v enem letu](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 arhitektura za razmislek +* [Ustvarjanje generativne umetnosti z uporabo GAN-ov na Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) + +## Naloga + +Ponovno preglejte enega od dveh zvezkov, povezanih s to lekcijo, in ponovno naučite GAN z uporabo svojih slik. Kaj lahko ustvarite? + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..ce071e60 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -0,0 +1,188 @@ + +# Prepoznavanje objektov + +Modeli za klasifikacijo slik, s katerimi smo se doslej ukvarjali, so obdelali sliko in podali kategorialni rezultat, kot je razred 'številka' v problemu MNIST. Vendar pa v mnogih primerih ne želimo le vedeti, da slika prikazuje objekte – želimo določiti njihovo natančno lokacijo. To je pravzaprav bistvo **prepoznavanja objektov**. + +## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) + +![Prepoznavanje objektov](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sl.png) + +> Slika s [spletne strani YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Naiven pristop k prepoznavanju objektov + +Recimo, da želimo na sliki najti mačko. Zelo naiven pristop k prepoznavanju objektov bi bil naslednji: + +1. Razdelimo sliko na več ploščic. +2. Na vsaki ploščici izvedemo klasifikacijo slike. +3. Tiste ploščice, ki dajo dovolj visoko aktivacijo, lahko štejemo za ploščice, ki vsebujejo iskani objekt. + +![Naivno prepoznavanje objektov](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sl.png) + +> *Slika iz [zvezka z vajami](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Vendar pa ta pristop ni idealen, saj omogoča algoritmu, da zelo nenatančno določi okvir objekta. Za bolj natančno lokacijo moramo izvesti nekakšno **regresijo**, da napovemo koordinate okvirjev – za to pa potrebujemo specifične podatkovne nabore. + +## Regresija za prepoznavanje objektov + +[Ta blog objava](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) ponuja odličen uvod v prepoznavanje oblik. + +## Podatkovni nabori za prepoznavanje objektov + +Pri tej nalogi lahko naletite na naslednje podatkovne nabore: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) – 20 razredov +* [COCO](http://cocodataset.org/#home) – Pogosti objekti v kontekstu. 80 razredov, okvirji in maske za segmentacijo + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sl.jpg) + +## Metode za ocenjevanje prepoznavanja objektov + +### Presek nad unijo (Intersection over Union) + +Medtem ko je pri klasifikaciji slik enostavno izmeriti, kako dobro deluje algoritem, moramo pri prepoznavanju objektov izmeriti tako pravilnost razreda kot tudi natančnost določene lokacije okvirja. Za slednje uporabljamo tako imenovani **Presek nad unijo** (IoU), ki meri, kako dobro se dve škatli (ali dve poljubni območji) prekrivata. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sl.png) + +> *Slika 2 iz [te odlične blog objave o IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Ideja je preprosta – površino preseka med dvema figurama delimo s površino njune unije. Za dve identični območji bi bil IoU enak 1, medtem ko bi bil za popolnoma ločeni območji enak 0. Sicer pa bo vrednost variirala med 0 in 1. Običajno upoštevamo le tiste okvirje, za katere je IoU nad določeno vrednostjo. + +### Povprečna natančnost (Average Precision) + +Recimo, da želimo izmeriti, kako dobro je prepoznan določen razred objektov $C$. Za merjenje tega uporabljamo metriko **Povprečna natančnost**, ki se izračuna na naslednji način: + +1. Upoštevamo krivuljo natančnost-pokritost, ki prikazuje natančnost glede na vrednost praga zaznavanja (od 0 do 1). +2. Glede na prag bomo na sliki zaznali več ali manj objektov ter dobili različne vrednosti natančnosti in pokritosti. +3. Krivulja bo videti takole: + + + +> *Slika iz [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Povprečna natančnost za določen razred $C$ je površina pod to krivuljo. Natančneje, os pokritosti je običajno razdeljena na 10 delov, natančnost pa se povpreči čez vse te točke: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP in IoU + +Upoštevali bomo le tiste zaznave, za katere je IoU nad določeno vrednostjo. Na primer, v podatkovnem naboru PASCAL VOC je običajno $\mbox{IoU Threshold} = 0.5$, medtem ko se v COCO AP meri za različne vrednosti $\mbox{IoU Threshold}$. + + + +> *Slika iz [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Povprečna povprečna natančnost – mAP + +Glavna metrika za prepoznavanje objektov se imenuje **Povprečna povprečna natančnost** ali **mAP**. To je vrednost povprečne natančnosti, povprečena čez vse razrede objektov, včasih pa tudi čez $\mbox{IoU Threshold}$. Podrobnejši opis postopka izračuna **mAP** najdete +[v tej blog objavi](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), pa tudi [tukaj s primeri kode](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Različni pristopi k prepoznavanju objektov + +Obstajata dve glavni skupini algoritmov za prepoznavanje objektov: + +* **Mreže za predlaganje regij** (R-CNN, Fast R-CNN, Faster R-CNN). Glavna ideja je generiranje **regij interesa** (ROI) in izvajanje CNN nad njimi, da poiščemo največjo aktivacijo. To je nekoliko podobno naivnemu pristopu, z izjemo, da se ROI generirajo na bolj pameten način. Ena glavnih pomanjkljivosti teh metod je, da so počasne, saj potrebujemo veliko prehodov CNN klasifikatorja čez sliko. +* **Enoprehodne** (YOLO, SSD, RetinaNet) metode. Pri teh arhitekturah zasnujemo mrežo tako, da napoveduje tako razrede kot ROI v enem prehodu. + +### R-CNN: CNN, ki temelji na regijah + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) uporablja [Selektivno iskanje](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) za generiranje hierarhične strukture regij ROI, ki se nato prenesejo skozi CNN ekstraktorje značilnosti in SVM-klasifikatorje za določanje razreda objekta ter linearno regresijo za določanje koordinat *okvirja*. [Uradni članek](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sl.png) + +> *Slika iz van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sl.png) + +> *Slike iz [tega bloga](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) + +### F-RCNN – Hitri R-CNN + +Ta pristop je podoben R-CNN, vendar se regije določijo po tem, ko so bile uporabljene konvolucijske plasti. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sl.png) + +> Slika iz [uradnega članka](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 + +Glavna ideja tega pristopa je uporaba nevronske mreže za napovedovanje ROI – tako imenovane *Mreže za predlaganje regij*. [Članek](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sl.png) + +> Slika iz [uradnega članka](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Popolnoma konvolucijska mreža, ki temelji na regijah + +Ta algoritem je še hitrejši od Faster R-CNN. Glavna ideja je naslednja: + +1. Značilnosti pridobimo z uporabo ResNet-101. +2. Značilnosti obdelamo z **Zemljevidom občutljivih na položaj**. Vsak objekt iz $C$ razredov je razdeljen na $k\times k$ regij, mrežo pa treniramo za napovedovanje delov objektov. +3. Za vsak del iz $k\times k$ regij vse mreže glasujejo za razrede objektov, razred objekta z največ glasovi pa je izbran. + +![r-fcn slika](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sl.png) + +> Slika iz [uradnega članka](https://arxiv.org/abs/1605.06409) + +### YOLO – You Only Look Once + +YOLO je algoritem za prepoznavanje objektov v realnem času z enim prehodom. Glavna ideja je naslednja: + + * Slika je razdeljena na $S\times S$ regij. + * Za vsako regijo **CNN** napove $n$ možnih objektov, koordinate *okvirja* in *zaupanje*=*verjetnost* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sl.png) + +> Slika iz [uradnega članka](https://arxiv.org/abs/1506.02640) + +### Drugi algoritmi + +* RetinaNet: [uradni članek](https://arxiv.org/abs/1708.02002) + - [PyTorch implementacija v Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Keras implementacija](https://github.com/fizyr/keras-retinanet) + - [Prepoznavanje objektov z RetinaNet](https://keras.io/examples/vision/retinanet/) v Keras vzorcih +* SSD (Single Shot Detector): [uradni članek](https://arxiv.org/abs/1512.02325) + +## ✍️ Vaje: Prepoznavanje objektov + +Nadaljujte z učenjem v naslednjem zvezku: + +[ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) + +## Zaključek + +V tej lekciji ste si ogledali različne načine, kako lahko dosežemo prepoznavanje objektov! + +## 🚀 Izziv + +Preberite te članke in zvezke o YOLO ter jih preizkusite sami: + +* [Dober blog](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) o YOLO + * [Uradna stran](https://pjreddie.com/darknet/yolo/) + * Yolo: [Keras implementacija](https://github.com/experiencor/keras-yolo2), [zvezek korak za korakom](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Keras implementacija](https://github.com/experiencor/keras-yolo2), [zvezek korak za korakom](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) + +## Pregled in samostojno učenje + +* [Prepoznavanje objektov](https://tjmachinelearning.com/lectures/1718/obj/) avtorja Nikhila Sardane +* [Dobra primerjava algoritmov za prepoznavanje objektov](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Pregled algoritmov globokega učenja za prepoznavanje objektov](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Uvod v osnovne algoritme za prepoznavanje objektov korak za korakom](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Implementacija Faster R-CNN v Pythonu za prepoznavanje objektov](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) + +## [Naloga: Prepoznavanje objektov](lab/README.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..bf72f051 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Zaznavanje glav z uporabo Hollywood Heads Dataset + +Laboratorijska naloga iz [učnega načrta AI za začetnike](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Štetje števila ljudi na video nadzornih posnetkih je pomembna naloga, ki nam omogoča oceno števila obiskovalcev v trgovinah, določitev najbolj obremenjenih ur v restavracijah itd. Za rešitev te naloge moramo biti sposobni zaznati človeške glave iz različnih kotov. Za treniranje modela za zaznavanje objektov, ki zaznava človeške glave, lahko uporabimo [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). + +## Podatkovni niz + +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) vsebuje 369.846 človeških glav, označenih v 224.740 filmskih okvirjih iz hollywoodskih filmov. Na voljo je v formatu [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), kjer ima vsaka slika tudi XML opisno datoteko, ki izgleda takole: + +```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 + + +``` + +V tem podatkovnem nizu obstaja samo en razred objektov `head`, za vsako glavo pa so podane koordinate okvirja (bounding box). XML lahko obdelate z uporabo Python knjižnic ali pa uporabite [to knjižnico](https://pypi.org/project/pascal-voc/), ki omogoča neposredno delo s formatom PASCAL VOC. + +## Treniranje modela za zaznavanje objektov + +Model za zaznavanje objektov lahko trenirate na enega od naslednjih načinov: + +* Z uporabo [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) in njegovega Python API-ja za programatično treniranje modela v oblaku. Custom Vision ne omogoča uporabe več kot nekaj sto slik za treniranje modela, zato boste morda morali omejiti podatkovni niz. +* Z uporabo primera iz [Keras vadnice](https://keras.io/examples/vision/retinanet/) za treniranje modela RetunaNet. +* Z uporabo vgrajenega modula [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) v knjižnici torchvision. + +## Ključne ugotovitve + +Zaznavanje objektov je naloga, ki je pogosto potrebna v industriji. Čeprav obstajajo storitve, ki omogočajo zaznavanje objektov (kot je [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)), je pomembno razumeti, kako zaznavanje objektov deluje, in biti sposoben trenirati lastne modele. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/sl/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..47fffd47 --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Segmentacija + +Prej smo se naučili o zaznavanju objektov, ki nam omogoča lociranje objektov na sliki z napovedovanjem njihovih *omejevalnih okvirjev*. Vendar pa za nekatere naloge ne potrebujemo le omejevalnih okvirjev, temveč tudi bolj natančno lokalizacijo objektov. Ta naloga se imenuje **segmentacija**. + +## [Pre-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) + +Segmentacijo lahko obravnavamo kot **klasifikacijo pikslov**, kjer moramo za **vsak** piksel slike napovedati njegov razred (*ozadje* je eden od razredov). Obstajata dva glavna algoritma za segmentacijo: + +* **Semantična segmentacija** določa le razred pikslov in ne razlikuje med različnimi objekti istega razreda. +* **Segmentacija primerkov** razdeli razrede na različne primerke. + +Pri segmentaciji primerkov so te ovce različni objekti, medtem ko pri semantični segmentaciji vse ovce predstavljajo en razred. + + + +> Slika iz [tega blog prispevka](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) + +Obstajajo različne nevronske arhitekture za segmentacijo, vendar imajo vse enako strukturo. Na nek način je podobno avtoenkoderju, o katerem ste se že učili, vendar namesto razgradnje izvirne slike naš cilj postane razgradnja **maske**. Tako ima segmentacijsko omrežje naslednje dele: + +* **Kodirnik** izlušči značilnosti iz vhodne slike. +* **Dekodirnik** pretvori te značilnosti v **sliko maske**, ki ima enako velikost in število kanalov, ki ustreza številu razredov. + + + +> Slika iz [te publikacije](https://arxiv.org/pdf/2001.05566.pdf) + +Posebej je treba omeniti funkcijo izgube, ki se uporablja za segmentacijo. Pri uporabi klasičnih avtoenkoderjev moramo izmeriti podobnost med dvema slikama, za kar lahko uporabimo povprečno kvadratno napako (MSE). Pri segmentaciji vsak piksel v ciljni sliki maske predstavlja številko razreda (ena-vroče kodirano vzdolž tretje dimenzije), zato moramo uporabiti funkcije izgube, specifične za klasifikacijo - funkcijo izgube križne entropije, povprečeno čez vse piksle. Če je maska binarna, se uporablja **funkcija izgube binarne križne entropije** (BCE). + +> ✅ Ena-vroče kodiranje je način kodiranja oznake razreda v vektor dolžine, ki ustreza številu razredov. Oglejte si [ta članek](https://datagy.io/sklearn-one-hot-encode/) o tej tehniki. + +## Segmentacija v medicinskem slikanju + +V tej lekciji bomo videli segmentacijo v praksi, tako da bomo trenirali omrežje za prepoznavanje človeških nevusov (znanih tudi kot znamenja) na medicinskih slikah. Uporabili bomo PH2 podatkovno zbirko dermoskopskih slik kot vir slik. Ta podatkovna zbirka vsebuje 200 slik treh razredov: tipični nevus, atipični nevus in melanom. Vse slike vsebujejo tudi ustrezno **masko**, ki označuje nevus. + +> ✅ Ta tehnika je še posebej primerna za tovrstno medicinsko slikanje, vendar katere druge aplikacije iz resničnega sveta si lahko zamislite? + +navi + +> Slika iz PH2 podatkovne zbirke + +Trenirali bomo model za segmentacijo nevusa iz ozadja. + +## ✍️ Vaje: Semantična segmentacija + +Odprite spodnje zvezke, da se naučite več o različnih arhitekturah semantične segmentacije, vadite delo z njimi in jih vidite v praksi. + +* [Semantična segmentacija Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Semantična segmentacija TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) + +## [Po-učni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) + +## Zaključek + +Segmentacija je zelo močna tehnika za klasifikacijo slik, ki presega omejevalne okvirje in omogoča klasifikacijo na ravni pikslov. To je tehnika, ki se uporablja v medicinskem slikanju in drugih aplikacijah. + +## 🚀 Izziv + +Segmentacija telesa je le ena izmed pogostih nalog, ki jih lahko izvedemo s slikami ljudi. Druge pomembne naloge vključujejo **zaznavanje skeleta** in **zaznavanje drže**. Preizkusite knjižnico [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), da vidite, kako se lahko uporablja zaznavanje drže. + +## Pregled in samostojno učenje + +Ta [članek na Wikipediji](https://wikipedia.org/wiki/Image_segmentation) ponuja dober pregled različnih aplikacij te tehnike. Naučite se več o poddomenah segmentacije primerkov in panoptične segmentacije na tem področju raziskovanja. + +## [Naloga](lab/README.md) + +V tem laboratoriju poskusite **segmentacijo človeškega telesa** z uporabo [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) iz Kaggle. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/sl/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..80e8932b --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Segmentacija človeškega telesa + +Laboratorijska naloga iz [Učnega načrta za začetnike v AI](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +Pri video produkciji, na primer pri vremenskih napovedih, pogosto potrebujemo izrezati podobo človeka iz posnetka kamere in jo postaviti na drugo ozadje. To se običajno izvaja z uporabo tehnik **chroma key**, kjer je oseba posneta pred enobarvnim ozadjem, ki se nato odstrani. V tej nalogi bomo trenirali nevronsko mrežo za izrez silhuete človeka. + +## Podatkovni niz + +Uporabljali bomo [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) s Kaggle. Podatkovni niz prenesite ročno s Kaggle. + +## Začetni zvezek + +Začnite laboratorijsko nalogo z odpiranjem [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) + +## Ključne točke + +Segmentacija telesa je le ena izmed pogostih nalog, ki jih lahko izvedemo s slikami ljudi. Druge pomembne naloge vključujejo **zaznavanje okostja** in **zaznavanje drže**. Oglejte si knjižnico [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose), da vidite, kako se te naloge lahko implementirajo. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/4-ComputerVision/README.md b/translations/sl/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..c62a56ed --- /dev/null +++ b/translations/sl/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Računalniški vid + +![Povzetek vsebine o računalniškem vidu v skici](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sl.png) + +V tem poglavju bomo spoznali: + +* [Uvod v računalniški vid in OpenCV](06-IntroCV/README.md) +* [Konvolucijske nevronske mreže](07-ConvNets/README.md) +* [Vnaprej naučene mreže in prenos učenja](08-TransferLearning/README.md) +* [Avtoenkoderji](09-Autoencoders/README.md) +* [Generativne adversarne mreže](10-GANs/README.md) +* [Prepoznavanje objektov](11-ObjectDetection/README.md) +* [Semantična segmentacija](12-Segmentation/README.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/13-TextRep/README.md b/translations/sl/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..c84fbdea --- /dev/null +++ b/translations/sl/lessons/5-NLP/13-TextRep/README.md @@ -0,0 +1,85 @@ + +# Predstavljanje besedila kot tenzorjev + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) + +## Razvrščanje besedila + +V prvem delu tega poglavja se bomo osredotočili na nalogo **razvrščanja besedila**. Uporabili bomo [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) podatkovni niz, ki vsebuje novice, kot je naslednja: + +* Kategorija: Znanost/Tehnologija +* Naslov: Ky. podjetje prejme subvencijo za raziskovanje peptidov (AP) +* Telo: AP - Podjetje, ki ga je ustanovil raziskovalec kemije na Univerzi v Louisvilleu, je prejelo subvencijo za razvoj... + +Naš cilj bo razvrstiti novico v eno od kategorij na podlagi besedila. + +## Predstavljanje besedila + +Če želimo reševati naloge obdelave naravnega jezika (NLP) z nevronskimi mrežami, potrebujemo način za predstavitev besedila kot tenzorjev. Računalniki že predstavljajo besedilne znake kot številke, ki se preslikajo v pisave na vašem zaslonu, z uporabo kodiranj, kot sta ASCII ali UTF-8. + +Slika prikazuje diagram, ki preslika znak v ASCII in binarno predstavitev + +> [Vir slike](https://www.seobility.net/en/wiki/ASCII) + +Kot ljudje razumemo, kaj vsak znak **predstavlja**, in kako se vsi znaki združijo v besede stavka. Računalniki pa sami po sebi nimajo takšnega razumevanja, zato mora nevronska mreža pomen naučiti med treningom. + +Zato lahko uporabimo različne pristope pri predstavljanju besedila: + +* **Predstavitev na ravni znakov**, kjer besedilo predstavljamo tako, da vsak znak obravnavamo kot številko. Če imamo *C* različnih znakov v našem korpusu besedila, bi bila beseda *Hello* predstavljena kot 5x*C* tenzor. Vsaka črka bi ustrezala stolpcu tenzorja v enovrstični kodiranju. +* **Predstavitev na ravni besed**, kjer ustvarimo **besedišče** vseh besed v našem besedilu in nato besede predstavimo z enovrstičnim kodiranjem. Ta pristop je nekoliko boljši, saj posamezna črka sama po sebi nima velikega pomena, zato z uporabo višjih semantičnih konceptov - besed - poenostavimo nalogo za nevronsko mrežo. Vendar pa moramo zaradi velikega slovarja obravnavati visokodimenzionalne redke tenzorje. + +Ne glede na predstavitev moramo najprej pretvoriti besedilo v zaporedje **tokenov**, pri čemer je en token lahko znak, beseda ali včasih celo del besede. Nato token pretvorimo v številko, običajno z uporabo **besedišča**, in to številko lahko vnesemo v nevronsko mrežo z enovrstičnim kodiranjem. + +## N-grami + +V naravnem jeziku je natančen pomen besed mogoče določiti le v kontekstu. Na primer, pomena *nevronska mreža* in *ribiška mreža* sta popolnoma različna. Eden od načinov, kako to upoštevati, je, da naš model zgradimo na parih besed in obravnavamo pare besed kot ločene tokene besedišča. Na ta način bo stavek *Rad grem na ribolov* predstavljen z naslednjim zaporedjem tokenov: *Rad grem*, *grem na*, *na ribolov*. Težava pri tem pristopu je, da se velikost slovarja znatno poveča, kombinacije, kot sta *na ribolov* in *na nakupovanje*, pa so predstavljene z različnimi tokeni, ki ne delijo nobene semantične podobnosti kljub istemu glagolu. + +V nekaterih primerih lahko razmislimo o uporabi tri-gramov -- kombinacij treh besed -- prav tako. Ta pristop se pogosto imenuje **n-grami**. Smiselno je tudi uporabljati n-grame pri predstavitvi na ravni znakov, kjer n-grami približno ustrezajo različnim zlogom. + +## Vreča besed in TF/IDF + +Pri reševanju nalog, kot je razvrščanje besedila, moramo biti sposobni predstaviti besedilo z enim vektorjem fiksne velikosti, ki ga bomo uporabili kot vhod za končni gosti klasifikator. Eden najpreprostejših načinov za to je združiti vse posamezne predstavitve besed, npr. z njihovim seštevanjem. Če seštejemo enovrstična kodiranja vsake besede, dobimo vektor frekvenc, ki prikazuje, kolikokrat se vsaka beseda pojavi v besedilu. Takšna predstavitev besedila se imenuje **vreča besed** (BoW). + + + +> Slika avtorja + +BoW v bistvu predstavlja, katere besede se pojavijo v besedilu in v kakšnih količinah, kar je lahko dober pokazatelj, o čem govori besedilo. Na primer, novica o politiki bo verjetno vsebovala besede, kot sta *predsednik* in *država*, medtem ko bo znanstvena publikacija imela nekaj, kot sta *trkalnik*, *odkritje* itd. Tako lahko frekvence besed v mnogih primerih dobro nakazujejo vsebino besedila. + +Težava pri BoW je, da se določene pogoste besede, kot sta *in* in *je*, pojavljajo v večini besedil in imajo najvišje frekvence, kar zakrije besede, ki so resnično pomembne. Pomembnost teh besed lahko zmanjšamo tako, da upoštevamo frekvenco, s katero se besede pojavljajo v celotni zbirki dokumentov. To je glavna ideja pristopa TF/IDF, ki je podrobneje obravnavan v priloženih zvezkih k tej lekciji. + +Vendar pa noben od teh pristopov ne more v celoti upoštevati **semantike** besedila. Za to potrebujemo močnejše modele nevronskih mrež, o katerih bomo razpravljali kasneje v tem poglavju. + +## ✍️ Vaje: Predstavitev besedila + +Nadaljujte z učenjem v naslednjih zvezkih: + +* [Predstavitev besedila s PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Predstavitev besedila s TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) + +## Zaključek + +Do sedaj smo preučili tehnike, ki lahko dodajo frekvenčno težo različnim besedam. Vendar pa te tehnike ne morejo predstaviti pomena ali vrstnega reda. Kot je slavni lingvist J. R. Firth dejal leta 1935: "Popolni pomen besede je vedno kontekstualen, in nobena študija pomena brez konteksta ne more biti resna." Kasneje v tečaju se bomo naučili, kako zajeti kontekstualne informacije iz besedila z uporabo jezikovnega modeliranja. + +## 🚀 Izziv + +Preizkusite nekaj drugih vaj z uporabo vreče besed in različnih podatkovnih modelov. Navdih lahko najdete v tem [tekmovanju na Kagglu](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words). + +## [Naknadni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) + +## Pregled in samostojno učenje + +Vadite svoje veščine z vgrajevanjem besedila in tehnikami vreče besed na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + +## [Naloga: Zvezki](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/13-TextRep/assignment.md b/translations/sl/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..98b459bb --- /dev/null +++ b/translations/sl/lessons/5-NLP/13-TextRep/assignment.md @@ -0,0 +1,15 @@ + +# Naloga: Zvezki + +Z uporabo zvezkov, povezanih s to lekcijo (bodisi PyTorch ali TensorFlow različice), jih ponovno zaženite z lastnim naborom podatkov, morda s Kaggle, uporabljenim z ustreznim navajanjem vira. Prepišite zvezek, da poudarite svoje ugotovitve. Preizkusite nekaj inovativnih naborov podatkov, ki bi lahko bili presenetljivi, na primer [ta o opažanjih NLP-jev](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) iz NUFORC. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/14-Embeddings/README.md b/translations/sl/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..8bbbfaf1 --- /dev/null +++ b/translations/sl/lessons/5-NLP/14-Embeddings/README.md @@ -0,0 +1,77 @@ + +# Vdelave + +## [Predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) + +Pri treniranju klasifikatorjev, ki temeljijo na BoW ali TF/IDF, smo delali z visoko-dimenzionalnimi vektorji vreče besed dolžine `vocab_size`, pri čemer smo izrecno pretvarjali nizko-dimenzionalne vektorje pozicijske reprezentacije v redke eno-vroče (one-hot) reprezentacije. Ta eno-vroča reprezentacija pa ni učinkovita glede porabe pomnilnika. Poleg tega se vsaka beseda obravnava neodvisno od drugih, tj. eno-vroče kodirani vektorji ne izražajo nobene semantične podobnosti med besedami. + +Ideja **vdelave** (embedding) je predstaviti besede z nizko-dimenzionalnimi gostimi vektorji, ki na nek način odražajo semantični pomen besede. Kasneje bomo razpravljali o tem, kako zgraditi smiselne vdelave besed, za zdaj pa si vdelave predstavljajmo kot način za zmanjšanje dimenzionalnosti vektorja besede. + +Tako bi plast za vdelavo kot vhod vzela besedo in ustvarila izhodni vektor določene velikosti `embedding_size`. Na nek način je to zelo podobno plasti `Linear`, vendar namesto da bi vzela eno-vroče kodiran vektor, lahko kot vhod vzame številko besede, kar nam omogoča, da se izognemo ustvarjanju velikih eno-vroče kodiranih vektorjev. + +Z uporabo plasti za vdelavo kot prve plasti v našem omrežju klasifikatorja lahko preklopimo iz modela vreče besed na model **vreče vdelav** (embedding bag), kjer najprej vsako besedo v našem besedilu pretvorimo v ustrezno vdelavo, nato pa izračunamo neko agregatno funkcijo nad vsemi temi vdelavami, kot so `sum`, `average` ali `max`. + +![Slika, ki prikazuje klasifikator z vdelavami za pet zaporednih besed.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sl.png) + +> Slika avtorja + +## ✍️ Vaje: Vdelave + +Nadaljujte z učenjem v naslednjih beležnicah: +* [Vdelave s PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Vdelave TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) + +## Semantične vdelave: Word2Vec + +Medtem ko se je plast za vdelavo naučila preslikati besede v vektorsko predstavitev, ta predstavitev ni nujno imela veliko semantičnega pomena. Bilo bi koristno naučiti se vektorske predstavitve, kjer so podobne besede ali sopomenke predstavljene z vektorji, ki so si blizu glede na neko vektorsko razdaljo (npr. Evklidska razdalja). + +Za to moramo naš model za vdelavo predhodno trenirati na veliki zbirki besedil na specifičen način. Eden od načinov za treniranje semantičnih vdelav se imenuje [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Temelji na dveh glavnih arhitekturah, ki se uporabljata za ustvarjanje porazdeljene predstavitve besed: + + - **Neprekinjena vreča besed** (CBoW) — v tej arhitekturi treniramo model, da napove besedo iz okoliškega konteksta. Glede na n-gram $(W_{-2},W_{-1},W_0,W_1,W_2)$ je cilj modela napovedati $W_0$ iz $(W_{-2},W_{-1},W_1,W_2)$. + - **Neprekinjeni preskok-gram** (skip-gram) je nasproten CBoW. Model uporablja okoliško okno kontekstnih besed za napoved trenutne besede. + +CBoW je hitrejši, medtem ko je skip-gram počasnejši, vendar bolje predstavlja redke besede. + +![Slika, ki prikazuje algoritma CBoW in Skip-Gram za pretvorbo besed v vektorje.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sl.png) + +> Slika iz [tega članka](https://arxiv.org/pdf/1301.3781.pdf) + +Predhodno trenirane vdelave Word2Vec (kot tudi drugi podobni modeli, kot je GloVe) se lahko uporabijo namesto plasti za vdelavo v nevronskih omrežjih. Vendar pa se moramo ukvarjati z besedišči, saj se besedišče, uporabljeno za predhodno treniranje Word2Vec/GloVe, verjetno razlikuje od besedišča v našem besedilnem korpusu. Oglejte si zgornje beležnice, da vidite, kako rešiti ta problem. + +## Kontekstualne vdelave + +Ena ključna omejitev tradicionalnih predhodno treniranih predstavitev vdelav, kot je Word2Vec, je problem razločevanja pomenov besed. Medtem ko predhodno trenirane vdelave lahko zajamejo nekaj pomena besed v kontekstu, je vsak možen pomen besede kodiran v isto vdelavo. To lahko povzroči težave v nadaljnjih modelih, saj imajo številne besede, kot je beseda 'play', različne pomene glede na kontekst, v katerem so uporabljene. + +Na primer, beseda 'play' v teh dveh različnih stavkih ima precej drugačen pomen: + +- Šel sem na **igro** v gledališče. +- Janez se želi **igrati** s prijatelji. + +Predhodno trenirane vdelave zgoraj predstavljajo oba pomena besede 'play' v isti vdelavi. Da bi premagali to omejitev, moramo zgraditi vdelave na podlagi **jezikovnega modela**, ki je treniran na velikem korpusu besedil in *ve*, kako se besede lahko sestavijo v različnih kontekstih. Razprava o kontekstualnih vdelavah presega obseg tega tečaja, vendar se bomo k njim vrnili, ko bomo kasneje govorili o jezikovnih modelih. + +## Zaključek + +V tej lekciji ste odkrili, kako zgraditi in uporabljati plasti za vdelavo v TensorFlow in PyTorch, da bolje odražajo semantične pomene besed. + +## 🚀 Izziv + +Word2Vec je bil uporabljen za nekatere zanimive aplikacije, vključno z ustvarjanjem pesmi in poezije. Oglejte si [ta članek](https://www.politetype.com/blog/word2vec-color-poems), ki opisuje, kako je avtor uporabil Word2Vec za ustvarjanje poezije. Oglejte si tudi [ta video Dana Shiffmanna](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain), da odkrijete drugačno razlago te tehnike. Nato poskusite te tehnike uporabiti na svojem besedilnem korpusu, morda pridobljenem s Kaggle. + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) + +## Pregled in samostojno učenje + +Preberite ta članek o Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) + +## [Naloga: Beležnice](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/14-Embeddings/assignment.md b/translations/sl/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..884880c0 --- /dev/null +++ b/translations/sl/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Naloga: Zvezki + +Z uporabo zvezkov, povezanih s to lekcijo (bodisi različice PyTorch ali TensorFlow), jih ponovno zaženite z lastnim naborom podatkov, morda z enim izmed Kagglovih, uporabljenim z ustreznim navajanjem vira. Prepišite zvezek, da poudarite svoje ugotovitve. Preizkusite drugačen tip nabora podatkov in dokumentirajte svoje ugotovitve, z uporabo besedila, kot so [ti Beatlesovi verzi](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/15-LanguageModeling/README.md b/translations/sl/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..11f932cf --- /dev/null +++ b/translations/sl/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Modeliranje jezika + +Semantične vektorske predstavitve, kot sta Word2Vec in GloVe, so pravzaprav prvi korak k **modeliranju jezika** – ustvarjanju modelov, ki na nek način *razumejo* (ali *predstavljajo*) naravo jezika. + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Glavna ideja modeliranja jezika je, da jih učimo na nenalepčenih podatkovnih zbirkah na nenadzorovan način. To je pomembno, ker imamo na voljo ogromne količine nenalepčenega besedila, medtem ko je količina nalepčenega besedila vedno omejena z vloženim trudom za označevanje. Najpogosteje lahko zgradimo jezikovne modele, ki lahko **napovedujejo manjkajoče besede** v besedilu, saj je enostavno naključno besedo v besedilu zakriti in jo uporabiti kot učni vzorec. + +## Učenje vektorskih predstavitev + +V prejšnjih primerih smo uporabljali vnaprej naučene semantične vektorske predstavitve, vendar je zanimivo videti, kako lahko te predstavitve sami naučimo. Obstaja več možnih pristopov: + +* **N-gram** modeliranje jezika, kjer napovedujemo token na podlagi N prejšnjih tokenov (N-gram). +* **Neprekinjena vreča besed** (CBoW), kjer napovedujemo sredinski token $W_0$ v zaporedju tokenov $W_{-N}$, ..., $W_N$. +* **Skip-gram**, kjer iz sredinskega tokena $W_0$ napovedujemo množico sosednjih tokenov {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$}. + +![slika iz članka o pretvorbi besed v vektorje](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sl.png) + +> Slika iz [tega članka](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Primeri zvezkov: Učenje CBoW modela + +Nadaljujte z učenjem v naslednjih zvezkih: + +* [Učenje CBoW Word2Vec z uporabo TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Učenje CBoW Word2Vec z uporabo PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) + +## Zaključek + +V prejšnji lekciji smo videli, da vektorske predstavitve besed delujejo skoraj čarobno! Zdaj vemo, da učenje vektorskih predstavitev besed ni zelo zapletena naloga, in če je potrebno, lahko sami naučimo svoje vektorske predstavitve za besedila iz specifičnih domen. + +## [Naknadni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) + +## Pregled in samostojno učenje + +* [Uradni PyTorch vodič za modeliranje jezika](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Uradni TensorFlow vodič za učenje Word2Vec modela](https://www.TensorFlow.org/tutorials/text/word2vec). +* Uporaba ogrodja **gensim** za učenje najpogosteje uporabljenih vektorskih predstavitev v nekaj vrsticah kode je opisana [v tej dokumentaciji](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). + +## 🚀 [Naloga: Naučite Skip-Gram model](lab/README.md) + +V laboratorijski nalogi vas izzivamo, da spremenite kodo iz te lekcije in naučite Skip-Gram model namesto CBoW. [Preberite podrobnosti](lab/README.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni prevod s strani človeka. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/sl/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..4182c366 --- /dev/null +++ b/translations/sl/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -0,0 +1,38 @@ + +# Usposabljanje modela Skip-Gram + +Laboratorijska naloga iz [učnega načrta AI za začetnike](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +V tej laboratorijski nalogi vas izzivamo, da usposobite model Word2Vec z uporabo tehnike Skip-Gram. Usposobite mrežo z vgrajevanjem za napovedovanje sosednjih besed v $N$-tokenov širokem oknu Skip-Gram. Uporabite lahko [kodo iz te lekcije](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) in jo nekoliko prilagodite. + +## Podatkovni niz + +Uporabite lahko katerokoli knjigo. Na voljo je veliko brezplačnih besedil na [Project Gutenberg](https://www.gutenberg.org/), na primer, tukaj je neposredna povezava do [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) avtorja Lewisa Carrolla. Lahko pa uporabite tudi Shakespearove igre, ki jih lahko pridobite z naslednjo kodo: + +```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') +``` + +## Raziskujte! + +Če imate čas in želite poglobiti svoje znanje, poskusite raziskati več stvari: + +* Kako velikost vgrajevanja vpliva na rezultate? +* Kako različni slogi besedila vplivajo na rezultat? +* Vzemite več zelo različnih vrst besed in njihovih sopomenk, pridobite njihove vektorske predstavitve, uporabite PCA za zmanjšanje dimenzij na 2 in jih narišite v 2D prostoru. Ali opazite kakšne vzorce? + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/16-RNN/README.md b/translations/sl/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..c3cc9860 --- /dev/null +++ b/translations/sl/lessons/5-NLP/16-RNN/README.md @@ -0,0 +1,96 @@ + +# Rekurentne nevronske mreže + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) + +V prejšnjih poglavjih smo uporabljali bogate semantične reprezentacije besedila in preprost linearni klasifikator na vrhu vgrajenih predstavitev. Ta arhitektura zajame združeni pomen besed v stavku, vendar ne upošteva **zaporedja** besed, saj operacija združevanja na vrhu vgrajenih predstavitev odstrani te informacije iz izvirnega besedila. Ker ti modeli ne morejo modelirati vrstnega reda besed, ne morejo reševati bolj zapletenih ali dvoumnih nalog, kot so generiranje besedila ali odgovarjanje na vprašanja. + +Za zajemanje pomena zaporedja besedila moramo uporabiti drugo arhitekturo nevronske mreže, imenovano **rekurentna nevronska mreža** ali RNN. Pri RNN stavek pošiljamo skozi mrežo en simbol naenkrat, mreža pa ustvari neko **stanje**, ki ga nato skupaj z naslednjim simbolom ponovno pošljemo v mrežo. + +![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sl.png) + +> Slika avtorja + +Glede na vhodno zaporedje simbolov X0,...,Xn, RNN ustvari zaporedje blokov nevronske mreže in to zaporedje trenira od začetka do konca z uporabo povratnega razširjanja napake. Vsak blok mreže sprejme par (Xi,Si) kot vhod in ustvari Si+1 kot rezultat. Končno stanje Sn (ali izhod Yn) gre v linearni klasifikator za ustvarjanje rezultata. Vsi bloki mreže delijo iste uteži in se trenirajo od začetka do konca z enim prehodom povratnega razširjanja napake. + +Ker se vektorska stanja S0,...,Sn prenašajo skozi mrežo, lahko ta modelira zaporedne odvisnosti med besedami. Na primer, ko se v zaporedju pojavi beseda *ne*, se lahko nauči negirati določene elemente v vektorskem stanju, kar povzroči negacijo. + +> ✅ Ker so uteži vseh RNN blokov na zgornji sliki enake, lahko isto sliko predstavimo kot en blok (na desni) z rekurzivno povratno zanko, ki izhodno stanje mreže pošlje nazaj na vhod. + +## Anatomija RNN celice + +Poglejmo, kako je organizirana preprosta RNN celica. Sprejme prejšnje stanje Si-1 in trenutni simbol Xi kot vhoda ter mora ustvariti izhodno stanje Si (včasih nas zanima tudi kakšen drug izhod Yi, kot v primeru generativnih mrež). + +Preprosta RNN celica ima znotraj dve matriki uteži: ena transformira vhodni simbol (poimenujmo jo W), druga pa transformira vhodno stanje (H). V tem primeru se izhod mreže izračuna kot σ(W×Xi+H×Si-1+b), kjer je σ aktivacijska funkcija, b pa dodatni pristranski člen. + +Anatomija RNN celice + +> Slika avtorja + +V mnogih primerih se vhodni simboli pred vstopom v RNN pošljejo skozi plast vgrajenih predstavitev, da se zmanjša dimenzionalnost. V tem primeru, če je dimenzija vhodnih vektorjev *emb_size* in dimenzija stanja *hid_size*, je velikost W *emb_size*×*hid_size*, velikost H pa *hid_size*×*hid_size*. + +## Dolgoročni kratkoročni spomin (LSTM) + +Ena glavnih težav klasičnih RNN je tako imenovana težava **izginjajočih gradientov**. Ker se RNN trenirajo od začetka do konca z enim prehodom povratnega razširjanja napake, imajo težave s prenašanjem napake na prve plasti mreže, zato se mreža ne more naučiti odnosov med oddaljenimi simboli. Ena od rešitev te težave je uvedba **eksplicitnega upravljanja stanja** z uporabo tako imenovanih **vrat**. Obstajata dve dobro znani arhitekturi te vrste: **dolgoročni kratkoročni spomin** (LSTM) in **enota z vrati za posredovanje** (GRU). + +![Slika, ki prikazuje primer celice dolgoročnega kratkoročnega spomina](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) + +> Vir slike TBD + +LSTM mreža je organizirana podobno kot RNN, vendar se iz plasti v plast prenašata dve stanji: dejansko stanje C in skriti vektor H. Pri vsaki enoti se skriti vektor Hi združi z vhodom Xi, nato pa nadzorujeta, kaj se zgodi s stanjem C prek **vrat**. Vsaka vrata so nevronska mreža s sigmoidno aktivacijo (izhod v območju [0,1]), ki jih lahko razumemo kot bitno masko, ko jih pomnožimo z vektorskim stanjem. Na sliki zgoraj so naslednja vrata (od leve proti desni): + +* **Vrata za pozabo** sprejmejo skriti vektor in določijo, katere komponente vektorja C je treba pozabiti in katere prenesti naprej. +* **Vhodna vrata** vzamejo nekaj informacij iz vhodnega in skritega vektorja ter jih vstavijo v stanje. +* **Izhodna vrata** transformirajo stanje prek linearne plasti s *tanh* aktivacijo, nato pa izberejo nekatere njegove komponente z uporabo skritega vektorja Hi, da ustvarijo novo stanje Ci+1. + +Komponente stanja C lahko razumemo kot zastavice, ki jih lahko vklopimo in izklopimo. Na primer, ko v zaporedju naletimo na ime *Alice*, lahko predpostavimo, da se nanaša na ženski lik, in dvignemo zastavico v stanju, da imamo v stavku ženski samostalnik. Ko kasneje naletimo na frazo *in Tom*, dvignemo zastavico, da imamo množinski samostalnik. Tako lahko z manipulacijo stanja sledimo slovničnim lastnostim delov stavka. + +> ✅ Odličen vir za razumevanje notranjega delovanja LSTM je ta odličen članek [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) avtorja Christopherja Olaha. + +## Dvosmerni in večplastni RNN + +Razpravljali smo o rekurzivnih mrežah, ki delujejo v eno smer, od začetka zaporedja do konca. To se zdi naravno, saj posnema način, kako beremo in poslušamo govor. Vendar pa ima v mnogih praktičnih primerih smisel izvajati rekurzivno računanje v obe smeri. Takšne mreže imenujemo **dvosmerne** RNN. Pri delu z dvosmerno mrežo potrebujemo dva skrita vektorska stanja, enega za vsako smer. + +Rekurzivna mreža, bodisi enosmerna bodisi dvosmerna, zajame določene vzorce znotraj zaporedja in jih lahko shrani v vektorsko stanje ali prenese v izhod. Tako kot pri konvolucijskih mrežah lahko na prvo plast zgradimo drugo rekurzivno plast, da zajamemo vzorce višje ravni in gradimo na nizkonivojskih vzorcih, ki jih je izločila prva plast. To nas pripelje do pojma **večplastnega RNN**, ki je sestavljen iz dveh ali več rekurzivnih mrež, kjer se izhod prejšnje plasti prenese v naslednjo plast kot vhod. + +![Slika, ki prikazuje večplastni dolgoročni kratkoročni spomin RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sl.jpg) + +*Slika iz [tega čudovitega prispevka](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) avtorja Fernanda Lópeza* + +## ✍️ Vaje: Vgrajene predstavitve + +Nadaljujte z učenjem v naslednjih zvezkih: + +* [RNN-ji s PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNN-ji s TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) + +## Zaključek + +V tej enoti smo videli, da lahko RNN uporabljamo za klasifikacijo zaporedij, vendar lahko v resnici obravnavajo še veliko več nalog, kot so generiranje besedila, strojno prevajanje in drugo. Te naloge bomo obravnavali v naslednji enoti. + +## 🚀 Izziv + +Preberite nekaj literature o LSTM-jih in razmislite o njihovih aplikacijah: + +- [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) + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) + +## Pregled in samostojno učenje + +- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) avtorja Christopherja Olaha. + +## [Naloga: Zvezki](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/16-RNN/assignment.md b/translations/sl/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..f45f7c4e --- /dev/null +++ b/translations/sl/lessons/5-NLP/16-RNN/assignment.md @@ -0,0 +1,15 @@ + +# Naloga: Zvezki + +Z uporabo zvezkov, povezanih s to lekcijo (bodisi različice PyTorch ali TensorFlow), jih ponovno zaženite z lastnim naborom podatkov, morda s Kaggle, uporabljenim z ustreznim navajanjem vira. Prepišite zvezek, da poudarite svoje ugotovitve. Preizkusite drugačen tip nabora podatkov in dokumentirajte svoje ugotovitve, z uporabo besedila, kot je [ta nabor podatkov iz Kaggle tekmovanja o vremenskih tvitih](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/sl/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..98841bb1 --- /dev/null +++ b/translations/sl/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Generativne mreže + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Rekurentne nevronske mreže (RNN) in njihove različice z zapornimi celicami, kot so dolgotrajne kratkoročne spominske celice (LSTM) in zaporne rekurentne enote (GRU), omogočajo modeliranje jezika, saj se lahko naučijo zaporedja besed in napovedujejo naslednjo besedo v zaporedju. To nam omogoča uporabo RNN za **generativne naloge**, kot so običajno generiranje besedila, strojno prevajanje in celo opisovanje slik. + +> ✅ Pomislite na vse primere, ko ste imeli koristi od generativnih nalog, kot je dopolnjevanje besedila med tipkanjem. Raziščite svoje najljubše aplikacije in preverite, ali uporabljajo RNN. + +V arhitekturi RNN, ki smo jo obravnavali v prejšnji enoti, je vsaka enota RNN proizvedla naslednje skrito stanje kot izhod. Vendar pa lahko vsaki rekurentni enoti dodamo še en izhod, ki nam omogoča generiranje **zaporedja** (ki je enako dolžini izvirnega zaporedja). Poleg tega lahko uporabimo RNN enote, ki ne sprejemajo vhodnih podatkov na vsakem koraku, temveč le začetni vektorski stanji, nato pa generirajo zaporedje izhodov. + +To omogoča različne nevronske arhitekture, prikazane na spodnji sliki: + +![Slika prikazuje pogoste vzorce rekurentnih nevronskih mrež.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sl.jpg) + +> Slika iz blog objave [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) avtorja [Andrej Karpaty](http://karpathy.github.io/) + +* **Ena-na-ena** je tradicionalna nevronska mreža z enim vhodom in enim izhodom +* **Ena-na-več** je generativna arhitektura, ki sprejme eno vhodno vrednost in generira zaporedje izhodnih vrednosti. Na primer, če želimo trenirati mrežo za **opisovanje slik**, ki bi ustvarila besedilni opis slike, lahko sliko podamo kot vhod, jo prenesemo skozi CNN za pridobitev skritega stanja, nato pa rekurentna veriga generira opis besedo za besedo +* **Več-na-ena** ustreza arhitekturam RNN, ki smo jih opisali v prejšnji enoti, kot je klasifikacija besedila +* **Več-na-več**, ali **zaporedje-na-zaporedje**, ustreza nalogam, kot je **strojno prevajanje**, kjer prva RNN zbere vse informacije iz vhodnega zaporedja v skrito stanje, druga veriga RNN pa to stanje razširi v izhodno zaporedje. + +V tej enoti se bomo osredotočili na preproste generativne modele, ki nam pomagajo generirati besedilo. Zaradi enostavnosti bomo uporabili tokenizacijo na ravni znakov. + +To RNN bomo trenirali za generiranje besedila korak za korakom. Na vsakem koraku bomo vzeli zaporedje znakov dolžine `nchars` in mreži naročili, naj generira naslednji izhodni znak za vsak vhodni znak: + +![Slika prikazuje primer generiranja besede 'HELLO' z RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sl.png) + +Med generiranjem besedila (med inferenco) začnemo z nekim **pozivom**, ki ga prenesemo skozi RNN celice za generiranje vmesnega stanja, nato pa se začne generiranje. Generiramo en znak naenkrat, stanje in generirani znak pa prenesemo v drugo RNN celico za generiranje naslednjega, dokler ne generiramo dovolj znakov. + + + +> Slika avtorja + +## ✍️ Vaje: Generativne mreže + +Nadaljujte z učenjem v naslednjih zvezkih: + +* [Generativne mreže s PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Generativne mreže s TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) + +## Mehko generiranje besedila in temperatura + +Izhod vsake RNN celice je porazdelitev verjetnosti znakov. Če vedno izberemo znak z najvišjo verjetnostjo kot naslednji znak v generiranem besedilu, se besedilo pogosto lahko "zacikli" med istimi zaporedji znakov, kot v tem primeru: + +``` +today of the second the company and a second the company ... +``` + +Če pa pogledamo porazdelitev verjetnosti za naslednji znak, je lahko razlika med nekaj najvišjimi verjetnostmi majhna, npr. en znak ima verjetnost 0.2, drugi pa 0.19 itd. Na primer, pri iskanju naslednjega znaka v zaporedju '*play*' je lahko naslednji znak enako verjetno presledek ali **e** (kot v besedi *player*). + +To nas pripelje do zaključka, da ni vedno "pošteno" izbrati znaka z višjo verjetnostjo, saj lahko izbira drugega najvišjega še vedno vodi do smiselnega besedila. Bolj smiselno je **vzorec** znakov iz porazdelitve verjetnosti, ki jo poda izhod mreže. Uporabimo lahko tudi parameter **temperatura**, ki bo porazdelitev verjetnosti zgladil, če želimo dodati več naključnosti, ali jo naredil bolj strmo, če želimo bolj slediti znakom z najvišjo verjetnostjo. + +Raziskujte, kako je to mehko generiranje besedila implementirano v zgoraj povezanih zvezkih. + +## Zaključek + +Medtem ko je generiranje besedila lahko koristno samo po sebi, so glavne prednosti v sposobnosti generiranja besedila z uporabo RNN iz nekega začetnega vektorskega stanja. Na primer, generiranje besedila se uporablja kot del strojnega prevajanja (zaporedje-na-zaporedje, v tem primeru se stanje iz *kodirnika* uporabi za generiranje ali *dekodiranje* prevedenega sporočila) ali generiranje besedilnega opisa slike (v tem primeru vektorsko stanje prihaja iz CNN ekstraktorja). + +## 🚀 Izziv + +Opravite nekaj lekcij na Microsoft Learn na to temo + +* Generiranje besedila s [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) + +## [Naknadni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) + +## Pregled in samostojno učenje + +Tukaj je nekaj člankov za širjenje vašega znanja + +* Različni pristopi k generiranju besedila z Markov verigo, LSTM in GPT-2: [blog objava](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Primer generiranja besedila v [Keras dokumentaciji](https://keras.io/examples/generative/lstm_character_level_text_generation/) + +## [Naloga](lab/README.md) + +Videli smo, kako generirati besedilo znak za znakom. V laboratoriju boste raziskovali generiranje besedila na ravni besed. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/sl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..3f598c88 --- /dev/null +++ b/translations/sl/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Generiranje besedil na ravni besed z uporabo RNN-jev + +Laboratorijska naloga iz [Učnega načrta za začetnike v umetni inteligenci](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +V tej nalogi morate vzeti katerokoli knjigo in jo uporabiti kot podatkovni niz za treniranje generatorja besedil na ravni besed. + +## Podatkovni niz + +Lahko uporabite katerokoli knjigo. Veliko brezplačnih besedil lahko najdete na [Project Gutenberg](https://www.gutenberg.org/), na primer, tukaj je neposredna povezava do [Alicinih dogodivščin v Čudežni deželi](https://www.gutenberg.org/files/11/11-0.txt)) avtorja Lewisa Carrolla. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/18-Transformers/README.md b/translations/sl/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..9dcdf846 --- /dev/null +++ b/translations/sl/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mehanizmi pozornosti in transformatorji + +## [Predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Eden najpomembnejših problemov na področju NLP je **strojno prevajanje**, ključna naloga, ki je osnova za orodja, kot je Google Translate. V tem poglavju se bomo osredotočili na strojno prevajanje oziroma bolj splošno na katerokoli nalogo *zaporedje-v-zaporedje* (imenovano tudi **pretvorba stavkov**). + +Pri RNN-jih je zaporedje-v-zaporedje implementirano z dvema rekurzivnima omrežjema, kjer eno omrežje, **enkoder**, stisne vhodno zaporedje v skrito stanje, drugo omrežje, **dekoder**, pa to skrito stanje razširi v preveden rezultat. Ta pristop ima nekaj težav: + +* Končno stanje enkoderskega omrežja težko ohrani spomin na začetek stavka, kar povzroči slabšo kakovost modela za dolge stavke. +* Vse besede v zaporedju imajo enak vpliv na rezultat. V resnici pa imajo določene besede v vhodnem zaporedju pogosto večji vpliv na izhod kot druge. + +**Mehanizmi pozornosti** omogočajo tehtanje kontekstualnega vpliva vsakega vhodnega vektorja na vsako napoved izhoda RNN-ja. To se implementira z ustvarjanjem bližnjic med vmesnimi stanji vhodnega RNN-ja in izhodnega RNN-ja. Na ta način pri generiranju izhodnega simbola yt upoštevamo vsa vhodna skrita stanja hi z različnimi utežnimi koeficienti αt,i. + +![Slika, ki prikazuje enkoder/dekoder model z aditivno plastjo pozornosti](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sl.png) + +> Enkoder-dekoder model z aditivnim mehanizmom pozornosti v [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), citirano iz [tega bloga](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matrika pozornosti {αi,j} predstavlja stopnjo, do katere določene vhodne besede vplivajo na generacijo določene besede v izhodnem zaporedju. Spodaj je primer takšne matrike: + +![Slika, ki prikazuje vzorčno poravnavo, najdeno z RNNsearch-50, vzeto iz Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sl.png) + +> Slika iz [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Slika 3) + +Mehanizmi pozornosti so odgovorni za velik del trenutnega ali skoraj trenutnega stanja umetnosti na področju NLP. Dodajanje pozornosti pa močno poveča število parametrov modela, kar je povzročilo težave pri skaliranju RNN-jev. Ključna omejitev skaliranja RNN-jev je, da rekurzivna narava modelov otežuje združevanje in paralelizacijo učenja. V RNN-ju je treba vsak element zaporedja obdelati po vrstnem redu, kar pomeni, da ga ni mogoče enostavno paralelizirati. + +![Enkoder Dekoder s Pozornostjo](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Slika iz [Googlovega bloga](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Uporaba mehanizmov pozornosti v kombinaciji s to omejitvijo je privedla do nastanka zdajšnjih vrhunskih modelov transformatorjev, kot so BERT in Open-GPT3. + +## Modeli transformatorjev + +Ena glavnih idej transformatorjev je izogniti se zaporedni naravi RNN-jev in ustvariti model, ki je paraleliziran med učenjem. To se doseže z implementacijo dveh idej: + +* kodiranje položaja +* uporaba mehanizma samopozornosti za zajemanje vzorcev namesto RNN-jev (ali CNN-jev) (zato se članek, ki uvaja transformatorje, imenuje *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Kodiranje/vdelava položaja + +Ideja kodiranja položaja je naslednja. +1. Pri uporabi RNN-jev je relativni položaj tokenov predstavljen s številom korakov, zato ga ni treba izrecno predstaviti. +2. Ko pa preklopimo na pozornost, moramo poznati relativne položaje tokenov znotraj zaporedja. +3. Za pridobitev kodiranja položaja dopolnimo naše zaporedje tokenov z zaporedjem položajev tokenov v zaporedju (tj. zaporedje števil 0, 1, ...). +4. Nato zmešamo položaj tokena z vektorsko vdelavo tokena. Za pretvorbo položaja (cela števila) v vektor lahko uporabimo različne pristope: + +* Učljiva vdelava, podobno kot vdelava tokenov. To je pristop, ki ga obravnavamo tukaj. Na vrhu tako tokenov kot njihovih položajev uporabimo sloje za vdelavo, kar rezultira v vektorskih vdelavah enakih dimenzij, ki jih nato seštejemo. +* Fiksna funkcija kodiranja položaja, kot je predlagano v izvirnem članku. + + + +> Slika avtorja + +Rezultat, ki ga dobimo z vdelavo položaja, vdeluje tako izvirni token kot njegov položaj znotraj zaporedja. + +### Samopozornost z več glavami + +Nato moramo zajeti nekatere vzorce znotraj našega zaporedja. Da bi to dosegli, transformatorji uporabljajo mehanizem **samopozornosti**, ki je v bistvu pozornost, uporabljena na istem zaporedju kot vhod in izhod. Uporaba samopozornosti nam omogoča, da upoštevamo **kontekst** znotraj stavka in vidimo, katere besede so medsebojno povezane. Na primer, omogoča nam, da vidimo, na katere besede se nanašajo zaimki, kot je *to*, in tudi upoštevamo kontekst: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sl.png) + +> Slika iz [Googlovega bloga](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +V transformatorjih uporabljamo **pozornost z več glavami**, da damo omrežju moč za zajemanje več različnih vrst odvisnosti, npr. dolgoročnih proti kratkoročnim odnosom med besedami, soodvisnosti proti nečemu drugemu itd. + +[TensorFlow Notebook](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) vsebuje več podrobnosti o implementaciji slojev transformatorjev. + +### Pozornost enkoder-dekoder + +V transformatorjih se pozornost uporablja na dveh mestih: + +* Za zajemanje vzorcev znotraj vhodnega besedila z uporabo samopozornosti +* Za izvajanje prevajanja zaporedij - to je plast pozornosti med enkoderjem in dekoderjem. + +Pozornost enkoder-dekoder je zelo podobna mehanizmu pozornosti, uporabljenemu v RNN-jih, kot je opisano na začetku tega poglavja. Ta animirani diagram pojasnjuje vlogo pozornosti enkoder-dekoder. + +![Animirani GIF, ki prikazuje, kako se izvajajo ocene v modelih transformatorjev.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Ker je vsak vhodni položaj neodvisno preslikan na vsak izhodni položaj, lahko transformatorji bolje paralelizirajo kot RNN-ji, kar omogoča veliko večje in izrazitejše jezikovne modele. Vsaka glava pozornosti se lahko uporablja za učenje različnih odnosov med besedami, kar izboljša naloge obdelave naravnega jezika. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) je zelo veliko večplastno omrežje transformatorjev z 12 sloji za *BERT-base* in 24 za *BERT-large*. Model je najprej predhodno naučen na velikem korpusu besedilnih podatkov (WikiPedia + knjige) z uporabo nenadzorovanega učenja (napovedovanje zamaskiranih besed v stavku). Med predhodnim učenjem model absorbira pomembne ravni razumevanja jezika, ki jih je nato mogoče uporabiti z drugimi nabori podatkov z uporabo finega prilagajanja. Ta proces se imenuje **prenosno učenje**. + +![slika iz http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sl.png) + +> Slika [vir](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Vaje: Transformatorji + +Nadaljujte z učenjem v naslednjih beležnicah: + +* [Transformatorji v PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformatorji v TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Zaključek + +V tej lekciji ste se naučili o transformatorjih in mehanizmih pozornosti, ki so ključna orodja v NLP. Obstaja veliko različic arhitektur transformatorjev, vključno z BERT, DistilBERT, BigBird, OpenGPT3 in drugimi, ki jih je mogoče fino prilagoditi. Paket [HuggingFace](https://github.com/huggingface/) ponuja repozitorij za učenje mnogih teh arhitektur z uporabo PyTorch in TensorFlow. + +## 🚀 Izziv + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Pregled in samostojno učenje + +* [Blog objava](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), ki pojasnjuje klasični članek [Attention is all you need](https://arxiv.org/abs/1706.03762) o transformatorjih. +* [Serija blog objav](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) o transformatorjih, ki podrobno pojasnjuje arhitekturo. + +## [Naloga](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/18-Transformers/assignment.md b/translations/sl/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..6db928be --- /dev/null +++ b/translations/sl/lessons/5-NLP/18-Transformers/assignment.md @@ -0,0 +1,15 @@ + +# Naloga: Transformatorji + +Preizkusite transformatorje na HuggingFace! Poskusite nekaj skriptov, ki jih ponujajo za delo z različnimi modeli, ki so na voljo na njihovi strani: https://huggingface.co/docs/transformers/run_scripts. Preizkusite enega od njihovih naborov podatkov, nato pa uvozite enega svojega iz tega učnega načrta ali s Kaggle in preverite, ali lahko ustvarite zanimiva besedila. Pripravite beležnico s svojimi ugotovitvami. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/19-NER/README.md b/translations/sl/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..4a906640 --- /dev/null +++ b/translations/sl/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Prepoznavanje imenovanih entitet + +Do sedaj smo se večinoma osredotočali na eno nalogo NLP - klasifikacijo. Vendar pa obstajajo tudi druge naloge NLP, ki jih je mogoče doseči z nevronskimi mrežami. Ena od teh nalog je **[Prepoznavanje imenovanih entitet](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ki se ukvarja s prepoznavanjem specifičnih entitet v besedilu, kot so kraji, imena oseb, časovni intervali, kemijske formule in podobno. + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Primer uporabe NER + +Recimo, da želite razviti klepetalni bot za naravni jezik, podoben Amazon Alexa ali Google Assistant. Inteligentni klepetalni boti delujejo tako, da *razumejo*, kaj uporabnik želi, s klasifikacijo besedila vhodnega stavka. Rezultat te klasifikacije je tako imenovani **namen**, ki določa, kaj naj bot naredi. + +Bot NER + +> Slika avtorja + +Vendar pa lahko uporabnik poda nekatere parametre kot del fraze. Na primer, ko sprašuje za vreme, lahko določi lokacijo ali datum. Bot mora biti sposoben razumeti te entitete in ustrezno zapolniti parametrične reže, preden izvede dejanje. Tukaj pride v poštev NER. + +> ✅ Drug primer bi bil [analiza znanstvenih medicinskih člankov](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Ena glavnih stvari, ki jih moramo iskati, so specifični medicinski izrazi, kot so bolezni in medicinske snovi. Medtem ko lahko majhno število bolezni verjetno izvlečemo z iskanjem podnizov, bolj kompleksne entitete, kot so kemijske spojine in imena zdravil, zahtevajo bolj zapleten pristop. + +## NER kot klasifikacija tokenov + +Modeli NER so v bistvu **modeli klasifikacije tokenov**, saj moramo za vsak vhodni token odločiti, ali pripada entiteti ali ne, in če pripada - kateri razred entitete. + +Razmislimo o naslednjem naslovu članka: + +**Regurgitacija trikuspidalne zaklopke** in **litijev karbonat** **toksičnost** pri novorojenčku. + +Entitete tukaj so: + +* Regurgitacija trikuspidalne zaklopke je bolezen (`DIS`) +* Litijev karbonat je kemijska snov (`CHEM`) +* Toksičnost je prav tako bolezen (`DIS`) + +Opazite, da lahko ena entiteta obsega več tokenov. In, kot v tem primeru, moramo razlikovati med dvema zaporednima entitetama. Zato je običajno, da za vsako entiteto uporabimo dva razreda - enega, ki določa prvi token entitete (pogosto se uporablja predpona `B-`, za **b**eginning), in drugega - nadaljevanje entitete (`I-`, za **i**nner token). Uporabljamo tudi `O` kot razred za predstavitev vseh **o**stalih tokenov. Takšno označevanje tokenov se imenuje [BIO označevanje](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (ali IOB). Ko je označeno, bo naš naslov videti takole: + +Token | Oznaka +------|----- +Trikuspidalna | B-DIS +zaklopka | I-DIS +regurgitacija | I-DIS +in | O +litijev | B-CHEM +karbonat | I-CHEM +toksičnost | B-DIS +pri | O +novorojenčku | O +. | O + +Ker moramo vzpostaviti enako razmerje med tokeni in razredi, lahko iz te slike zgradimo desno **mnogokratno-mnogokratno** nevronsko mrežo: + +![Slika prikazuje običajne vzorce rekurzivnih nevronskih mrež.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sl.jpg) + +> *Slika iz [tega bloga](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) avtorja [Andreja Karpathyja](http://karpathy.github.io/). Modeli klasifikacije tokenov NER ustrezajo desni arhitekturi mreže na tej sliki.* + +## Učenje modelov NER + +Ker je model NER v bistvu model klasifikacije tokenov, lahko za to nalogo uporabimo RNN-je, s katerimi smo že seznanjeni. V tem primeru bo vsak blok rekurzivne mreže vrnil ID tokena. Naslednji primer zvezka prikazuje, kako trenirati LSTM za klasifikacijo tokenov. + +## ✍️ Primeri zvezkov: NER + +Nadaljujte z učenjem v naslednjem zvezku: + +* [NER z TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) + +## Zaključek + +Model NER je **model klasifikacije tokenov**, kar pomeni, da ga lahko uporabimo za izvajanje klasifikacije tokenov. To je zelo pogosta naloga v NLP, ki pomaga prepoznati specifične entitete v besedilu, vključno s kraji, imeni, datumi in več. + +## 🚀 Izziv + +Dokončajte nalogo, povezano spodaj, da trenirate model za prepoznavanje imenovanih entitet za medicinske izraze, nato pa ga preizkusite na drugem naboru podatkov. + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) + +## Pregled in samostojno učenje + +Preberite blog [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) in sledite razdelku Nadaljnje branje v tem članku, da poglobite svoje znanje. + +## [Naloga](lab/README.md) + +V nalogi za to lekcijo boste morali trenirati model za prepoznavanje medicinskih entitet. Začnete lahko z učenjem LSTM modela, kot je opisano v tej lekciji, in nadaljujete z uporabo modela transformatorja BERT. Preberite [navodila](lab/README.md) za vse podrobnosti. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/19-NER/lab/README.md b/translations/sl/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..ecc38c83 --- /dev/null +++ b/translations/sl/lessons/5-NLP/19-NER/lab/README.md @@ -0,0 +1,59 @@ + +# NER + +Laboratorijska naloga iz [učnega načrta AI za začetnike](https://github.com/microsoft/ai-for-beginners). + +## Naloga + +V tej nalogi morate trenirati model za prepoznavanje imenovanih entitet (NER) za medicinske izraze. + +## Podatkovni nabor + +Za treniranje modela NER potrebujemo ustrezno označen podatkovni nabor z medicinskimi entitetami. [Podatkovni nabor BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) vsebuje označene entitete bolezni in kemikalij iz več kot 1500 člankov. Podatkovni nabor lahko prenesete po registraciji na njihovi spletni strani. + +Podatkovni nabor BC5CDR je videti takole: + +``` +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 +... +``` + +V tem podatkovnem naboru sta naslov članka in povzetek navedena v prvih dveh vrsticah, nato pa sledijo posamezne entitete z začetnimi in končnimi položaji znotraj bloka naslov+povzetek. Poleg vrste entitete dobite tudi ontološki ID te entitete znotraj določene medicinske ontologije. + +Potrebno bo napisati nekaj kode v Pythonu, da podatke pretvorite v BIO kodiranje. + +## Mreža + +Prvi poskus pri NER lahko izvedete z uporabo LSTM mreže, kot ste videli v našem primeru med lekcijo. Vendar pa pri nalogah obdelave naravnega jezika (NLP) [transformerska arhitektura](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)) in posebej [BERT-jevi jezikovni modeli](https://en.wikipedia.org/wiki/BERT_(language_model)) dosegajo veliko boljše rezultate. Predtrenirani BERT modeli razumejo splošno strukturo jezika in jih je mogoče prilagoditi za specifične naloge z razmeroma majhnimi podatkovnimi nabori in nizkimi računalniškimi stroški. + +Ker načrtujemo uporabo NER v medicinskem scenariju, je smiselno uporabiti BERT model, treniran na medicinskih besedilih. Microsoft Research je izdal predtreniran model z imenom [PubMedBERT][PubMedBERT] ([objava][PubMedBERT-Pub]), ki je bil prilagojen z uporabo besedil iz repozitorija [PubMed](https://pubmed.ncbi.nlm.nih.gov/). + +*De facto* standard za treniranje transformerskih modelov je knjižnica [Hugging Face Transformers](https://huggingface.co/). Vsebuje tudi repozitorij modelov, ki jih vzdržuje skupnost, vključno s PubMedBERT. Za nalaganje in uporabo tega modela potrebujemo le nekaj vrstic kode: + +```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) +``` + +To nam zagotovi sam `model`, zgrajen za nalogo klasifikacije tokenov z uporabo `classes` števila razredov, ter objekt `tokenizer`, ki lahko razdeli vhodno besedilo na tokene. Podatkovni nabor boste morali pretvoriti v BIO format, pri čemer upoštevajte tokenizacijo PubMedBERT. Kot navdih lahko uporabite [ta del kode v Pythonu](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88). + +## Ključne ugotovitve + +Ta naloga je zelo podobna dejanski nalogi, s katero se boste verjetno srečali, če želite pridobiti več vpogleda v velike količine besedil v naravnem jeziku. V našem primeru lahko naš trenirani model uporabimo na [podatkovnem naboru člankov, povezanih s COVID-om](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) in preverimo, katere vpoglede lahko pridobimo. [Ta objava na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) in [ta članek](https://www.mdpi.com/2504-2289/6/1/4) opisujeta raziskave, ki jih je mogoče opraviti na tem korpusu člankov z uporabo NER. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/20-LangModels/README.md b/translations/sl/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..17cb24da --- /dev/null +++ b/translations/sl/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,64 @@ + +# Vnaprej naučeni veliki jezikovni modeli + +Pri vseh naših prejšnjih nalogah smo učili nevronsko mrežo za izvajanje določene naloge z uporabo označenega nabora podatkov. Pri velikih transformacijskih modelih, kot je BERT, uporabljamo jezikovno modeliranje na samonadzorovan način za gradnjo jezikovnega modela, ki ga nato s specifičnim usposabljanjem za določeno področje prilagodimo za specifične naloge. Vendar pa je bilo dokazano, da lahko veliki jezikovni modeli rešujejo številne naloge tudi brez kakršnega koli usposabljanja za določeno področje. Družina modelov, ki to omogoča, se imenuje **GPT**: Generativni vnaprej naučeni transformator. + +## [Pred-predavanjski kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Generiranje besedila in zapletenost + +Ideja, da lahko nevronska mreža izvaja splošne naloge brez dodatnega usposabljanja, je predstavljena v članku [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Glavna ideja je, da je mogoče številne druge naloge modelirati z uporabo **generiranja besedila**, saj razumevanje besedila v bistvu pomeni sposobnost njegovega ustvarjanja. Ker je model usposobljen na ogromni količini besedil, ki zajemajo človeško znanje, postane tudi sam "znalec" širokega spektra tem. + +> Razumevanje in sposobnost ustvarjanja besedila vključuje tudi poznavanje sveta okoli nas. Ljudje se v veliki meri učijo z branjem, in GPT mreža je v tem pogledu podobna. + +Mreže za generiranje besedila delujejo tako, da napovedujejo verjetnost naslednje besede $$P(w_N)$$. Vendar pa je brezpogojna verjetnost naslednje besede enaka pogostosti te besede v korpusu besedil. GPT nam omogoča izračun **pogojne verjetnosti** naslednje besede glede na prejšnje: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Več o verjetnostih si lahko preberete v našem [učnem načrtu za začetnike v podatkovni znanosti](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability). + +Kakovost modela za generiranje besedila lahko določimo z uporabo **zapletenosti** (perplexity). To je notranja metrika, ki nam omogoča merjenje kakovosti modela brez uporabe nabora podatkov za specifične naloge. Temelji na konceptu *verjetnosti stavka* - model dodeli visoko verjetnost stavkom, ki so verjetno resnični (tj. model jih ne "zmede"), in nizko verjetnost stavkom, ki so manj smiselni (npr. *Ali lahko to kaj naredi?*). Ko modelu podamo stavke iz resničnega korpusa besedil, pričakujemo, da bodo imeli visoko verjetnost in nizko **zapletenost**. Matematično je zapletenost definirana kot normirana inverzna verjetnost testnega nabora: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Z generiranjem besedila lahko eksperimentirate z uporabo [GPT-poganjanega urejevalnika besedil iz Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. V tem urejevalniku začnete pisati svoje besedilo, in s pritiskom na **[TAB]** vam bo ponujenih več možnosti za dokončanje. Če so prekratke ali z njimi niste zadovoljni, ponovno pritisnite [TAB], da dobite več možnosti, vključno z daljšimi deli besedila. + +## GPT je družina + +GPT ni en sam model, temveč zbirka modelov, ki jih je razvilo in usposobilo [OpenAI](https://openai.com). + +Pod modele GPT spadajo: + +| [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) | +| -- | -- | -- | +| Jezikovni model z do 1,5 milijarde parametrov. | Jezikovni model z do 175 milijardami parametrov. | 100T parametrov, sprejema tako slikovne kot besedilne vnose in vrača besedilne izhode. | + +Modela GPT-3 in GPT-4 sta na voljo [kot kognitivna storitev prek Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste) in kot [OpenAI API](https://openai.com/api/). + +## Oblikovanje pozivov (Prompt Engineering) + +Ker je GPT usposobljen na ogromnih količinah podatkov za razumevanje jezika in kode, ponuja izhode kot odziv na vnose (pozive). Pozivi so vnosi ali poizvedbe za GPT, kjer modelu podate navodila za naloge, ki jih mora opraviti. Da bi dosegli želeni rezultat, potrebujete najučinkovitejši poziv, kar vključuje izbiro pravih besed, formatov, fraz ali celo simbolov. Ta pristop se imenuje [oblikovanje pozivov](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum). + +[Ta dokumentacija](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) vam ponuja več informacij o oblikovanju pozivov. + +## ✍️ Primer beležnice: [Igranje z OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Nadaljujte z učenjem v naslednjih beležnicah: + +* [Generiranje besedila z OpenAI-GPT in Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Zaključek + +Novi splošni vnaprej naučeni jezikovni modeli ne modelirajo le jezikovne strukture, temveč vsebujejo tudi ogromno naravnega jezika. Zato jih je mogoče učinkovito uporabiti za reševanje nekaterih nalog obdelave naravnega jezika v nastavitvah brez primerov (zero-shot) ali z malo primeri (few-shot). + +## [Po-predavanjski kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/5-NLP/README.md b/translations/sl/lessons/5-NLP/README.md new file mode 100644 index 00000000..0998aeab --- /dev/null +++ b/translations/sl/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Obdelava naravnega jezika + +![Povzetek nalog NLP v skici](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sl.png) + +V tem poglavju se bomo osredotočili na uporabo nevronskih mrež za reševanje nalog, povezanih z **obdelavo naravnega jezika (NLP)**. Obstaja veliko NLP problemov, ki jih želimo, da jih računalniki rešujejo: + +* **Razvrščanje besedil** je tipičen problem razvrščanja, ki se nanaša na zaporedja besedil. Primeri vključujejo razvrščanje e-poštnih sporočil kot spam ali ne-spam, ali kategorizacijo člankov kot šport, posel, politika itd. Prav tako pri razvoju klepetalnih robotov pogosto potrebujemo razumeti, kaj uporabnik želi povedati – v tem primeru gre za **razvrščanje namenov**. Pri razvrščanju namenov se pogosto soočamo z mnogimi kategorijami. +* **Analiza sentimenta** je tipičen regresijski problem, kjer moramo pripisati številko (sentiment), ki ustreza temu, kako pozitiven/negativen je pomen stavka. Naprednejša različica analize sentimenta je **analiza sentimenta po vidikih** (ABSA), kjer sentiment ne pripisujemo celotnemu stavku, temveč različnim delom (vidikom), npr. *V tej restavraciji mi je bila všeč kuhinja, vendar je bila atmosfera grozna*. +* **Prepoznavanje imenovanih entitet** (NER) se nanaša na problem izločanja določenih entitet iz besedila. Na primer, razumeti moramo, da v stavku *Jutri moram leteti v Pariz* beseda *jutri* pomeni DATUM, medtem ko je *Pariz* LOKACIJA. +* **Izvleček ključnih besed** je podoben NER, vendar moramo samodejno izločiti besede, ki so pomembne za pomen stavka, brez predhodnega učenja za specifične tipe entitet. +* **Združevanje besedil** je uporabno, ko želimo združiti podobne stavke, na primer podobne zahteve v pogovorih tehnične podpore. +* **Odgovarjanje na vprašanja** se nanaša na sposobnost modela, da odgovori na specifično vprašanje. Model prejme besedilni odlomek in vprašanje kot vhod, nato pa mora zagotoviti mesto v besedilu, kjer je odgovor na vprašanje (ali včasih generirati besedilo odgovora). +* **Generiranje besedila** je sposobnost modela, da ustvari novo besedilo. To lahko obravnavamo kot nalogo razvrščanja, kjer model napoveduje naslednjo črko/besedo na podlagi nekega *besedilnega poziva*. Napredni modeli za generiranje besedila, kot je GPT-3, lahko rešujejo tudi druge NLP naloge, kot je razvrščanje, z uporabo tehnike, imenovane [programiranje s pozivi](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) ali [inženiring pozivov](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). +* **Povzemanje besedila** je tehnika, pri kateri želimo, da računalnik "prebere" dolgo besedilo in ga povzame v nekaj stavkih. +* **Strojno prevajanje** lahko obravnavamo kot kombinacijo razumevanja besedila v enem jeziku in generiranja besedila v drugem jeziku. + +Sprva so bile večina NLP nalog reševane z uporabo tradicionalnih metod, kot so slovnice. Na primer, pri strojnem prevajanju so se uporabljali analizatorji za pretvorbo začetnega stavka v sintaktično drevo, nato so se izločile višje ravni semantičnih struktur za predstavitev pomena stavka, na podlagi tega pomena in slovnice ciljnega jezika pa je bil ustvarjen rezultat. Danes se mnoge NLP naloge učinkoviteje rešujejo z uporabo nevronskih mrež. + +> Veliko klasičnih NLP metod je implementiranih v Python knjižnici [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Na voljo je odlična [NLTK knjiga](https://www.nltk.org/book/), ki pokriva, kako lahko različne NLP naloge rešujemo z uporabo NLTK. + +V našem tečaju se bomo večinoma osredotočili na uporabo nevronskih mrež za NLP, NLTK pa bomo uporabili, kjer bo potrebno. + +Že smo se naučili uporabljati nevronske mreže za delo s tabelarnimi podatki in slikami. Glavna razlika med temi vrstami podatkov in besedilom je, da je besedilo zaporedje spremenljive dolžine, medtem ko je velikost vhodnih podatkov pri slikah znana vnaprej. Čeprav konvolucijske mreže lahko izločajo vzorce iz vhodnih podatkov, so vzorci v besedilu bolj zapleteni. Na primer, zanikanje je lahko ločeno od subjekta z mnogimi besedami (npr. *Ne maram pomaranč* proti *Ne maram tistih velikih pisanih okusnih pomaranč*), kar bi moralo biti še vedno interpretirano kot en vzorec. Zato za obdelavo jezika potrebujemo nove vrste nevronskih mrež, kot so *rekurentne mreže* in *transformerji*. + +## Namestitev knjižnic + +Če uporabljate lokalno Python namestitev za izvajanje tega tečaja, boste morda morali namestiti vse potrebne knjižnice za NLP z naslednjimi ukazi: + +**Za PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Za TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> NLP s TensorFlow lahko preizkusite na [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) + +## Opozorilo glede GPU + +V tem poglavju bomo v nekaterih primerih trenirali precej velike modele. +* **Uporabite računalnik z GPU**: Priporočljivo je, da svoje zapiske izvajate na računalniku z omogočenim GPU, da zmanjšate čakalne čase pri delu z velikimi modeli. +* **Omejitve pomnilnika GPU**: Uporaba GPU lahko privede do situacij, ko vam zmanjka pomnilnika GPU, še posebej pri treniranju velikih modelov. +* **Poraba pomnilnika GPU**: Količina pomnilnika GPU, porabljenega med treniranjem, je odvisna od različnih dejavnikov, vključno z velikostjo minibatcha. +* **Zmanjšajte velikost minibatcha**: Če naletite na težave s pomnilnikom GPU, razmislite o zmanjšanju velikosti minibatcha v svoji kodi kot možni rešitvi. +* **Sprostitev pomnilnika GPU v TensorFlow**: Starejše različice TensorFlow morda ne sprostijo pomnilnika GPU pravilno, ko trenirate več modelov znotraj enega Python jedra. Za učinkovito upravljanje porabe pomnilnika GPU lahko TensorFlow nastavite tako, da dodeli pomnilnik GPU le po potrebi. +* **Vključitev kode**: Če želite nastaviti TensorFlow, da raste dodelitev pomnilnika GPU le, ko je to potrebno, vključite naslednjo kodo v svoje zapiske: + +```python +physical_devices = tf.config.list_physical_devices('GPU') +if len(physical_devices)>0: + tf.config.experimental.set_memory_growth(physical_devices[0], True) +``` + +Če vas zanima učenje NLP z vidika klasičnega strojnega učenja, obiščite [to zbirko lekcij](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP). + +## V tem poglavju +V tem poglavju bomo spoznali: + +* [Predstavljanje besedila kot tenzorjev](13-TextRep/README.md) +* [Vgrajevanje besed](14-Emdeddings/README.md) +* [Modeliranje jezika](15-LanguageModeling/README.md) +* [Rekurentne nevronske mreže](16-RNN/README.md) +* [Generativne mreže](17-GenerativeNetworks/README.md) +* [Transformerji](18-Transformers/README.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/sl/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..b29b1707 --- /dev/null +++ b/translations/sl/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -0,0 +1,89 @@ + +# Genetski algoritmi + +## [Preizkus pred predavanjem](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) + +**Genetski algoritmi** (GA) temeljijo na **evolucijskem pristopu** k umetni inteligenci, kjer se metode evolucije populacije uporabljajo za iskanje optimalne rešitve za določen problem. Leta 1975 jih je predlagal [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). + +Genetski algoritmi temeljijo na naslednjih idejah: + +* Veljavne rešitve problema lahko predstavimo kot **gene** +* S pomočjo **križanja** lahko združimo dve rešitvi in pridobimo novo veljavno rešitev +* **Izbor** se uporablja za izbiro bolj optimalnih rešitev z uporabo neke **funkcije ustreznosti** +* **Mutacije** se uvajajo za destabilizacijo optimizacije in izogibanje lokalnim minimumom + +Če želite implementirati genetski algoritem, potrebujete naslednje: + +* Najti metodo za kodiranje rešitev problema z uporabo **genov** g∈Γ +* Na množici genov Γ je treba definirati **funkcijo ustreznosti** fit: Γ→**R**. Manjše vrednosti funkcije ustrezajo boljšim rešitvam. +* Definirati mehanizem za **križanje**, ki združuje dva gena v novo veljavno rešitev crossover: Γ2→Γ. +* Definirati mehanizem za **mutacijo** mutate: Γ→Γ. + +V mnogih primerih so algoritmi za križanje in mutacijo precej preprosti in manipulirajo gene kot številske zaporedja ali bitne vektorje. + +Specifična implementacija genetskega algoritma se lahko razlikuje od primera do primera, vendar je splošna struktura naslednja: + +1. Izberite začetno populacijo G⊂Γ +2. Naključno izberite eno od operacij, ki se bo izvedla v tem koraku: križanje ali mutacija +3. **Križanje**: + * Naključno izberite dva gena g1, g2 ∈ G + * Izračunajte križanje g=crossover(g1,g2) + * Če fit(g)1) ali fit(g)2) - zamenjajte ustrezen gen v populaciji z g. +4. **Mutacija** - izberite naključni gen g∈G in ga zamenjajte z mutate(g) +5. Ponovite od koraka 2, dokler ne dosežete dovolj majhne vrednosti fit ali dokler ne dosežete omejitve števila korakov. + +## Tipične naloge + +Naloge, ki jih običajno rešujemo z genetskimi algoritmi, vključujejo: + +1. Optimizacija urnikov +1. Optimalno pakiranje +1. Optimalno rezanje +1. Pospeševanje izčrpnega iskanja + +## ✍️ Vaje: Genetski algoritmi + +Nadaljujte z učenjem v naslednjih beležnicah: + +Pojdite na [to beležnico](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb), kjer sta prikazana dva primera uporabe genetskih algoritmov: + +1. Poštena delitev zaklada +1. Problem osmih dam + +## Zaključek + +Genetski algoritmi se uporabljajo za reševanje številnih problemov, vključno z logističnimi in iskalnimi problemi. Področje je navdihnjeno z raziskavami, ki združujejo teme iz psihologije in računalništva. + +## 🚀 Izziv + +"Genetski algoritmi so preprosti za implementacijo, vendar je njihovo obnašanje težko razumeti." [vir](https://wikipedia.org/wiki/Genetic_algorithm) Raziskujte in poiščite implementacijo genetskega algoritma, na primer za reševanje Sudoku uganke, ter razložite, kako deluje, s skico ali diagramom poteka. + +## [Preizkus po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) + +## Pregled in samostojno učenje + +Oglejte si [ta odličen video](https://www.youtube.com/watch?v=qv6UVOQ0F44), ki govori o tem, kako računalnik lahko uči igrati Super Mario z uporabo nevronskih mrež, treniranih z genetskimi algoritmi. Več o učenju računalnika za igranje takšnih iger bomo izvedeli [v naslednjem poglavju](../22-DeepRL/README.md). + +## [Naloga: Diofantova enačba](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) + +Vaš cilj je rešiti tako imenovano **Diofantovo enačbo** - enačbo s celimi koreni. Na primer, razmislite o enačbi a+2b+3c+4d=30. Poiščite cele korene, ki zadovoljijo to enačbo. + +*Ta naloga je navdihnjena z [tem prispevkom](https://habr.com/post/128704/).* + +Namigi: + +1. Korene lahko obravnavate v intervalu [0;30] +1. Kot gen razmislite o uporabi seznama vrednosti korenov + +Uporabite [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) kot izhodišče. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku naj se šteje za avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/6-Other/22-DeepRL/README.md b/translations/sl/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..1abb6ebf --- /dev/null +++ b/translations/sl/lessons/6-Other/22-DeepRL/README.md @@ -0,0 +1,126 @@ + +# Globoko okrepitevno učenje + +Okrepitevno učenje (RL) velja za enega osnovnih paradigm strojnega učenja, poleg nadzorovanega in nenadzorovanega učenja. Medtem ko se pri nadzorovanem učenju zanašamo na podatkovne nabore z znanimi rezultati, je RL osnovano na **učenju skozi izkušnje**. Na primer, ko prvič vidimo računalniško igro, začnemo igrati, četudi ne poznamo pravil, in kmalu izboljšamo svoje sposobnosti zgolj z igranjem in prilagajanjem svojega vedenja. + +## [Predhodni kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) + +Za izvajanje RL potrebujemo: + +* **Okolje** ali **simulator**, ki določa pravila igre. V simulatorju moramo biti sposobni izvajati poskuse in opazovati rezultate. +* **Funkcijo nagrajevanja**, ki kaže, kako uspešen je bil naš poskus. V primeru učenja igranja računalniške igre bi bila nagrada naš končni rezultat. + +Na podlagi funkcije nagrajevanja moramo prilagoditi svoje vedenje in izboljšati svoje sposobnosti, da bomo naslednjič igrali bolje. Glavna razlika med drugimi vrstami strojnega učenja in RL je v tem, da pri RL običajno ne vemo, ali smo zmagali ali izgubili, dokler igre ne končamo. Zato ne moremo reči, ali je bila določena poteza sama po sebi dobra ali ne – nagrado prejmemo šele na koncu igre. + +Med RL običajno izvedemo veliko poskusov. Pri vsakem poskusu moramo uravnotežiti med sledenjem optimalni strategiji, ki smo jo do sedaj osvojili (**izkoriščanje**), in raziskovanjem novih možnih stanj (**raziskovanje**). + +## OpenAI Gym + +Odlično orodje za RL je [OpenAI Gym](https://gym.openai.com/) - **simulacijsko okolje**, ki lahko simulira številna različna okolja, od Atari iger do fizike ravnotežja droga. To je eno najbolj priljubljenih simulacijskih okolij za treniranje algoritmov okrepitevnega učenja, ki ga vzdržuje [OpenAI](https://openai.com/). + +> **Note**: Vsa okolja, ki jih ponuja OpenAI Gym, si lahko ogledate [tukaj](https://gym.openai.com/envs/#classic_control). + +## Uravnoteženje CartPole + +Verjetno ste že videli sodobne naprave za ravnotežje, kot so *Segway* ali *Gyroscooterji*. Te naprave se lahko samodejno uravnotežijo z nastavljanjem koles glede na signal iz pospeškomera ali žiroskopa. V tem poglavju se bomo naučili rešiti podoben problem – uravnoteženje droga. To je podobno situaciji, ko cirkuški artist uravnava drog na svoji roki – vendar to uravnoteženje poteka le v eni dimenziji. + +Poenostavljena različica uravnoteženja je znana kot problem **CartPole**. V svetu CartPole imamo vodoravno drsno ploščo, ki se lahko premika levo ali desno, cilj pa je uravnotežiti navpični drog na vrhu drsne plošče med njenim premikanjem. + +a cartpole + +Za ustvarjanje in uporabo tega okolja potrebujemo nekaj vrstic kode v Pythonu: + +```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}") +``` + +Vsako okolje je dostopno na enak način: +* `env.reset` začne nov poskus +* `env.step` izvede simulacijski korak. Prejme **akcijo** iz **akcijskega prostora** in vrne **opazovanje** (iz opazovalnega prostora), kot tudi nagrado in zastavico za zaključek. + +V zgornjem primeru izvajamo naključne akcije pri vsakem koraku, zato je življenjska doba poskusa zelo kratka: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Cilj RL algoritma je trenirati model – tako imenovano **politiko** π – ki bo vrnila akcijo kot odgovor na dano stanje. Politiko lahko obravnavamo tudi kot verjetnostno, npr. za katero koli stanje *s* in akcijo *a* bo vrnila verjetnost π(*a*|*s*), da izvedemo *a* v stanju *s*. + +## Algoritem Policy Gradients + +Najbolj očiten način za modeliranje politike je ustvarjanje nevronske mreže, ki bo kot vhod prejela stanja in vrnila ustrezne akcije (oziroma verjetnosti vseh akcij). Na nek način je to podobno običajni nalogi klasifikacije, z eno pomembno razliko – vnaprej ne vemo, katere akcije bi morali izvesti v vsakem koraku. + +Ideja tukaj je oceniti te verjetnosti. Zgradimo vektor **kumulativnih nagrad**, ki prikazuje našo skupno nagrado v vsakem koraku poskusa. Prav tako uporabimo **diskontiranje nagrad** z množenjem zgodnejših nagrad z nekim koeficientom γ=0.99, da zmanjšamo vpliv zgodnejših nagrad. Nato okrepimo tiste korake na poti poskusa, ki prinašajo večje nagrade. + +> Več o algoritmu Policy Gradient in njegovem delovanju si lahko ogledate v [primeru v beležnici](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Algoritem Actor-Critic + +Izboljšana različica pristopa Policy Gradients se imenuje **Actor-Critic**. Glavna ideja je, da bi nevronska mreža vrnila dve stvari: + +* Politiko, ki določa, katero akcijo izvesti. Ta del se imenuje **actor**. +* Oceno skupne nagrade, ki jo lahko pričakujemo v tem stanju – ta del se imenuje **critic**. + +Na nek način ta arhitektura spominja na [GAN](../../4-ComputerVision/10-GANs/README.md), kjer imamo dve mreži, ki se trenirata druga proti drugi. V modelu actor-critic actor predlaga akcijo, ki jo moramo izvesti, critic pa poskuša biti kritičen in oceniti rezultat. Naš cilj pa je, da obe mreži treniramo usklajeno. + +Ker poznamo tako realne kumulativne nagrade kot rezultate, ki jih med poskusom vrne critic, je relativno enostavno zgraditi funkcijo izgube, ki bo minimizirala razliko med njima. To nam daje **izgubo critica**. **Izgubo actorja** lahko izračunamo z enakim pristopom kot pri algoritmu Policy Gradient. + +Po zagonu enega od teh algoritmov lahko pričakujemo, da se bo naš CartPole obnašal takole: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Vaje: Policy Gradients in Actor-Critic RL + +Nadaljujte z učenjem v naslednjih beležnicah: + +* [RL v TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL v PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) + +## Drugi RL nalogi + +Okrepitevno učenje je danes hitro rastoče področje raziskav. Nekateri zanimivi primeri uporabe okrepitevnega učenja so: + +* Učenje računalnika igranja **Atari iger**. Izziv pri tem problemu je, da nimamo preprostega stanja, predstavljenega kot vektor, temveč posnetek zaslona – in moramo uporabiti CNN za pretvorbo slike zaslona v vektorsko predstavitev ali za pridobivanje informacij o nagradi. Atari igre so na voljo v Gym. +* Učenje računalnika igranja družabnih iger, kot sta šah in go. Nedavno so bili programi, kot je **Alpha Zero**, trenirani od začetka z dvema agentoma, ki igrata drug proti drugemu in se izboljšujeta pri vsakem koraku. +* V industriji se RL uporablja za ustvarjanje sistemov za nadzor iz simulacij. Storitev, imenovana [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste), je posebej zasnovana za to. + +## Zaključek + +Zdaj smo se naučili, kako trenirati agente, da dosežejo dobre rezultate zgolj z zagotavljanjem funkcije nagrajevanja, ki definira želeno stanje igre, in z omogočanjem inteligentnega raziskovanja iskalnega prostora. Uspešno smo preizkusili dva algoritma in dosegli dober rezultat v relativno kratkem času. Vendar je to šele začetek vaše poti v RL, zato bi morali razmisliti o udeležbi na ločenem tečaju, če želite raziskati to področje bolj poglobljeno. + +## 🚀 Izziv + +Raziskujte aplikacije, navedene v razdelku 'Drugi RL nalogi', in poskusite implementirati eno! + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) + +## Pregled in samostojno učenje + +Več o klasičnem okrepitevnem učenju se naučite v našem [učnem načrtu za začetnike strojnega učenja](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Oglejte si [ta odličen video](https://www.youtube.com/watch?v=qv6UVOQ0F44), ki govori o tem, kako se računalnik lahko nauči igrati Super Mario. + +## Naloga: [Trenirajte Mountain Car](lab/README.md) + +Vaš cilj pri tej nalogi je trenirati drugo Gym okolje – [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/6-Other/22-DeepRL/lab/README.md b/translations/sl/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..87afe2bf --- /dev/null +++ b/translations/sl/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,23 @@ + +## Okolje + +Okolje Mountain Car vključuje avto, ujet v dolini. Vaš cilj je skočiti iz doline in doseči zastavo. Dejanja, ki jih lahko izvedete, so pospeševanje v levo, v desno ali nič. Opazujete lahko položaj avtomobila na x-osi in hitrost. + +## Začetek zvezka + +Začnite z delom tako, da odprete [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Ključne točke + +Med tem laboratorijem bi morali spoznati, da je prilagajanje algoritmov za okrepitev učenja (RL) novemu okolju pogosto precej enostavno, saj ima OpenAI Gym enak vmesnik za vsa okolja, algoritmi pa v veliki meri ne temeljijo na naravi okolja. Python kodo lahko celo prestrukturirate tako, da katero koli okolje posredujete algoritmu RL kot parameter. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/6-Other/23-MultiagentSystems/README.md b/translations/sl/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..95cccf79 --- /dev/null +++ b/translations/sl/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,164 @@ + +# Večagentni sistemi + +Eden od možnih načinov za doseganje inteligence je tako imenovani **emergentni** (ali **sinergijski**) pristop, ki temelji na dejstvu, da lahko združeno vedenje mnogih relativno preprostih agentov privede do bolj kompleksnega (ali inteligentnega) vedenja sistema kot celote. Teoretično to temelji na principih [kolektivne inteligence](https://en.wikipedia.org/wiki/Collective_intelligence), [emergentizma](https://en.wikipedia.org/wiki/Global_brain) in [evolucijske kibernetike](https://en.wikipedia.org/wiki/Global_brain), ki pravijo, da višjenivojski sistemi pridobijo neko dodano vrednost, ko so pravilno sestavljeni iz nižjenivojskih sistemov (tako imenovani *princip prehoda metasistema*). + +## [Predavanje kviz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) + +Smer **večagentnih sistemov** se je v umetni inteligenci pojavila v 90. letih prejšnjega stoletja kot odgovor na rast interneta in porazdeljenih sistemov. Ena od klasičnih učbenikov umetne inteligence, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), se osredotoča na pogled klasične umetne inteligence z vidika večagentnih sistemov. + +Osrednji pojem večagentnega pristopa je **agent** - entiteta, ki živi v nekem **okolju**, ki ga lahko zaznava in nanj vpliva. To je zelo široka definicija, zato obstaja veliko različnih vrst in klasifikacij agentov: + +* Glede na njihovo sposobnost razmišljanja: + - **Reaktivni** agenti običajno delujejo po principu preprostega odziva na zahtevo + - **Deliberativni** agenti uporabljajo neko obliko logičnega razmišljanja in/ali načrtovanja +* Glede na mesto izvajanja kode agenta: + - **Statični** agenti delujejo na določenem omrežnem vozlišču + - **Mobilni** agenti lahko premikajo svojo kodo med omrežnimi vozlišči +* Glede na njihovo vedenje: + - **Pasivni agenti** nimajo specifičnih ciljev. Takšni agenti se lahko odzivajo na zunanje dražljaje, vendar sami ne bodo sprožili nobenih dejanj. + - **Aktivni agenti** imajo določene cilje, ki jih zasledujejo + - **Kognitivni agenti** vključujejo kompleksno načrtovanje in razmišljanje + +Večagentni sistemi se danes uporabljajo v številnih aplikacijah: + +* V igrah mnogi liki, ki niso igralci, uporabljajo neko obliko umetne inteligence in jih lahko štejemo za inteligentne agente +* Pri video produkciji se za upodabljanje kompleksnih 3D prizorov, ki vključujejo množice, običajno uporablja večagentna simulacija +* Pri modeliranju sistemov se večagentni pristop uporablja za simulacijo vedenja kompleksnega modela. Na primer, večagentni pristop je bil uspešno uporabljen za napovedovanje širjenja bolezni COVID-19 po svetu. Podoben pristop se lahko uporabi za modeliranje prometa v mestu in opazovanje, kako se odziva na spremembe prometnih pravil. +* V kompleksnih avtomatizacijskih sistemih lahko vsaka naprava deluje kot neodvisen agent, kar naredi celoten sistem manj monoliten in bolj robusten. + +Ne bomo se poglabljali v večagentne sisteme, ampak bomo obravnavali en primer **večagentnega modeliranja**. + +## NetLogo + +[NetLogo](https://ccl.northwestern.edu/netlogo/) je okolje za večagentno modeliranje, ki temelji na prilagojeni različici programskega jezika [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Ta jezik je bil razvit za poučevanje programskih konceptov otrokom in omogoča nadzor agenta, imenovanega **želva**, ki se lahko premika in za seboj pušča sled. To omogoča ustvarjanje kompleksnih geometrijskih oblik, kar je zelo vizualen način za razumevanje vedenja agenta. + +V NetLogu lahko ustvarimo veliko želv z ukazom `create-turtles`. Nato lahko vsem želvam ukazujemo, naj izvedejo določena dejanja (v spodnjem primeru - premik za 10 točk naprej): + +``` +create-turtles 10 +ask turtles [ + forward 10 +] +``` + +Seveda ni zanimivo, če vse želve počnejo isto stvar, zato lahko `ask` uporabimo za skupine želv, npr. tiste, ki so v bližini določene točke. Prav tako lahko ustvarimo želve različnih *vrst* z ukazom `breed [cats cat]`. Tukaj je `cat` ime vrste, pri čemer moramo določiti tako edninsko kot množinsko obliko, saj različni ukazi uporabljajo različne oblike za jasnost. + +> ✅ Ne bomo se učili jezika NetLogo - če vas zanima več, obiščite odličen [Interaktivni slovar za začetnike NetLogo](https://ccl.northwestern.edu/netlogo/bind/). + +NetLogo lahko [preneseš](https://ccl.northwestern.edu/netlogo/download.shtml) in namestiš, da ga preizkusiš. + +### Knjižnica modelov + +Odlična stvar pri NetLogu je, da vsebuje knjižnico delujočih modelov, ki jih lahko preizkusite. Pojdite na **File → Models Library**, kjer imate na voljo veliko kategorij modelov. + +Knjižnica modelov NetLogo + +> Posnetek zaslona knjižnice modelov avtorja Dmitry Soshnikov + +Odprite enega od modelov, na primer **Biology → Flocking**. + +### Glavna načela + +Ko odprete model, vas program pripelje na glavni zaslon NetLogo. Tukaj je primer modela, ki opisuje populacijo volkov in ovc ob omejenih virih (trava). + +![Glavni zaslon NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sl.png) + +> Posnetek zaslona avtorja Dmitry Soshnikov + +Na tem zaslonu lahko vidite: + +* Odsek **Interface**, ki vsebuje: + - Glavno polje, kjer živijo vsi agenti + - Različne kontrole: gumbe, drsnike itd. + - Grafe, ki jih lahko uporabite za prikaz parametrov simulacije +* Zavihek **Code**, ki vsebuje urejevalnik, kjer lahko pišete program NetLogo + +V večini primerov ima vmesnik gumb **Setup**, ki inicializira stanje simulacije, in gumb **Go**, ki začne izvajanje. Ti gumbi so obdelani z ustreznimi obdelovalci v kodi, ki izgledajo takole: + +``` +to go [ +... +] +``` + +Svet NetLogo sestavljajo naslednji objekti: + +* **Agenti** (želve), ki se lahko premikajo po polju in nekaj počnejo. Agente ukazujete z uporabo sintakse `ask turtles [...]`, pri čemer se koda v oklepajih izvaja za vse agente v *načinu želve*. +* **Zaplate** so kvadratna območja polja, na katerih živijo agenti. Lahko se sklicujete na vse agente na isti zaplati ali spreminjate barve zaplat in nekatere druge lastnosti. Prav tako lahko `ask patches`, da nekaj naredijo. +* **Opazovalec** je edinstven agent, ki nadzoruje svet. Vsi obdelovalci gumbov se izvajajo v *načinu opazovalca*. + +> ✅ Lepota večagentnega okolja je v tem, da se koda, ki se izvaja v načinu želve ali zaplate, izvaja hkrati za vse agente vzporedno. Tako lahko z malo kode in programiranjem vedenja posameznega agenta ustvarite kompleksno vedenje celotnega simulacijskega sistema. + +### Jata + +Kot primer večagentnega vedenja si oglejmo **[jato](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Jata je kompleksen vzorec, ki je zelo podoben načinu letenja jate ptic. Ko jih opazujete, lahko pomislite, da sledijo nekakšnemu kolektivnemu algoritmu ali da imajo neko obliko *kolektivne inteligence*. Vendar pa to kompleksno vedenje nastane, ko vsak posamezen agent (v tem primeru *ptica*) opazuje le nekaj drugih agentov na kratki razdalji in sledi trem preprostim pravilom: + +* **Poravnava** - usmerja se proti povprečni smeri sosednjih agentov +* **Kohezija** - poskuša se usmeriti proti povprečni poziciji sosedov (*dolgo razdaljna privlačnost*) +* **Ločitev** - ko se preveč približa drugim pticam, se poskuša oddaljiti (*kratko razdaljna odbojnost*) + +Lahko zaženete primer jate in opazujete vedenje. Prav tako lahko prilagodite parametre, kot so *stopnja ločitve* ali *vidno polje*, ki določa, kako daleč lahko vsaka ptica vidi. Upoštevajte, da če zmanjšate vidno polje na 0, vse ptice postanejo slepe in jata preneha delovati. Če zmanjšate ločitev na 0, se vse ptice zberejo v ravno črto. + +> ✅ Preklopite na zavihek **Code** in preverite, kje so v kodi implementirana tri pravila jate (poravnava, kohezija in ločitev). Opazite, kako se sklicujemo le na tiste agente, ki so v vidnem polju. + +### Drugi modeli za ogled + +Obstaja še nekaj zanimivih modelov, ki jih lahko preizkusite: + +* **Art → Fireworks** prikazuje, kako lahko ognjemet štejemo za kolektivno vedenje posameznih ognjenih tokov +* **Social Science → Traffic Basic** in **Social Science → Traffic Grid** prikazujeta model mestnega prometa v 1D in 2D mreži z ali brez semaforjev. Vsak avto v simulaciji sledi naslednjim pravilom: + - Če je prostor pred njim prazen - pospeši (do določene največje hitrosti) + - Če vidi oviro pred seboj - zavira (in lahko prilagodite, kako daleč voznik vidi) +* **Social Science → Party** prikazuje, kako se ljudje združujejo na koktajl zabavi. Lahko najdete kombinacijo parametrov, ki vodi do najhitrejšega povečanja sreče skupine. + +Kot lahko vidite iz teh primerov, so večagentne simulacije lahko zelo uporaben način za razumevanje vedenja kompleksnega sistema, sestavljenega iz posameznikov, ki sledijo enakim ali podobnim logikam. Uporabljajo se lahko tudi za nadzor virtualnih agentov, kot so [NPC-ji](https://en.wikipedia.org/wiki/NPC) v računalniških igrah ali agenti v 3D animiranih svetovih. + +## Deliberativni agenti + +Zgoraj opisani agenti so zelo preprosti in se odzivajo na spremembe v okolju z uporabo neke vrste algoritma. Takšni agenti so **reaktivni agenti**. Vendar pa lahko včasih agenti razmišljajo in načrtujejo svoja dejanja, v tem primeru jih imenujemo **deliberativni**. + +Tipičen primer bi bil osebni agent, ki prejme navodilo od človeka, naj rezervira počitniški paket. Predpostavimo, da na internetu obstaja veliko agentov, ki mu lahko pomagajo. Moral bi stopiti v stik z drugimi agenti, da preveri, kateri leti so na voljo, kakšne so cene hotelov za različne datume, in poskusiti izpogajati najboljšo ceno. Ko je načrt počitnic dokončan in potrjen s strani lastnika, lahko nadaljuje z rezervacijo. + +Za to potrebujejo agenti **komunikacijo**. Za uspešno komunikacijo potrebujejo: + +* Nekatere **standardne jezike za izmenjavo znanja**, kot sta [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) in [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Ti jeziki so zasnovani na podlagi [teorije govornih dejanj](https://en.wikipedia.org/wiki/Speech_act). +* Ti jeziki morajo vključevati tudi nekatere **protokole za pogajanja**, ki temeljijo na različnih **vrstah dražb**. +* **Skupno ontologijo**, ki jo uporabljajo, da se sklicujejo na iste koncepte in poznajo njihov pomen +* Način za **odkrivanje**, kaj lahko različni agenti naredijo, prav tako na podlagi neke vrste ontologije + +Deliberativni agenti so veliko bolj kompleksni kot reaktivni, saj se ne odzivajo le na spremembe v okolju, ampak morajo tudi *sprožiti* dejanja. Ena od predlaganih arhitektur za deliberativne agente je tako imenovani agent Verovanje-Želja-Namera (BDI): + +* **Verovanja** tvorijo niz znanja o agentovem okolju. Lahko so strukturirana kot baza znanja ali niz pravil, ki jih agent lahko uporabi v določeni situaciji v okolju. +* **Želje** določajo, kaj agent želi narediti, tj. njegove cilje. Na primer, cilj osebnega asistenta zgoraj je rezervirati počitnice, cilj hotelskega agenta pa je maksimirati dobiček. +* **Namere** so specifična dejanja, ki jih agent načrtuje za dosego svojih ciljev. Dejanja običajno spremenijo okolje in povzročijo komunikacijo z drugimi agenti. + +Na voljo so nekatere platforme za gradnjo večagentnih sistemov, kot je [JADE](https://jade.tilab.com/). [Ta članek](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) vsebuje pregled večagentnih platform skupaj s kratko zgodovino večagentnih sistemov in njihovimi različnimi scenariji uporabe. + +## Zaključek + +Večagentni sistemi lahko zavzamejo zelo različne oblike in se uporabljajo v številnih različnih aplikacijah. +Vsi se osredotočajo na preprostejše vedenje posameznega agenta in dosežejo bolj kompleksno vedenje celotnega sistema zaradi **sinergijskega učinka**. + +## 🚀 Izziv + +Prenesite to lekcijo v resnični svet in poskusite zasnovati večagentni sistem, ki lahko reši določen problem. Kaj bi na primer moral narediti večagentni sistem za optimizacijo poti šolskega avtobusa? Kako bi lahko deloval v pekarni? + +## [Kviz po predavanju](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) + +## Pregled in samostojno učenje + +Preglejte uporabo tovrstnih sistemov v industriji. Izberite področje, kot je proizvodnja ali industrija video iger, in odkrijte, kako se večagentni sistemi lahko uporabljajo za reševanje edinstvenih problemov. + +## [Naloga NetLogo](assignment.md) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/sl/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..b9ca08a2 --- /dev/null +++ b/translations/sl/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Naloga NetLogo + +Izberite enega od modelov iz knjižnice NetLogo in ga uporabite za čim bolj natančno simulacijo resnične situacije. Dober primer bi bil prilagoditev modela Virus v mapi Alternative Visualizations, da pokažete, kako ga je mogoče uporabiti za modeliranje širjenja COVID-19. Ali lahko ustvarite model, ki posnema širjenje virusa v resničnem življenju? + +Svoje delo pokažite tako, da shranite kopijo in ustvarite video predstavitev, v kateri razložite, kako je model povezan z resnično situacijo. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne odgovarjamo za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/7-Ethics/README.md b/translations/sl/lessons/7-Ethics/README.md new file mode 100644 index 00000000..efe27129 --- /dev/null +++ b/translations/sl/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Etična in odgovorna umetna inteligenca + +Skoraj ste zaključili ta tečaj in upam, da zdaj jasno vidite, da je umetna inteligenca (UI) osnovana na številnih formalnih matematičnih metodah, ki nam omogočajo iskanje povezav v podatkih in učenje modelov za posnemanje določenih vidikov človeškega vedenja. V tem trenutku zgodovine umetno inteligenco obravnavamo kot zelo močno orodje za pridobivanje vzorcev iz podatkov in uporabo teh vzorcev za reševanje novih težav. + +## [Predavanje kviz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Vendar pa v znanstveni fantastiki pogosto vidimo zgodbe, kjer UI predstavlja nevarnost za človeštvo. Običajno so te zgodbe osredotočene na nekakšen upor UI, ko UI odloči, da se bo soočila s človeškimi bitji. To nakazuje, da ima UI nekakšna čustva ali lahko sprejema odločitve, ki jih njeni razvijalci niso predvideli. + +Vrsta UI, o kateri smo se učili v tem tečaju, ni nič drugega kot obsežna matrična aritmetika. To je zelo močno orodje, ki nam pomaga reševati naše težave, in kot vsako drugo močno orodje - lahko se uporablja za dobre ali slabe namene. Pomembno je, da se lahko tudi *zlorabi*. + +## Načela odgovorne umetne inteligence + +Da bi se izognili nenamerni ali namerni zlorabi UI, Microsoft navaja pomembna [načela odgovorne umetne inteligence](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Naslednji koncepti so temelj teh načel: + +* **Pravičnost** je povezana s pomembnim problemom *pristranskosti modelov*, ki lahko nastane zaradi uporabe pristranskih podatkov za učenje. Na primer, ko poskušamo napovedati verjetnost, da bo oseba dobila službo razvijalca programske opreme, bo model verjetno dal prednost moškim - zgolj zato, ker je bil učni nabor verjetno pristranski v korist moške populacije. Potrebno je skrbno uravnotežiti učne podatke in raziskati model, da se izognemo pristranskostim ter zagotovimo, da model upošteva bolj relevantne značilnosti. +* **Zanesljivost in varnost**. Po svoji naravi lahko modeli UI delajo napake. Nevronska mreža vrača verjetnosti, kar moramo upoštevati pri sprejemanju odločitev. Vsak model ima določeno natančnost in priklic, kar moramo razumeti, da preprečimo škodo, ki jo lahko povzročijo napačni nasveti. +* **Zasebnost in varnost** imata nekatere specifične implikacije za UI. Na primer, ko uporabljamo določene podatke za učenje modela, ti podatki postanejo nekako "integrirani" v model. Po eni strani to povečuje varnost in zasebnost, po drugi strani pa moramo vedeti, kateri podatki so bili uporabljeni za učenje modela. +* **Vključenost** pomeni, da UI ne gradimo zato, da bi nadomestila ljudi, temveč da bi jih dopolnila in naredila naše delo bolj ustvarjalno. To je povezano tudi s pravičnostjo, saj so pri obravnavi premalo zastopanih skupnosti podatkovni nabori, ki jih zbiramo, pogosto pristranski, zato moramo zagotoviti, da so te skupnosti vključene in pravilno obravnavane z UI. +* **Transparentnost**. To vključuje zagotavljanje, da smo vedno jasni glede uporabe UI. Kjer je mogoče, želimo uporabljati sisteme UI, ki so *razložljivi*. +* **Odgovornost**. Ko modeli UI sprejemajo določene odločitve, ni vedno jasno, kdo je odgovoren za te odločitve. Moramo zagotoviti, da razumemo, kje leži odgovornost za odločitve UI. V večini primerov želimo vključiti ljudi v proces sprejemanja pomembnih odločitev, da so dejanske osebe odgovorne. + +## Orodja za odgovorno umetno inteligenco + +Microsoft je razvil [Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox), ki vsebuje nabor orodij: + +* Nadzorna plošča za razložljivost (InterpretML) +* Nadzorna plošča za pravičnost (FairLearn) +* Nadzorna plošča za analizo napak +* Nadzorna plošča za odgovorno UI, ki vključuje: + + - EconML - orodje za vzročno analizo, ki se osredotoča na vprašanja "kaj če" + - DiCE - orodje za analizo kontrafaktov, ki omogoča vpogled v to, katere značilnosti je treba spremeniti, da bi vplivali na odločitev modela + +Za več informacij o etiki UI obiščite [to lekcijo](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) v učnem načrtu strojnega učenja, ki vključuje naloge. + +## Pregled in samostojno učenje + +Opravite [učni modul](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste), da se naučite več o odgovorni umetni inteligenci. + +## [Kviz po predavanju](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/README.md b/translations/sl/lessons/README.md new file mode 100644 index 00000000..ecfe3bf2 --- /dev/null +++ b/translations/sl/lessons/README.md @@ -0,0 +1,17 @@ + +# Pregled + +![Pregled v skici](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sl.png) + +> Skica avtorja [Tomomi Imura](https://twitter.com/girlie_mac) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/X-Extras/X1-MultiModal/README.md b/translations/sl/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..b9d10245 --- /dev/null +++ b/translations/sl/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Multi-modalna omrežja + +Po uspehu modelov transformatorjev pri reševanju nalog NLP so bile iste ali podobne arhitekture uporabljene tudi za naloge računalniškega vida. Narašča zanimanje za gradnjo modelov, ki bi *združevali* sposobnosti vida in naravnega jezika. Eden takšnih poskusov je bil izveden s strani OpenAI, imenovan CLIP in DALL.E. + +## Kontrastno predhodno učenje slik (CLIP) + +Glavna ideja CLIP je primerjati besedilne pozive s sliko in ugotoviti, kako dobro slika ustreza pozivu. + +![CLIP Arhitektura](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sl.png) + +> *Slika iz [tega blog prispevka](https://openai.com/blog/clip/)* + +Model je treniran na slikah, pridobljenih z interneta, in njihovih napisih. Za vsak paket vzamemo N parov (slika, besedilo) in jih pretvorimo v vektorske reprezentacije I, ..., I / T, ..., T. Te reprezentacije se nato medsebojno ujemajo. Funkcija izgube je definirana tako, da maksimizira kosinusno podobnost med vektorji, ki ustrezajo enemu paru (npr. I in T), ter minimizira kosinusno podobnost med vsemi drugimi pari. Zaradi tega se ta pristop imenuje **kontrastni**. + +Model/biblioteka CLIP je na voljo na [OpenAI GitHub](https://github.com/openai/CLIP). Pristop je opisan v [tem blog prispevku](https://openai.com/blog/clip/) in podrobneje v [tem članku](https://arxiv.org/pdf/2103.00020.pdf). + +Ko je model predhodno treniran, mu lahko podamo paket slik in paket besedilnih pozivov, rezultat pa bo tenzor s verjetnostmi. CLIP se lahko uporablja za več nalog: + +**Razvrščanje slik** + +Recimo, da moramo razvrstiti slike med, na primer, mačke, pse in ljudi. V tem primeru lahko modelu podamo sliko in serijo besedilnih pozivov: "*slika mačke*", "*slika psa*", "*slika človeka*". V nastalem vektorju s tremi verjetnostmi moramo le izbrati indeks z najvišjo vrednostjo. + +![CLIP za razvrščanje slik](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sl.png) + +> *Slika iz [tega blog prispevka](https://openai.com/blog/clip/)* + +**Iskanje slik na podlagi besedila** + +Lahko naredimo tudi obratno. Če imamo zbirko slik, jo lahko posredujemo modelu skupaj z besedilnim pozivom - to nam bo dalo sliko, ki je najbolj podobna danemu pozivu. + +## ✍️ Primer: [Uporaba CLIP za razvrščanje slik in iskanje slik](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) + +Odprite zvezek [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb), da vidite CLIP v akciji. + +## Generiranje slik z VQGAN+CLIP + +CLIP se lahko uporablja tudi za **generiranje slik** na podlagi besedilnega poziva. Za to potrebujemo **generatorski model**, ki bo sposoben generirati slike na podlagi nekega vektorskega vnosa. Eden takšnih modelov se imenuje [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). + +Glavne ideje VQGAN, ki ga razlikujejo od običajnega [GAN](../../4-ComputerVision/10-GANs/README.md), so naslednje: +* Uporaba avto-regresivne arhitekture transformatorja za generiranje zaporedja vizualnih delov, bogatih s kontekstom, ki sestavljajo sliko. Ti vizualni deli se nato učijo z [CNN](../../4-ComputerVision/07-ConvNets/README.md). +* Uporaba diskriminatorja pod-slik, ki zazna, ali so deli slike "resnični" ali "ponarejeni" (za razliko od pristopa "vse ali nič" v tradicionalnem GAN). + +Več o VQGAN si lahko preberete na spletni strani [Taming Transformers](https://compvis.github.io/taming-transformers/). + +Ena pomembna razlika med VQGAN in tradicionalnim GAN je, da slednji lahko ustvari spodobno sliko iz katerega koli vhodnega vektorja, medtem ko VQGAN verjetno ustvari sliko, ki ni koherentna. Zato moramo dodatno usmerjati proces ustvarjanja slike, kar lahko storimo z uporabo CLIP. + +![VQGAN+CLIP Arhitektura](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sl.png) + +Za generiranje slike, ki ustreza besedilnemu pozivu, začnemo z naključnim kodirnim vektorjem, ki ga posredujemo VQGAN za ustvarjanje slike. Nato uporabimo CLIP za ustvarjanje funkcije izgube, ki kaže, kako dobro slika ustreza besedilnemu pozivu. Cilj je nato minimizirati to izgubo z uporabo povratnega razširjanja za prilagoditev parametrov vhodnega vektorja. + +Odlična knjižnica, ki implementira VQGAN+CLIP, je [Pixray](http://github.com/pixray/pixray). + +![Slika, ustvarjena s Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sl.png) | ![Slika, ustvarjena s Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sl.png) | ![Slika, ustvarjena s Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sl.png) +----|----|---- +Slika, ustvarjena iz poziva *bližnji akvarelni portret mladega učitelja književnosti z knjigo* | Slika, ustvarjena iz poziva *bližnji oljni portret mlade učiteljice računalništva z računalnikom* | Slika, ustvarjena iz poziva *bližnji oljni portret starega učitelja matematike pred tablo* + +> Slike iz zbirke **Umetni učitelji** avtorja [Dmitry Soshnikov](http://soshnikov.com) + +## DALL-E +### [DALL-E 1](https://openai.com/research/dall-e) +DALL-E je različica GPT-3, trenirana za generiranje slik na podlagi pozivov. Treniran je bil z 12 milijardami parametrov. + +Za razliko od CLIP DALL-E prejme tako besedilo kot sliko kot enoten tok tokenov za slike in besedilo. Zato lahko iz več pozivov generirate slike na podlagi besedila. + +### [DALL-E 2](https://openai.com/dall-e-2) +Glavna razlika med DALL.E 1 in 2 je, da generira bolj realistične slike in umetnost. + +Primeri generiranja slik z DALL-E: +![Slika, ustvarjena s 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.sl.png) | ![Slika, ustvarjena s 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.sl.png) | ![Slika, ustvarjena s 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.sl.png) +----|----|---- +Slika, ustvarjena iz poziva *bližnji akvarelni portret mladega učitelja književnosti z knjigo* | Slika, ustvarjena iz poziva *bližnji oljni portret mlade učiteljice računalništva z računalnikom* | Slika, ustvarjena iz poziva *bližnji oljni portret starega učitelja matematike pred tablo* + +## Reference + +* Članek o VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Članek o CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/sketchnotes/LICENSE.md b/translations/sl/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..e276f47f --- /dev/null +++ b/translations/sl/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,146 @@ + +Priznanje-Deljenje pod enakimi pogoji 4.0 Mednarodna + +======================================================================= + +Creative Commons Corporation ("Creative Commons") ni odvetniška družba in ne nudi pravnih storitev ali pravnih nasvetov. Distribucija javnih licenc Creative Commons ne ustvarja razmerja med odvetnikom in stranko ali kakršnega koli drugega razmerja. Creative Commons omogoča svoje licence in povezane informacije na podlagi načela "kot je". Creative Commons ne daje nobenih jamstev glede svojih licenc, materialov, licenciranih pod njihovimi pogoji, ali povezanih informacij. Creative Commons zavrača vso odgovornost za škodo, ki bi nastala zaradi njihove uporabe, v največjem možnem obsegu. + +Uporaba javnih licenc Creative Commons + +Javne licence Creative Commons zagotavljajo standardni nabor pogojev, ki jih lahko ustvarjalci in drugi imetniki pravic uporabijo za deljenje izvirnih avtorskih del in drugega gradiva, ki je predmet avtorskih pravic in določenih drugih pravic, navedenih v spodnji javni licenci. Naslednje točke so zgolj informativne narave, niso izčrpne in niso del naših licenc. + + Premisleki za dajalce licenc: Naše javne licence so namenjene tistim, ki so pooblaščeni, da javnosti dovolijo uporabo gradiva na načine, ki bi sicer bili omejeni z avtorskimi pravicami in določenimi drugimi pravicami. Naše licence so nepreklicne. Dajalci licenc naj preberejo in razumejo pogoje licence, ki jo izberejo, preden jo uporabijo. Prav tako naj dajalci licenc zagotovijo vse potrebne pravice, preden uporabijo naše licence, da bo javnost lahko ponovno uporabila gradivo, kot je predvideno. Dajalci licenc naj jasno označijo gradivo, ki ni predmet licence. To vključuje drugo gradivo, licencirano pod CC, ali gradivo, uporabljeno na podlagi izjeme ali omejitve avtorskih pravic. Več premislekov za dajalce licenc: + wiki.creativecommons.org/Considerations_for_licensors + + Premisleki za javnost: Z uporabo ene od naših javnih licenc dajalec licence javnosti podeli dovoljenje za uporabo licenciranega gradiva pod določenimi pogoji. Če dovoljenje dajalca licence ni potrebno iz kakršnega koli razloga – na primer zaradi veljavne izjeme ali omejitve avtorskih pravic – potem ta uporaba ni urejena z licenco. Naše licence podeljujejo le dovoljenja v okviru avtorskih pravic in določenih drugih pravic, ki jih ima dajalec licence pravico podeliti. Uporaba licenciranega gradiva je lahko še vedno omejena iz drugih razlogov, vključno s tem, da imajo drugi avtorske pravice ali druge pravice v gradivu. Dajalec licence lahko poda posebne zahteve, kot je zahteva, da so vse spremembe označene ali opisane. Čeprav to ni zahtevano z našimi licencami, vas spodbujamo, da spoštujete te zahteve, kjer je to razumno. Več premislekov za javnost: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Priznanje-Deljenje pod enakimi pogoji 4.0 Mednarodna javna licenca + +Z uveljavljanjem Licenciranih pravic (opredeljenih spodaj) sprejemate in se strinjate s pogoji te Creative Commons Priznanje-Deljenje pod enakimi pogoji 4.0 Mednarodne javne licence ("Javna licenca"). V obsegu, v katerem se ta Javna licenca lahko razlaga kot pogodba, so vam Licencirane pravice podeljene v zameno za vaše sprejetje teh pogojev, dajalec licence pa vam te pravice podeljuje v zameno za koristi, ki jih prejme z omogočanjem dostopa do Licenciranega gradiva pod temi pogoji. + +Oddelek 1 – Opredelitve. + + a. Prirejeno gradivo pomeni gradivo, ki je predmet avtorskih pravic in podobnih pravic, ki izhaja iz ali temelji na Licenciranem gradivu in v katerem je Licencirano gradivo prevedeno, spremenjeno, urejeno, preoblikovano ali kako drugače prilagojeno na način, ki zahteva dovoljenje v skladu z avtorskimi pravicami in podobnimi pravicami, ki jih ima dajalec licence. Za namene te Javne licence se šteje, da je Prirejeno gradivo vedno ustvarjeno, kadar je Licencirano gradivo sinhronizirano v časovnem razmerju s premikajočo se sliko, če je Licencirano gradivo glasbeno delo, izvedba ali zvočni posnetek. + + b. Licenca prireditelja pomeni licenco, ki jo uporabite za svoje avtorske pravice in podobne pravice v svojih prispevkih k Prirejenemu gradivu v skladu s pogoji te Javne licence. + + c. Združljiva licenca BY-SA pomeni licenco, navedeno na creativecommons.org/compatiblelicenses, ki jo je Creative Commons odobril kot bistveno enakovredno tej Javni licenci. + + d. Avtorske pravice in podobne pravice pomenijo avtorske pravice in/ali podobne pravice, ki so tesno povezane z avtorskimi pravicami, vključno, vendar ne omejeno na, pravice do izvedbe, oddajanja, zvočnega posnetka in sui generis pravice do baz podatkov, ne glede na to, kako so pravice označene ali kategorizirane. Za namene te Javne licence pravice, določene v Oddelku 2(b)(1)-(2), niso Avtorske pravice in podobne pravice. + + e. Učinkoviti tehnološki ukrepi pomenijo tiste ukrepe, ki jih ni mogoče obiti brez ustreznega dovoljenja v skladu z zakoni, ki izpolnjujejo obveznosti iz člena 11 Pogodbe WIPO o avtorskih pravicah, sprejete 20. decembra 1996, in/ali podobnih mednarodnih sporazumov. + + f. Izjeme in omejitve pomenijo pošteno uporabo, pošteno obravnavo in/ali katero koli drugo izjemo ali omejitev avtorskih pravic in podobnih pravic, ki velja za vašo uporabo Licenciranega gradiva. + + g. Elementi licence pomenijo lastnosti licence, navedene v imenu Creative Commons Javne licence. Elementi licence te Javne licence so Priznanje in Deljenje pod enakimi pogoji. + + h. Licencirano gradivo pomeni umetniško ali literarno delo, bazo podatkov ali drugo gradivo, za katero je dajalec licence uporabil to Javno licenco. + + i. Licencirane pravice pomenijo pravice, podeljene vam v skladu s pogoji te Javne licence, ki so omejene na vse Avtorske pravice in podobne pravice, ki veljajo za vašo uporabo Licenciranega gradiva in ki jih ima dajalec licence pravico licencirati. + + j. Dajalec licence pomeni posameznika(e) ali subjekt(e), ki podeljujejo pravice v skladu s to Javno licenco. + + k. Deliti pomeni omogočiti dostop do gradiva javnosti na kakršen koli način ali s kakršnim koli postopkom, ki zahteva dovoljenje v skladu z Licenciranimi pravicami, kot so reprodukcija, javna prikazovanje, javna izvedba, distribucija, razširjanje, komunikacija ali uvoz, ter omogočiti dostop do gradiva javnosti, vključno na načine, ki omogočajo članom javnosti dostop do gradiva z mesta in ob času, ki ga sami izberejo. + + l. Sui generis pravice do baz podatkov pomenijo pravice, ki niso avtorske pravice in izhajajo iz Direktive 96/9/ES Evropskega parlamenta in Sveta z dne 11. marca 1996 o pravnem varstvu baz podatkov, kot je bila spremenjena in/ali nadomeščena, ter druge bistveno enakovredne pravice kjer koli na svetu. + + m. Vi pomeni posameznika ali subjekt, ki uveljavlja Licencirane pravice v skladu s to Javno licenco. Vaš ima ustrezen pomen. + +Oddelek 2 – Obseg. + + a. Podelitev licence. + + 1. Ob upoštevanju pogojev te Javne licence dajalec licence podeljuje vam svetovno, brezplačno, neprenosljivo, neizključno, nepreklicno licenco za uveljavljanje Licenciranih pravic v Licenciranem gradivu za: + + a. reprodukcijo in Deljenje Licenciranega gradiva, v celoti ali delno; in + + b. ustvarjanje, reprodukcijo in Deljenje Prirejenega gradiva. + + 2. Izjeme in omejitve. Za izogibanje dvomom, kjer veljajo Izjeme in omejitve za vašo uporabo, ta Javna licenca ne velja in vam ni treba upoštevati njenih pogojev. + + 3. Trajanje. Trajanje te Javne licence je določeno v Oddelku 6(a). + + 4. Mediji in formati; dovoljene tehnične spremembe. Dajalec licence vam dovoljuje uveljavljanje Licenciranih pravic v vseh medijih in formatih, bodisi zdaj znanih bodisi kasneje ustvarjenih, ter izvajanje tehničnih sprememb, potrebnih za to. Dajalec licence se odpoveduje in/ali se strinja, da ne bo uveljavljal nobene pravice ali pooblastila, da bi vam preprečil izvajanje tehničnih sprememb, potrebnih za uveljavljanje Licenciranih pravic, vključno s tehničnimi spremembami, potrebnimi za obhod Učinkovitih tehnoloških ukrepov. Za namene te Javne licence zgolj izvajanje sprememb, dovoljenih s tem Oddelkom 2(a)(4), nikoli ne ustvarja Prirejenega gradiva. + + 5. Prejemniki po prenosu. + + a. Ponudba dajalca licence – Licencirano gradivo. Vsak prejemnik Licenciranega gradiva samodejno prejme ponudbo dajalca licence za uveljavljanje Licenciranih pravic pod pogoji te Javne licence. + + b. Dodatna ponudba dajalca licence – Prirejeno gradivo. Vsak prejemnik Prirejenega gradiva od vas samodejno prejme ponudbo dajalca licence za uveljavljanje Licenciranih pravic v Prirejenem gradivu pod pogoji Licence prireditelja, ki jo uporabite. + + c. Brez omejitev po prenosu. Ne smete ponujati ali nalagati dodatnih ali drugačnih pogojev ali uporabljati Učinkovitih tehnoloških ukrepov na Licenciranem gradivu, če to omejuje uveljavljanje Licenciranih pravic s strani katerega koli prejemnika Licenciranega gradiva. + + 6. Brez odobritve. Nič v tej Javni licenci ne pomeni ali se lahko razlaga kot dovoljenje za trditev ali namigovanje, da ste vi ali vaša uporaba Licenciranega gradiva povezana z, sponzorirana, odobrena ali uradno priznana s strani dajalca licence ali drugih, določenih za prejemanje priznanja, kot je določeno v Oddelku 3(a)(1)(A)(i). + + b. Druge pravice. + + 1. Moralne pravice, kot je pravica do integritete, niso licencirane v skladu s to Javno licenco, prav tako ne pravice do javnosti, zasebnosti in/ali druge podobne osebnostne pravice; vendar pa se dajalec licence, kolikor je to mogoče, odpoveduje in/ali se strinja, da ne bo uveljavljal takšnih pravic, ki jih ima, v obsegu, ki je potreben za omogočanje uveljavljanja Licenciranih pravic, vendar ne drugače. + + 2. Patentne in blagovne znamke niso licencirane v skladu s to Javno licenco. + + 3. Kolikor je to mogoče, se dajalec licence odpoveduje pravici do zbiranja nadomestil od vas za uveljavljanje Licenciranih pravic, bodisi neposredno bodisi prek kolektivne organizacije v okviru katerega koli prostovoljnega ali odpovedljivega zakonskega ali obveznega licenčnega sistema. V vseh drugih primerih si dajalec licence izrecno pridržuje pravico do zbiranja takšnih nadomestil. +Pravice, nato baza podatkov, v kateri imate pravice sui generis na bazi podatkov (vendar ne na posameznih vsebinah), je prilagojeno gradivo, + +vključno za namene iz oddelka 3(b); in +c. Upoštevati morate pogoje iz oddelka 3(a), če delite celotno ali bistveni del vsebine baze podatkov. + +Za izogib nesporazumom ta oddelek 4 dopolnjuje in ne nadomešča vaših obveznosti po tej javni licenci, kadar licencirane pravice vključujejo druge avtorske pravice in podobne pravice. + +### Oddelek 5 – Izjava o omejitvi jamstev in odgovornosti. + +a. RAZEN ČE LICENCODAJALEC NI IZRECNO DRUGAČE DOLOČIL, LICENCODAJALEC, KOLIKOR JE TO MOŽNO, PONUJA LICENCIRANO GRADIVO TAKO, KOT JE, IN KOT JE NA VOLJO, BREZ KAKRŠNIH KOLI IZJAV ALI JAMSTEV, BODISI IZRECNIH, IMPLICITNIH, ZAKONSKIH ALI DRUGIH. TO VKLJUČUJE, BREZ OMEJITEV, JAMSTVA GLEDE LASTNIŠTVA, PRIMERNOSTI ZA DOLOČEN NAMEN, NEKRŠITVE, ODSOTNOSTI SKRITIH ALI DRUGIH NAPAK, TOČNOSTI ALI PRISOTNOSTI ALI ODSOTNOSTI NAPAK, NE GLEDE NA TO, ALI SO TE ZNANE ALI ODKRITELJIVE. KJER IZKLJUČITEV JAMSTEV NI DOVOLJENA V CELOTI ALI DELNO, TA IZKLJUČITEV ZA VAS MORDA NE VELJA. + +b. KOLIKOR JE TO MOŽNO, LICENCODAJALEC V NOBENEM PRIMERU NE BO ODGOVOREN ZA VAS PO KATERI KOLI PRAVNI TEORIJI (VKLJUČNO, BREZ OMEJITEV, MALOMARNOST) ALI DRUGAČE ZA KAKRŠNO KOLI NEPOSREDNO, POSEBNO, POSREDNO, NAKLJUČNO, POSLEDIČNO, KAZENSKO, PRIMERNO ALI DRUGO ŠKODO, STROŠKE, IZDATKE ALI IZGUBE, KI IZHAJAJO IZ TE JAVNE LICENCE ALI UPORABE LICENCIRANEGA GRADIVA, ČETUDI JE BIL LICENCODAJALEC OPOZORJEN NA MOŽNOST TAKŠNE ŠKODE, STROŠKOV, IZDATKOV ALI IZGUB. KJER OMEJITEV ODGOVORNOSTI NI DOVOLJENA V CELOTI ALI DELNO, TA OMEJITEV ZA VAS MORDA NE VELJA. + +c. Izjava o omejitvi jamstev in odgovornosti, navedena zgoraj, se razlaga na način, ki, kolikor je to mogoče, najbolj približa popolni izključitvi in odpovedi vsem odgovornostim. + +### Oddelek 6 – Trajanje in prenehanje. + +a. Ta javna licenca velja za obdobje avtorskih pravic in podobnih pravic, licenciranih tukaj. Vendar pa, če ne upoštevate te javne licence, se vaše pravice po tej javni licenci samodejno prekinejo. + +b. Kadar se vaša pravica do uporabe licenciranega gradiva prekine po oddelku 6(a), se ponovno vzpostavi: + +1. samodejno na datum, ko je kršitev odpravljena, pod pogojem, da je odpravljena v 30 dneh od vašega odkritja kršitve; ali +2. z izrecno ponovno vzpostavitvijo s strani licencodajalca. + +Za izogib nesporazumom ta oddelek 6(b) ne vpliva na nobeno pravico licencodajalca, da zahteva pravna sredstva za vaše kršitve te javne licence. + +c. Za izogib nesporazumom lahko licencodajalec ponudi licencirano gradivo tudi pod ločenimi pogoji ali preneha distribuirati licencirano gradivo kadar koli; vendar to ne bo prekinilo te javne licence. + +d. Oddelki 1, 5, 6, 7 in 8 ostanejo v veljavi tudi po prenehanju te javne licence. + +### Oddelek 7 – Drugi pogoji in določila. + +a. Licencodajalec ni zavezan nobenim dodatnim ali drugačnim pogojem, ki jih sporočite vi, razen če se z njimi izrecno strinja. + +b. Kakršne koli dogovore, razumevanja ali sporazume glede licenciranega gradiva, ki niso navedeni tukaj, so ločeni in neodvisni od pogojev in določil te javne licence. + +### Oddelek 8 – Razlaga. + +a. Za izogib nesporazumom ta javna licenca ne zmanjšuje, omejuje, omejuje ali nalaga pogojev za kakršno koli uporabo licenciranega gradiva, ki bi jo bilo mogoče zakonito izvesti brez dovoljenja po tej javni licenci. + +b. Kolikor je to mogoče, če se katera koli določba te javne licence šteje za neizvršljivo, se samodejno prilagodi v najmanjšem možnem obsegu, da postane izvršljiva. Če določbe ni mogoče prilagoditi, se izloči iz te javne licence, ne da bi to vplivalo na izvršljivost preostalih pogojev in določil. + +c. Noben pogoj ali določilo te javne licence ne bo opuščen in nobena neizpolnitev ne bo odobrena, razen če se z njim izrecno strinja licencodajalec. + +d. Nič v tej javni licenci ne predstavlja ali se lahko razlaga kot omejitev ali odpoved kakršnih koli privilegijev in imunitet, ki veljajo za licencodajalca ali vas, vključno z zaščito pred pravnimi postopki katere koli jurisdikcije ali oblasti. + +======================================================================= + +Creative Commons ni stranka svojih javnih licenc. Kljub temu se lahko Creative Commons odloči uporabiti eno od svojih javnih licenc za gradivo, ki ga objavi, in v teh primerih velja za "licencodajalca". Besedilo javnih licenc Creative Commons je posvečeno javni domeni v skladu z izjavo CC0 Public Domain Dedication. Razen za omejen namen označevanja, da je gradivo deljeno pod javno licenco Creative Commons, ali kot je drugače dovoljeno s politikami Creative Commons, objavljenimi na creativecommons.org/policies, Creative Commons ne dovoljuje uporabe blagovne znamke "Creative Commons" ali katere koli druge blagovne znamke ali logotipa Creative Commons brez predhodnega pisnega soglasja, vključno, vendar ne omejeno na, v povezavi z nepooblaščenimi spremembami katere koli od svojih javnih licenc ali kakršnimi koli drugimi dogovori, razumevanji ali sporazumi glede uporabe licenciranega gradiva. Za izogib nesporazumom ta odstavek ni del javnih licenc. + +Creative Commons je dosegljiv na creativecommons.org. + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/lessons/sketchnotes/README.md b/translations/sl/lessons/sketchnotes/README.md new file mode 100644 index 00000000..f9fd5ae1 --- /dev/null +++ b/translations/sl/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Vse skice učnega načrta lahko prenesete tukaj. + +🎨 Ustvarila: 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/) + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo storitve AI za prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sr/README.md b/translations/sr/README.md new file mode 100644 index 00000000..7e54d055 --- /dev/null +++ b/translations/sr/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)). +* **Неуронске мреже** и **дубоко учење**, који су у срцу модерне вештачке интелигенције. Илустроваћемо концепте иза ових важних тема користећи код у два најпопуларнија оквира - [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 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 **Cloud Frameworks**, као што су [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** и **Chat Bots**. Постоји посебан [Креирање решења за конверзацијски 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) од 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 | [Аутоенкодери и ВАЕ](./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: Принципи одговорне вештачке интелигенције](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` + +Не заборавите да додате звездицу (🌟) овом репозиторијуму како бисте га лакше пронашли касније. + +## Упознајте друге учеснике + +Придружите се нашем [званичном 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`. Постепено се локализују. +## Потребна помоћ + +Имате предлоге или сте пронашли правописне или програмске грешке? Отворите питање или направите pull request. + +## Посебна захвалност + +* **✍️ Главни аутор:** [Дмитриј Сошњиков](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) +- [Интернет ствари (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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/SECURITY.md b/translations/sr/SECURITY.md new file mode 100644 index 00000000..e7a06b06 --- /dev/null +++ b/translations/sr/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 проблеме.** + +Уместо тога, пријавите их 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 инјекција, cross-site scripting, итд.) + * Пуне путање изворних датотека које се односе на манифестацију проблема + * Локација погођеног изворног кода (ознака/грана/комит или директан URL) + * Сва посебна конфигурација потребна за репродукцију проблема + * Упутства корак по корак за репродукцију проблема + * Proof-of-concept или exploit код (ако је могуће) + * Утицај проблема, укључујући начин на који нападач може искористити проблем + +Ове информације ће нам помоћи да брже обрадимо ваш извештај. + +Ако пријављујете у оквиру програма за награде за багове, потпунији извештаји могу допринети већој награди. Молимо вас да посетите нашу страницу [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) за више детаља о нашим активним програмима. + +## Преферирани језици + +Преферирамо да сва комуникација буде на енглеском језику. + +## Политика + +Мајкрософт следи принцип [Координисаног откривања рањивости](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/sr/etc/CODE_OF_CONDUCT.md b/translations/sr/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..b8539078 --- /dev/null +++ b/translations/sr/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Кодекс понашања за Microsoft отворени код + +Овај пројекат је усвојио [Кодекс понашања за Microsoft отворени код](https://opensource.microsoft.com/codeofconduct/). + +Ресурси: + +- [Кодекс понашања за Microsoft отворени код](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/sr/etc/CONTRIBUTING.md b/translations/sr/etc/CONTRIBUTING.md new file mode 100644 index 00000000..9df672dc --- /dev/null +++ b/translations/sr/etc/CONTRIBUTING.md @@ -0,0 +1,29 @@ + +# Допринос + +Овај пројекат поздравља доприносе и предлоге. Већина доприноса захтева да се сложите са Уговором о лиценци за доприносиоце (CLA), којим изјављујете да имате право да нам доделите права за коришћење вашег доприноса. За више детаља, посетите https://cla.microsoft.com. + +Када пошаљете захтев за повлачење (pull request), CLA-бот ће аутоматски утврдити да ли је потребно да доставите CLA и одговарајуће означи захтев (нпр. етикета, коментар). Само пратите упутства која вам бот пружи. Ово ћете морати да урадите само једном за све репозиторијуме који користе наш CLA. + +Овај пројекат је усвојио [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). За више информација погледајте [Често постављана питања о Кодексу понашања](https://opensource.microsoft.com/codeofconduct/faq/) или контактирајте [opencode@microsoft.com](mailto:opencode@microsoft.com) за било каква додатна питања или коментаре. + +# Тражимо доприносе + +Тренутно активно тражимо доприносе на следећим темама: + +- [ ] Написати одељак о дубоком учењу кроз појачање (Deep Reinforcement Learning) +- [ ] Побољшати одељак + бележницу о детекцији објеката (Object Detection) +- [ ] 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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/etc/Mindmap.md b/translations/sr/etc/Mindmap.md new file mode 100644 index 00000000..3aa56537 --- /dev/null +++ b/translations/sr/etc/Mindmap.md @@ -0,0 +1,87 @@ + +# Вештачка интелигенција + +## [Увод у вештачку интелигенцију](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Дефиниција вештачке интелигенције + - Историја вештачке интелигенције + - Приступи вештачкој интелигенцији + - Одозго на доле/Симболички + - Одоздо на горе/Неуронски + - Еволутивни + - Синергетски / Емергентна вештачка интелигенција + - [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) + - Репрезентација знања + - [Експертски системи](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) + - [Архитектуре 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) + - [Аутоенкодери и варијациони аутоенкодери (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/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) + - [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 + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/etc/SUPPORT.md b/translations/sr/etc/SUPPORT.md new file mode 100644 index 00000000..7585afc1 --- /dev/null +++ b/translations/sr/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/sr/etc/TRANSLATIONS.md b/translations/sr/etc/TRANSLATIONS.md new file mode 100644 index 00000000..adfe1594 --- /dev/null +++ b/translations/sr/etc/TRANSLATIONS.md @@ -0,0 +1,45 @@ + +# Придружите се превођењу лекција + +Добродошли сте да преводите лекције у овом курикулуму! + +## Упутства + +У свакој фасцикли са лекцијама и фасцикли са уводима у лекције налазе се преведени markdown фајлови. + +> Напомена: молимо вас да не преводите код у фајловима са примерима кода; једино што треба превести су README, задаци и квизови. Хвала! + +Преведени фајлови треба да прате овај формат именовања: + +**README._[језик]_.md** + +где је _[језик]_ двословна ознака језика у складу са ISO 639-1 стандардом (нпр. `README.es.md` за шпански и `README.nl.md` за холандски). + +**assignment._[језик]_.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/sr/etc/quiz-app/README.md b/translations/sr/etc/quiz-app/README.md new file mode 100644 index 00000000..65efaa01 --- /dev/null +++ b/translations/sr/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# Квизови + +Ови квизови су предавања пре и после лекција у оквиру наставног плана за вештачку интелигенцију на 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. Форкујте 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 workflow у вашем репозиторијуму. + +5. GitHub Actions Workflow +Azure ће аутоматски креирати GitHub Actions workflow датотеку у вашем репозиторијуму (.github/workflows/azure-static-web-apps-.yml). Овај workflow ће управљати процесом изградње и деплојовања. + +6. Праћење деплојовања +Идите на картицу „Actions“ у вашем GitHub репозиторијуму. +Требало би да видите workflow који се извршава. Овај workflow ће изградити и деплојовати вашу статичку веб апликацију на Azure. +Када workflow буде завршен, ваша апликација ће бити доступна на обезбеђеном Azure URL-у. + +### Пример датотеке за Workflow + +Ево примера како би GitHub Actions workflow датотека могла изгледати: +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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/0-course-setup/for-teachers.md b/translations/sr/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..8db762fe --- /dev/null +++ b/translations/sr/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' на вашем репозиторијуму за учионицу. + +Постоји много начина да ово функционише у онлајн учионици. Обавестите нас шта вам најбоље одговара! + +## Молимо вас да нам дате своје мишљење + +Желимо да овај наставни план буде користан за вас и ваше ученике. Молимо вас да нам дате повратне информације на дискусионим таблама! + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/0-course-setup/how-to-run.md b/translations/sr/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..a766b5a4 --- /dev/null +++ b/translations/sr/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 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 бележницу и почнете са коришћењем. + +Такође можете користити Google Colab, који долази са одређеном бесплатном GPU подршком, и отпремити Jupyter бележнице тамо како бисте их извршавали једну по једну. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/0-course-setup/setup.md b/translations/sr/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..8fd832b7 --- /dev/null +++ b/translations/sr/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 амбасадори](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`. 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/sr/lessons/1-Intro/README.md b/translations/sr/lessons/1-Intro/README.md new file mode 100644 index 00000000..33a9c1d9 --- /dev/null +++ b/translations/sr/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Слика од [Дмитриј Сошњиков](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), били су засновани на веома једноставним граматичким правилима и преобликовању улазне реченице у питање. +* Модерни асистенти, као што су 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 Large Scale Visual Recognition Challenge](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/sr/lessons/1-Intro/assignment.md b/translations/sr/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..7666cd3d --- /dev/null +++ b/translations/sr/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Game Jam + +Игре су област која је у великој мери под утицајем развоја вештачке интелигенције (AI) и машинског учења (ML). У овом задатку, напишите кратак рад о игри коју волите, а која је била под утицајем еволуције вештачке интелигенције. Требало би да је то довољно стара игра која је била под утицајем неколико различитих типова рачунарских система за обраду. Добар пример су шах или Го, али такође размислите о видео-играма као што су Понг или Пак-Мен. Напишите есеј који разматра прошлост, садашњост и будућност те игре у контексту вештачке интелигенције. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људског преводиоца. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/2-Symbolic/README.md b/translations/sr/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..a39fc177 --- /dev/null +++ b/translations/sr/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Представљање знања и експертски системи + +![Резиме садржаја о симболичкој вештачкој интелигенцији](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sr.png) + +> Скетч од [Томоми Имура](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.sr.png) + +> Слика од [Дмитрија Сошњикова](http://soshnikov.com) + +* Са леве стране налазе се веома једноставни типови представљања знања који се могу ефикасно користити у рачунарима. Најједноставнији је алгоритамски, када је знање представљено рачунарским програмом. Међутим, ово није најбољи начин за представљање знања, јер није флексибилан. Знање у нашој глави често није алгоритамско. +* Са десне стране налазе се представљања као што је природни текст. То је најмоћније, али се не може користити за аутоматско расуђивање. + +> ✅ Размислите на тренутак како представљате знање у својој глави и претварате га у белешке. Да ли постоји одређени формат који вам помаже у памћењу? + +## Класификација рачунарских метода представљања знања + +Можемо класификовати различите методе представљања знања у рачунарима у следеће категорије: + +* **Мрежна представљања** заснивају се на чињеници да у нашој глави имамо мрежу међусобно повезаних концепата. Можемо покушати да репродукујемо исте мреже као граф унутар рачунара - такозвану **семантичку мрежу**. + +1. **Објекат-Атрибут-Вредност триплети** или **парови атрибут-вредност**. Пошто се граф може представити унутар рачунара као листа чворова и ивица, можемо представити семантичку мрежу листом триплета који садрже објекте, атрибуте и вредности. На пример, можемо изградити следеће триплете о програмским језицима: + +Објекат | Атрибут | Вредност +--------|---------|--------- +Python | је | Не-типизовани језик +Python | изумео | Гвидо ван Росум +Python | блок-синтакса | увлачење +Не-типизовани језик | нема | дефиниције типова + +> ✅ Размислите како се триплети могу користити за представљање других типова знања. + +2. **Хијерархијска представљања** наглашавају чињеницу да често у својој глави стварамо хијерархију објеката. На пример, знамо да је канаринац птица и да све птице имају крила. Такође имамо неку представу о томе које је боје канаринац обично и колика је његова брзина лета. + + - **Представљање оквирима** заснива се на представљању сваког објекта или класе објеката као **оквира** који садржи **слотове**. Слотови имају могуће подразумеване вредности, ограничења вредности или сачуване процедуре које се могу позвати да би се добила вредност слота. Сви оквири формирају хијерархију сличну хијерархији објеката у објектно-оријентисаним програмским језицима. + - **Сценарији** су посебна врста оквира који представљају сложене ситуације које се могу одвијати у времену. + +**Python** + +Слот | Вредност | Подразумевана вредност | Интервал +-----|----------|-------------------------|--------- +Име | Python | | +Је-А | Не-типизовани језик | | +Карактер променљивих | | CamelCase | +Дужина програма | | | 5-5000 линија +Блок-синтакса | Увлачење | | + +3. **Процедурална представљања** заснивају се на представљању знања листом акција које се могу извршити када се догоди одређени услов. + - Правила продукције су if-then изјаве које нам омогућавају да доносимо закључке. На пример, доктор може имати правило које каже да **АКО** пацијент има високу температуру **ИЛИ** висок ниво Ц-реактивног протеина у крвној анализи **ОНДА** има упалу. Када наиђемо на један од услова, можемо закључити о упали, а затим то користити у даљем расуђивању. + - Алгоритми се могу сматрати још једним обликом процедурног представљања, иако се скоро никада не користе директно у системима заснованим на знању. + +4. **Логика** је првобитно предложена од стране Аристотела као начин за представљање универзалног људског знања. + - Предикатна логика као математичка теорија је превише богата да би била рачунарски обрадљива, па се обично користи неки њен подскуп, као што су Хорнове клаузе које се користе у Prolog-у. + - Дескриптивна логика је породица логичких система који се користе за представљање и расуђивање о хијерархијама објеката у дистрибуираним представљањима знања као што је *семантички веб*. + +## Експертски системи + +Један од раних успеха симболичке вештачке интелигенције били су такозвани **експертски системи** - рачунарски системи дизајнирани да делују као стручњаци у некој ограниченој области проблема. Они су се заснивали на **бази знања** извученој од једног или више људских стручњака и садржали су **инференцијски механизам** који је вршио расуђивање на основу те базе. + +![Људска архитектура](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sr.png) | ![Архитектура система заснованог на знању](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sr.png) +---------------------------------------------|------------------------------------------------ +Поједностављена структура људског нервног система | Архитектура система заснованог на знању + +Експертски системи су изграђени слично људском систему расуђивања, који садржи **краткорочно памћење** и **дугорочно памћење**. Слично томе, у системима заснованим на знању разликујемо следеће компоненте: + +* **Проблемска меморија**: садржи знање о проблему који се тренутно решава, нпр. температуру или крвни притисак пацијента, да ли има упалу или не, итд. Ово знање се такође назива **статичко знање**, јер садржи снимак онога што тренутно знамо о проблему - такозвано *стање проблема*. +* **База знања**: представља дугорочно знање о области проблема. Она се ручно извлачи од људских стручњака и не мења се од консултације до консултације. Пошто нам омогућава да се крећемо из једног стања проблема у друго, назива се и **динамичко знање**. +* **Инференцијски механизам**: оркестрира цео процес претраге у простору стања проблема, постављајући питања кориснику када је то потребно. Такође је одговоран за проналажење правих правила која ће се применити на свако стање. + +Као пример, размотримо следећи експертски систем за одређивање животиње на основу њених физичких карактеристика: + +![AND-OR дрво](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sr.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) за пример имплементације експертског система са напредним и уназад расуђивањем. +> **Напомена**: Овај пример је прилично једноставан и само даје идеју како изгледа експертски систем. Када почнете да креирате такав систем, приметићете *интелигентно* понашање тек када достигнете одређени број правила, отприлике 200+. У једном тренутку, правила постају превише сложена да би се сва могла држати у глави, и тада можете почети да се питате зашто систем доноси одређене одлуке. Међутим, важна карактеристика система заснованих на знању је да увек можете *објаснити* тачно како је донета било која одлука. +## Онтологије и Семантички веб + +Крајем 20. века покренута је иницијатива за коришћење представљања знања ради означавања интернет ресурса, како би било могуће пронаћи ресурсе који одговарају веома специфичним упитима. Овај покрет назван је **Семантички веб**, и ослањао се на неколико концепата: + +- Посебно представљање знања засновано на **[логикама описивања](https://en.wikipedia.org/wiki/Description_logic)** (DL). Слично је представљању знања у оквирима, јер гради хијерархију објеката са својствима, али има формалну логичку семантику и закључивање. Постоји цела породица DL-ова која балансира између изражајности и алгоритамске сложености закључивања. +- Дистрибуирано представљање знања, где су сви концепти представљени глобалним URI идентификатором, што омогућава креирање хијерархија знања које се протежу интернетом. +- Породица XML-заснованих језика за описивање знања: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). + +Основни концепт у Семантичком вебу је концепт **Онтологије**. Он се односи на експлицитну спецификацију домена проблема користећи неко формално представљање знања. Најједноставнија онтологија може бити само хијерархија објеката у домену проблема, али сложеније онтологије укључују правила која се могу користити за закључивање. + +У семантичком вебу, сва представљања се заснивају на триплетима. Сваки објекат и свака релација су јединствено идентификовани 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` представљају неке добро познате и универзално прихваћене URI-јеве за изражавање концепата *креатора* и *датума креирања*. + +У сложенијем случају, ако желимо да дефинишемо листу креатора, можемо користити неке структуре података дефинисане у RDF-у. + + + +> Дијаграми изнад од стране [Дмитрија Сошњикова](http://soshnikov.com) + +Напредак у изградњи Семантичког веба био је донекле успорен успехом претраживача и техника обраде природног језика, које омогућавају извлачење структурираних података из текста. Међутим, у неким областима и даље постоје значајни напори за одржавање онтологија и база знања. Неколико пројеката вредних помена: + +* [WikiData](https://wikidata.org/) је збирка машински читљивих база знања повезаних са Википедијом. Већина података је извађена из Википедијиних *InfoBox*-ова, делова структурисаног садржаја унутар страница Википедије. Можете [упитати](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 Concept Graph + +У већини случајева, онтологије се пажљиво креирају ручно. Међутим, могуће је и **извлачити** онтологије из неструктурираних података, на пример, из текстова на природном језику. + +Један такав покушај направљен је од стране 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 за груписање новинских чланака у неколико категорија. + +## Закључак + +Данас се AI често сматра синонимом за *Машинско учење* или *Неуронске мреже*. Међутим, људско биће такође показује експлицитно резоновање, што је нешто што тренутно не обрађују неуронске мреже. У стварним пројектима, експлицитно резоновање се и даље користи за обављање задатака који захтевају објашњења или могућност контролисане модификације понашања система. + +## 🚀 Изазов + +У бележници Онтологија породице повезаној са овом лекцијом, постоји прилика да експериментишете са другим породичним односима. Покушајте да откријете нове везе између људи у породичном стаблу. + +## [Квиз након предавања](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/sr/lessons/2-Symbolic/assignment.md b/translations/sr/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..ca1983a4 --- /dev/null +++ b/translations/sr/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/sr/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/sr/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..10f7e73d --- /dev/null +++ b/translations/sr/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Увод у неуронске мреже: Перцептрон + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Један од првих покушаја да се имплементира нешто слично модерној неуронској мрежи направио је Франк Розенблат из Корнел лабораторије за ваздухопловство 1957. године. То је била хардверска имплементација названа "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 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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/sr/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..075579cc --- /dev/null +++ b/translations/sr/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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/sr/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..7f4d02a3 --- /dev/null +++ b/translations/sr/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) + +> ✅ Правило ланчаног извођења користи се за израчунавање изводa функције губитка у односу на параметре. + +Приметите да је леви део свих ових израза исти, и стога можемо ефикасно израчунати изводе почевши од функције губитка и идући "унатраг" кроз граф рачунања. Због тога се метода обуке вишеслојног перцептрона назива **повратно ширење** или '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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људског преводиоца. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/sr/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..99efef6b --- /dev/null +++ b/translations/sr/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 скупа података користећи перцептрон са 1, 2 и 3 слоја. Користите оквир за неуронске мреже који смо развили током лекције. + +## Почетна свеска + +Започните лабораторију отварањем [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) + +## Питања + +Као резултат ове лабораторије, покушајте да одговорите на следећа питања: + +- Да ли функција активације између слојева утиче на перформансе мреже? +- Да ли нам је потребна мрежа са 2 или 3 слоја за овај задатак? +- Да ли сте наишли на било какве проблеме током тренирања мреже? Нарочито када се број слојева повећава. +- Како се тежине мреже понашају током тренирања? Можете приказати графикон максималне апсолутне вредности тежина у односу на епоху да бисте разумели однос. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/sr/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..6fde2423 --- /dev/null +++ b/translations/sr/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`, која врши назадно ширење (backpropagation). Идеално, оквир би требало да нам омогући израчунавање градијената *било ког израза* који можемо дефинисати. + +Још једна важна ствар је могућност извршавања прорачуна на 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.sr.jpg) | ![претренираност](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sr.jpg) +-------------------------|-------------------------- +**Линеарни модел, 2 параметра** | **Нелинеарни модел, 7 параметара** +Грешка тренинга = 5.3 | Грешка тренинга = 0 +Грешка валидације = 5.1 | Грешка валидације = 20 + +* Лево видимо добру апроксимацију правом линијом. Пошто је број параметара адекватан, модел правилно разуме расподелу тачака. +* Десно, модел је превише моћан. Пошто имамо само 5 тачака, а модел има 7 параметара, он може да се прилагоди тако да пролази кроз све тачке, чинећи грешку тренинга 0. Међутим, ово спречава модел да разуме прави образац у подацима, па је грешка валидације веома висока. + +Веома је важно пронаћи праву равнотежу између сложености модела (броја параметара) и броја узорака за тренинг. + +## Зашто долази до претренираности + + * Недовољно података за тренинг + * Превише моћан модел + * Превише шума у улазним подацима + +## Како открити претренираност + +Као што можете видети на графику изнад, претренираност се може открити веома ниском грешком тренинга и високом грешком валидације. Обично током тренинга видимо да и грешка тренинга и грешка валидације почињу да опадају, а затим у неком тренутку грешка валидације престаје да опада и почиње да расте. Ово је знак претренираности и индикатор да бисмо вероватно требали престати са тренингом у том тренутку (или барем направити снимак модела). + +![претренираност](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sr.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). Ако размотримо могуће изворе грешке у нашем моделу, можемо видети две врсте грешака: + +* **Грешке пристрасности** настају када наш алгоритам не може правилно да ухвати однос у подацима за тренинг. Ово може бити резултат чињенице да наш модел није довољно моћан (**недовољно тренирање**). +* **Грешке варијансе**, које настају када модел апроксимира шум у улазним подацима уместо значајног односа (**претренираност**). + +Током тренинга, грешка пристрасности опада (како наш модел учи да апроксимира податке), а грешка варијансе расте. Важно је зауставити тренинг - било ручно (када откријемо претренираност) или аутоматски (увођењем регуларизације) - како бисмо спречили претренираност. + +## Закључак + +У овој лекцији, научили сте о разликама између различитих API-ја за два најпопуларнија AI оквира, 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/sr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/sr/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..6fe938ab --- /dev/null +++ b/translations/sr/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)** - пример проблема са табеларним улазним подацима, који се могу решити класичним машинским учењем. Ваш циљ је да класификујете ирисе у 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/sr/lessons/3-NeuralNetworks/README.md b/translations/sr/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..9f9d3af3 --- /dev/null +++ b/translations/sr/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Увод у неуронске мреже + +![Резиме садржаја Увода у неуронске мреже у виду цртежа](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sr.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.sr.jpg) | ![Модел неурона](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sr.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) од стране Ворена Макалока и Волтера Питса 1943. године. Доналд Хеб је у својој књизи "[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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/sr/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..fe3c0c46 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/06-IntroCV/README.md @@ -0,0 +1,121 @@ + +# Увод у рачунарски вид + +[Рачунарски вид](https://wikipedia.org/wiki/Computer_vision) је дисциплина чији је циљ да омогући рачунарима да стекну висок ниво разумевања дигиталних слика. Ово је прилично широка дефиниција, јер *разумевање* може значити много различитих ствари, укључујући проналажење објекта на слици (**детекција објеката**), разумевање шта се дешава (**детекција догађаја**), описивање слике текстом или реконструкцију сцене у 3Д. Постоје и посебни задаци везани за људске слике: процена старости и емоција, детекција и идентификација лица, као и процена 3Д положаја, да наведемо само неке. + +## [Квиз пре предавања](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++. 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)` +* Промену **осветљености и контраста** слике можете извршити манипулацијом 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 тачке на слици. На пример, ако сликате правоугаони документ паметним телефоном из неког угла и желите да добијете правоугаону слику самог документа. +* Разумевање кретања унутар слике коришћењем **[оптичког тока](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.sr.jpeg) | ![Претходно обрађена слика Брајеве књиге](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sr.png) | ![Брајеви симболи](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sr.png) +----|-----|----- + +> Слика из [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Детекција кретања у видеу коришћењем разлике кадрова**. Ако је камера фиксирана, онда би кадрови из видео фида требало да буду прилично слични један другом. Пошто су кадрови представљени као низови, само одузимањем тих низова за два узастопна кадра добићемо разлику пиксела, која би требало да буде мала за статичне кадрове, а да постане већа када постоји значајно кретање на слици. + +![Слика видео кадрова и разлика кадрова](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sr.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.sr.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/sr/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/sr/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..448f72b7 --- /dev/null +++ b/translations/sr/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/sr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/sr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..a790bf60 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Познате CNN архитектуре + +### VGG-16 + +VGG-16 је мрежа која је постигла тачност од 92.7% у ImageNet top-5 класификацији 2014. године. Има следећу структуру слојева: + +![ImageNet слојеви](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sr.jpg) + +Као што можете видети, VGG прати традиционалну пирамидалну архитектуру, која је низ слојева за конволуцију и пуловање. + +![ImageNet пирамида](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sr.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). + +## Закључак + +У овој јединици сте научили главни концепт иза неуронских мрежа за рачунарски вид - конволуционе мреже. Реалне архитектуре које покрећу класификацију слика, детекцију објеката, па чак и мреже за генерисање слика, све су засноване на CNN-овима, само са више слојева и неким додатним триковима за тренирање. + +## 🚀 Изазов + +У пратећим бележницама постоје белешке на дну о томе како постићи већу тачност. Урадите неке експерименте да видите да ли можете постићи већу тачност. + +## [Квиз након предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Преглед и самостално учење + +Иако се CNN-ови најчешће користе за задатке рачунарског вида, они су генерално добри за извлачење образаца фиксне величине. На пример, ако радимо са звуковима, можда ћемо такође желети да користимо CNN-ове за тражење одређених образаца у аудио сигналу - у том случају филтери би били једнодимензионални (и овај CNN би се звао 1D-CNN). Такође, понекад се користи 3D-CNN за извлачење карактеристика у вишедимензионалном простору, као што су одређени догађаји који се дешавају на видео снимку - CNN може ухватити одређене обрасце промена карактеристика током времена. Урадите преглед и самостално учење о другим задацима који се могу обавити помоћу CNN-ова. + +## [Задатак](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/sr/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/sr/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..4df56807 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/07-ConvNets/README.md @@ -0,0 +1,67 @@ + +# Конволуционе неуронске мреже + +Већ смо видели да су неуронске мреже прилично добре у обради слика, па чак и једнослојни перцептрон може са задовољавајућом тачношћу препознати руком писане цифре из MNIST скупа података. Међутим, MNIST скуп података је веома специфичан, јер су све цифре центриране унутар слике, што чини задатак једноставнијим. + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) + +У стварном животу, желимо да будемо у могућности да препознамо објекте на слици без обзира на њихову тачну локацију унутар слике. Рачунарски вид се разликује од опште класификације, јер када покушавамо да пронађемо одређени објекат на слици, скенирамо слику тражећи специфичне **шаблоне** и њихове комбинације. На пример, када тражимо мачку, прво можемо тражити хоризонталне линије које могу формирати бркове, а затим одређена комбинација бркова може указати да је то заправо слика мачке. Релативна позиција и присуство одређених шаблона су важни, а не њихова тачна позиција на слици. + +Да бисмо извукли шаблоне, користићемо концепт **конволуционих филтера**. Као што знате, слика је представљена 2Д-матрицом или 3Д-тензором са дубином боје. Примена филтера значи да узимамо релативно малу матрицу **језгра филтера**, и за сваки пиксел у оригиналној слици израчунавамо пондерисани просек са суседним тачкама. Ово можемо замислити као мали прозор који клизи преко целе слике и израчунава просек свих пиксела у складу са тежинама у матрици језгра филтера. + +![Филтер за вертикалне ивице](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sr.png) | ![Филтер за хоризонталне ивице](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sr.png) +----|---- + +> Слика: Дмитриј Сошњиков + +На пример, ако применимо 3x3 филтере за вертикалне и хоризонталне ивице на цифре из MNIST скупа, можемо добити истакнуте делове (нпр. високе вредности) тамо где постоје вертикалне и хоризонталне ивице у нашој оригиналној слици. Тако ова два филтера могу бити коришћена за "проналажење" ивица. Слично томе, можемо дизајнирати различите филтере за проналажење других ниско-нивоа шаблона: + +> Слика [Leung-Malik филтер банке](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Међутим, док можемо ручно дизајнирати филтере за извлачење одређених шаблона, можемо такође дизајнирати мрежу на такав начин да она сама научи шаблоне. Ово је једна од главних идеја иза CNN-а. + +## Главне идеје иза CNN-а + +Начин на који CNN-ови функционишу заснован је на следећим важним идејама: + +* Конволуциони филтери могу извлачити шаблоне +* Мрежу можемо дизајнирати тако да се филтери аутоматски тренирају +* Исти приступ можемо користити за проналажење шаблона у високим нивоима карактеристика, а не само у оригиналној слици. Тако екстракција карактеристика у CNN-у функционише на хијерархији карактеристика, почевши од ниско-нивоа комбинација пиксела, па све до високих нивоа комбинација делова слике. + +![Хијерархијска екстракција карактеристика](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sr.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) + +## Пирамидална архитектура + +Већина CNN-ова који се користе за обраду слика прати такозвану пирамидалну архитектуру. Први конволуциони слој примењен на оригиналне слике обично има релативно мали број филтера (8-16), који одговарају различитим комбинацијама пиксела, као што су хоризонталне/вертикалне линије или потези. На следећем нивоу смањујемо просторну димензију мреже и повећавамо број филтера, што одговара већем броју могућих комбинација једноставних карактеристика. Са сваким слојем, како се приближавамо финалном класификатору, просторне димензије слике се смањују, а број филтера расте. + +Као пример, погледајмо архитектуру VGG-16, мреже која је постигла 92.7% тачности у топ-5 класификацији ImageNet-а 2014. године: + +![Слојеви ImageNet-а](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sr.jpg) + +![Пирамида ImageNet-а](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sr.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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/sr/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..f2c5aa50 --- /dev/null +++ b/translations/sr/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.sr.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/sr/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/sr/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..b2748bf0 --- /dev/null +++ b/translations/sr/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 2015. године. Имају више слојева, па самим тим захтевају више ресурса. +* **MobileNet** је породица модела смањене величине, погодна за мобилне уређаје. Користите их ако имате ограничене ресурсе и можете жртвовати мало тачности. + +Ево примера карактеристика издвојених из слике мачке помоћу VGG-16 мреже: + +![Карактеристике издвојене помоћу VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sr.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.sr.png) + +Међутим, ако то урадимо, добићемо нешто веома слично насумичном шуму. То је зато што *постоји много начина да мрежа помисли да је улазна слика мачка*, укључујући неке који визуелно немају смисла. Иако те слике садрже много образаца типичних за мачку, ништа их не ограничава да буду визуелно препознатљиве. + +Да бисмо побољшали резултат, можемо додати још један термин у функцију губитка, који се назива **губитак варијације**. То је метрика која показује колико су слични суседни пиксели слике. Минимизирање губитка варијације чини слику глаткијом и уклања шум - чиме открива визуелно привлачније обрасце. Ево примера таквих "идеалних" слика, које су класификоване као мачка и као зебра са високом вероватноћом: + +![Идеална мачка](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sr.png) | ![Идеална зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sr.png) +-----|----- + *Идеална мачка* | *Идеална зебра* + +Сличан приступ може се користити за извођење такозваних **адверзаријалних напада** на неуронску мрежу. Претпоставимо да желимо да преваримо неуронску мрежу и учинимо да пас изгледа као мачка. Ако узмемо слику пса, коју мрежа препознаје као пса, можемо је мало изменити помоћу оптимизације градијентног спуштања, док мрежа не почне да је класификује као мачку: + +![Слика пса](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sr.png) | ![Слика пса класификована као мачка](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sr.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 раса мачака и паса, и направићемо класификатор за трансфер учење. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/sr/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..c40dfeff --- /dev/null +++ b/translations/sr/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`), помаже да сигнали остану у опсегу током напредне и повратне пропагације + +## Нормализација партије (Batch 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 + +**Dropout** је занимљива техника која уклања одређени проценат случајних неурона током тренинга. Такође се имплементира као слој са једним параметром (проценат неурона који се уклања, обично 10%-50%), и током тренинга он нулира случајне елементе улазног вектора пре него што их проследи следећем слоју. + +Иако ово може звучати као чудна идеја, можете видети ефекат dropout-а на тренинг класификатора цифара MNIST у [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) нотебуку. Убрзава тренинг и омогућава постизање веће тачности у мање епоха тренинга. + +Овај ефекат се може објаснити на неколико начина: + + * Може се сматрати као случајни шок фактор за модел, који га изводи из локалног минимума + * Може се сматрати као *имплицитно просечно моделирање*, јер можемо рећи да током dropout-а тренирамо мало другачији модел + +> *Неки људи кажу да када пијана особа покушава да научи нешто, она ће то боље запамтити следећег јутра у поређењу са трезном особом, јер мозак са неким нефункционалним неуронима покушава боље да се прилагоди да схвати значење. Никада нисмо тестирали да ли је ово тачно или не.* + +## Спречавање пренапрегнутости (overfitting) + +Један од веома важних аспеката дубоког учења је способност да се спречи [пренапрегнутост](../../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. + +### Сечење градијента (Gradient clipping) + +Сечење градијента је проширење горе наведене идеје. Када је ||∇ℒ|| ≤ θ, узимамо оригинални градијент у оптимизацији тежина, а када је ||∇ℒ|| > θ - делимо градијент са његовом нормом. Овде је θ параметар, у већини случајева можемо узети θ=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/sr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/sr/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..d8c8db6f --- /dev/null +++ b/translations/sr/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) + +## Закључак + +Трансфер учење и унапред обучене мреже омогућавају нам да релативно лако решавамо проблеме класификације слика из стварног света. Међутим, унапред обучене мреже добро функционишу на сликама сличне врсте, а ако почнемо да класификујемо веома различите слике (нпр. медицинске слике), вероватно ћемо добити много лошије резултате. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/sr/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..28bb8bc3 --- /dev/null +++ b/translations/sr/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.sr.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) аутора Исака Дајкемана + +Варијациони аутоенкодери користе сложену функцију губитка која се састоји из два дела: + +* **Губитак реконструкције** је функција губитка која показује колико је реконструисана слика близу циљу (може бити Mean Squared Error, или MSE). То је иста функција губитка као код нормалних аутоенкодера. +* **KL губитак**, који осигурава да дистрибуција латентних променљивих остане близу нормалне дистрибуције. Заснован је на концепту [Кулбак-Лајблерове дивергенције](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - метрици за процену сличности две статистичке дистрибуције. + +Једна важна предност VAE-а је то што нам омогућава да релативно лако генеришемо нове слике, јер знамо из које дистрибуције узимамо узорке латентних вектора. На пример, ако тренирамо VAE са 2D латентним вектором на MNIST-у, можемо затим мењати компоненте латентног вектора да добијемо различите бројеве: + +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), наћи ћете 'задатак' - користите то као свој задатак. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људског преводиоца. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/10-GANs/README.md b/translations/sr/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..e4ce1b9e --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/10-GANs/README.md @@ -0,0 +1,111 @@ + +# Генеративне Адверзаријалне Мреже + +У претходном делу, научили смо о **генеративним моделима**: моделима који могу да генеришу нове слике сличне онима из скупа за обуку. Варијациони аутоенкодер (VAE) је био добар пример генеративног модела. + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) + +Међутим, ако покушамо да генеришемо нешто заиста значајно, попут слике у разумној резолуцији, користећи VAE, видећемо да обука не конвергира добро. За овај случај, требало би да научимо о другој архитектури која је посебно усмерена на генеративне моделе - **Генеративне Адверзаријалне Мреже**, или GAN-ове. + +Главна идеја GAN-а је да има две неуронске мреже које ће се обучавати једна против друге: + + + +> Слика од [Дмитрија Сошњикова](http://soshnikov.com) + +> ✅ Мали речник: +> * **Генератор** је мрежа која узима неки случајни вектор и производи слику као резултат. +> * **Дискриминатор** је мрежа која узима слику и треба да одреди да ли је то права слика (из скупа за обуку) или је генерисана од стране генератора. У суштини, то је класификатор слика. + +### Дискриминатор + +Архитектура дискриминатора се не разликује од обичне мреже за класификацију слика. У најједноставнијем случају, то може бити потпуно повезан класификатор, али највероватније ће бити [конволуциона мрежа](../07-ConvNets/README.md). + +> ✅ GAN заснован на конволуционим мрежама назива се [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) + +Дискриминатор CNN-а се састоји од следећих слојева: неколико конволуција+пулинга (са смањењем просторне величине) и једног или више потпуно повезаних слојева за добијање "векторa карактеристика", и завршног бинарног класификатора. + +> ✅ 'Пулинг' у овом контексту је техника која смањује величину слике. "Пулинг слојеви смањују димензије података комбиновањем излаза кластера неурона у једном слоју у један неурон у следећем слоју." - [извор](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) + +### Генератор + +Генератор је мало сложенији. Можете га сматрати обрнутим дискриминатором. Почевши од латентног вектора (уместо вектора карактеристика), он има потпуно повезан слој који га претвара у потребну величину/облик, након чега следе деконволуције+увећање. Ово је слично *декодеру* дела [аутоенкодера](../09-Autoencoders/README.md). + +> ✅ Пошто је конволуциони слој имплементиран као линеарни филтер који пролази кроз слику, деконволуција је у суштини слична конволуцији и може се имплементирати користећи исту логику слоја. + + + +> Слика од [Дмитрија Сошњикова](http://soshnikov.com) + +### Обука GAN-а + +GAN-ови се називају **адверзаријалним** јер постоји стално надметање између генератора и дискриминатора. Током овог надметања, и генератор и дискриминатор се побољшавају, тако да мрежа учи да производи све боље и боље слике. + +Обука се одвија у две фазе: + +* **Обука дискриминатора**. Овај задатак је прилично једноставан: генеришемо серију слика помоћу генератора, означавајући их са 0, што означава лажну слику, и узимамо серију слика из улазног скупа података (са ознаком 1, права слика). Добијамо неки *губитак дискриминатора* и изводимо backprop. +* **Обука генератора**. Ово је мало сложеније, јер директно не знамо очекивани излаз за генератор. Узимамо целу GAN мрежу која се састоји од генератора праћеног дискриминатором, напајамо је неким случајним векторима и очекујемо да резултат буде 1 (што одговара правим сликама). Затим замрзавамо параметре дискриминатора (не желимо да се он обучава у овом кораку) и изводимо backprop. + +Током овог процеса, губици генератора и дискриминатора не опадају значајно. У идеалној ситуацији, они би требало да осцилују, што одговара побољшању перформанси обе мреже. + +## ✍️ Вежбе: GAN-ови + +* [GAN бележница у TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [GAN бележница у PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Проблеми са обуком GAN-ова + +Познато је да су GAN-ови посебно тешки за обуку. Ево неколико проблема: + +* **Колапс модела**. Овим термином означавамо да генератор научи да производи једну успешну слику која завара дискриминатор, али не и разноврсност различитих слика. +* **Осетљивост на хиперпараметре**. Често можете видети да GAN уопште не конвергира, а затим изненада смањење стопе учења доводи до конвергенције. +* Одржавање **равнотеже** између генератора и дискриминатора. У многим случајевима губитак дискриминатора може брзо пасти на нулу, што резултира тиме да генератор не може да настави са обуком. Да бисмо ово превазишли, можемо покушати да поставимо различите стопе учења за генератор и дискриминатор или да прескочимо обуку дискриминатора ако је губитак већ превише низак. +* Обука за **високу резолуцију**. Одражавајући исти проблем као код аутоенкодера, овај проблем се јавља јер реконструкција превише слојева конволуционе мреже доводи до артефаката. Овај проблем се обично решава такозваним **прогресивним растом**, када се прво неколико слојева обучава на сликама ниске резолуције, а затим се слојеви "откључавају" или додају. Друго решење би било додавање додатних веза између слојева и обука на више резолуција истовремено - погледајте овај [Multi-Scale Gradient GANs рад](https://arxiv.org/abs/1903.06048) за детаље. + +## Трансфер стила + +GAN-ови су одличан начин за генерисање уметничких слика. Још једна занимљива техника је такозвани **трансфер стила**, који узима једну **слику садржаја** и поново је црта у другом стилу, примењујући филтере из **слике стила**. + +Како то функционише: + +* Почињемо са случајном шумском сликом (или са сликом садржаја, али ради разумевања је лакше почети са случајним шумом). +* Наш циљ би био да створимо такву слику која би била блиска и слици садржаја и слици стила. Ово би се одредило помоћу две функције губитка: + - **Губитак садржаја** се израчунава на основу карактеристика које CNN извлачи на неким слојевима из тренутне слике и слике садржаја. + - **Губитак стила** се израчунава између тренутне слике и слике стила на паметан начин користећи Грамове матрице (више детаља у [примеру бележнице](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Да би слика била глаткија и уклонио шум, уводимо и **губитак варијације**, који израчунава просечно растојање између суседних пиксела. +* Главна оптимизациона петља прилагођава тренутну слику користећи градијентни спуст (или неки други алгоритам оптимизације) како би минимизовала укупни губитак, који је пондерисани збир сва три губитка. + +## ✍️ Пример: [Трансфер стила](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Квиз после предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Закључак + +У овој лекцији, научили сте о GAN-овима и како их обучавати. Такође сте научили о посебним изазовима са којима се ова врста неуронских мрежа може суочити и неким стратегијама како их превазићи. + +## 🚀 Изазов + +Прођите кроз [бележницу за трансфер стила](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) користећи своје слике. + +## Преглед и самостално учење + +За референцу, прочитајте више о 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 архитектура коју треба размотрити +* [Креирање генеративне уметности користећи GAN-ове на 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/sr/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/sr/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..7ecc4fc1 --- /dev/null +++ b/translations/sr/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.sr.png) + +> Слика са [YOLO v2 веб сајта](https://pjreddie.com/darknet/yolov2/) + +## Наивни приступ детекцији објеката + +Претпоставимо да желимо да пронађемо мачку на слици. Веома наиван приступ детекцији објеката био би следећи: + +1. Разбијте слику на више плочица. +2. Покрените класификацију слике на свакој плочици. +3. Плочице које резултирају довољно високом активацијом могу се сматрати да садрже тражени објекат. + +![Наивна детекција објеката](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sr.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.sr.jpg) + +## Метрике за детекцију објеката + +### Преклапање преко уније (Intersection over Union) + +Док је за класификацију слика лако измерити колико добро алгоритам ради, за детекцију објеката морамо измерити и исправност класе, као и прецизност локације предвиђеног оквира. За ово друго користимо такозвано **преклапање преко уније** (IoU), које мери колико добро се два оквира (или две произвољне области) преклапају. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sr.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). Главна идеја је генерисање **регионa од интереса** (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.sr.png) + +> *Слика из ван де Санде и др. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sr.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.sr.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.sr.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.sr.png) + +> Слика из [званичног рада](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO је алгоритам за реално време са једним пролазом. Главна идеја је следећа: + + * Слика се дели на $S\times S$ региона. + * За сваки регион, **CNN** предвиђа $n$ могућих објеката, координате *оквира* и *поузданост*=*вероватноћа* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sr.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 (Single Shot Detector): [званични рад](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/) +* [Имплементација 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/sr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/sr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..33264e06 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -0,0 +1,75 @@ + +# Детекција глава уз помоћ Hollywood Heads Dataset-а + +Лабораторијски задатак из [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`, и за сваку главу добијате координате оквирне кутије (bounding box). 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 модела. +* Уз помоћ [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/sr/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/sr/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..64005466 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/12-Segmentation/README.md @@ -0,0 +1,78 @@ + +# Сегментација + +Раније смо учили о детекцији објеката, која нам омогућава да лоцирамо објекте на слици предвиђањем њихових *ограничујућих оквира* (bounding boxes). Међутим, за неке задатке нам нису потребни само ограничујући оквири, већ и прецизнија локализација објеката. Овај задатак се назива **сегментација**. + +## [Квиз пре предавања](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) + +У овој лабораторији, испробајте **сегментацију људског тела** користећи [Segmentation Full Body MADS Dataset](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/sr/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/sr/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..4c3dd3e0 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -0,0 +1,31 @@ + +# Сегментација људског тела + +Задатак из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Задатак + +У видео продукцији, на пример, у временским прогнозама, често је потребно изрезати слику човека са камере и поставити је преко неког другог снимка. Ово се обично ради помоћу технике **chroma key**, када се човек снима испред позадине једнобојне боје, која се затим уклања. У овом задатку ћемо обучити модел неуронске мреже да изреже силуету човека. + +## Скуп података + +Користићемо [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) да бисте видели како се ти задаци могу имплементирати. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/4-ComputerVision/README.md b/translations/sr/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..6e4016d6 --- /dev/null +++ b/translations/sr/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Рачунарски вид + +![Резиме садржаја о рачунарском виду у виду цртежа](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sr.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/sr/lessons/5-NLP/13-TextRep/README.md b/translations/sr/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..1b5575d9 --- /dev/null +++ b/translations/sr/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 кодирању. +* **Репрезентација на нивоу речи**, где креирамо **речник** свих речи у тексту и затим представљамо речи користећи one-hot кодирање. Овај приступ је донекле бољи, јер сваки карактер сам по себи нема много значења, па коришћењем семантички вишег нивоа - речи - поједностављујемо задатак за неуронску мрежу. Међутим, због велике величине речника, морамо се носити са високо-димензионалним ретким тензорима. + +Без обзира на репрезентацију, прво морамо конвертовати текст у секвенцу **токена**, где је један токен или карактер, реч, или понекад чак део речи. Затим, токен конвертујемо у број, обично користећи **речник**, и тај број се може унети у неуронску мрежу користећи one-hot кодирање. + +## N-грамови + +У природном језику, прецизно значење речи може се одредити само у контексту. На пример, значења *неуронска мрежа* и *риболовна мрежа* су потпуно различита. Један од начина да се ово узме у обзир је изградња модела на основу парова речи, третирајући парове речи као засебне токене у речнику. На овај начин, реченица *Волим да идем у риболов* би била представљена следећом секвенцом токена: *Волим да*, *да идем*, *идем у*, *у риболов*. Проблем са овим приступом је што величина речника значајно расте, а комбинације попут *идем у риболов* и *идем у куповину* су представљене различитим токенима, који не деле никакву семантичку сличност упркос истом глаголу. + +У неким случајевима, можемо размотрити коришћење три-грамова -- комбинација од три речи -- такође. Због тога се овај приступ често назива **n-грамови**. Такође, има смисла користити n-грамове са репрезентацијом на нивоу карактера, у ком случају n-грамови отприлике одговарају различитим слоговима. + +## Bag-of-Words и TF/IDF + +Када решавамо задатке попут класификације текста, потребно је да текст представимо једним вектором фиксне величине, који ћемо користити као улаз за финални густ класификатор. Један од најједноставнијих начина за то је комбиновање свих појединачних репрезентација речи, нпр. њиховим сабирањем. Ако саберемо one-hot кодирања сваке речи, добићемо вектор фреквенција, који показује колико се пута свака реч појављује у тексту. Оваква репрезентација текста се назива **bag of words** (BoW). + + + +> Слика аутора + +BoW у суштини представља које речи се појављују у тексту и у којим количинама, што заиста може бити добар показатељ о чему се текст ради. На пример, чланак о политици вероватно садржи речи као што су *председник* и *држава*, док би научна публикација имала нешто попут *колајдер*, *откривено*, итд. Стога, фреквенције речи могу у многим случајевима бити добар индикатор садржаја текста. + +Проблем са BoW је што се одређене уобичајене речи, као што су *и*, *је*, итд. појављују у већини текстова и имају највише фреквенције, прикривајући речи које су заиста важне. Можемо смањити значај тих речи узимајући у обзир фреквенцију појављивања речи у целокупној колекцији докумената. Ово је главна идеја иза TF/IDF приступа, који је детаљније обрађен у нотебуцима приложеним уз ову лекцију. + +Међутим, ниједан од ових приступа не може у потпуности узети у обзир **семантику** текста. За то су нам потребни моћнији модели неуронских мрежа, о којима ћемо говорити касније у овом одељку. + +## ✍️ Вежбе: Репрезентација текста + +Наставите своје учење у следећим нотебуцима: + +* [Репрезентација текста са PyTorch-ом](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Репрезентација текста са TensorFlow-ом](../../../../../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) + +## Преглед и самостално учење + +Вежбајте своје вештине са текстуалним уграђивањима и техникама bag-of-words на [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/sr/lessons/5-NLP/13-TextRep/assignment.md b/translations/sr/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..c3159c06 --- /dev/null +++ b/translations/sr/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/sr/lessons/5-NLP/14-Embeddings/README.md b/translations/sr/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..87222c8a --- /dev/null +++ b/translations/sr/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`, и експлицитно смо конвертовали из вектора позиционе репрезентације ниске димензионалности у ретке one-hot репрезентације. Међутим, ова one-hot репрезентација није меморијски ефикасна. Поред тога, свака реч се третира независно од других, тј. one-hot кодирани вектори не изражавају никакву семантичку сличност између речи. + +Идеја **уграђивања** је да се речи представе векторима ниже димензионалности, који на неки начин одражавају семантичко значење речи. Касније ћемо разговарати о томе како изградити смислена уграђивања речи, али за сада ћемо их посматрати као начин смањења димензионалности вектора речи. + +Дакле, слој за уграђивање би узимао реч као улаз и производио излазни вектор одређене величине `embedding_size`. У неком смислу, веома је сличан `Linear` слоју, али уместо да узима one-hot кодирани вектор, он може узети број речи као улаз, чиме избегавамо креирање великих one-hot кодираних вектора. + +Коришћењем слоја за уграђивање као првог слоја у нашој мрежи класификатора, можемо прећи са модела вреће речи на модел **вреће уграђивања**, где прво конвертујемо сваку реч у тексту у одговарајуће уграђивање, а затим израчунавамо неку агрегатну функцију над свим тим уграђивањима, као што су `sum`, `average` или `max`. + +![Слика која приказује класификатор са уграђивањем за пет речи у низу.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sr.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_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.sr.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 за генерисање поезије. Погледајте и [овај видео Дана Шифмана](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/sr/lessons/5-NLP/14-Embeddings/assignment.md b/translations/sr/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..84d10c54 --- /dev/null +++ b/translations/sr/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/sr/lessons/5-NLP/15-LanguageModeling/README.md b/translations/sr/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..f98912f1 --- /dev/null +++ b/translations/sr/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Моделовање језика + +Семантички уграђаји, као што су Word2Vec и GloVe, заправо представљају први корак ка **моделовању језика** – креирању модела који на неки начин *разумеју* (или *представљају*) природу језика. + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Главна идеја моделовања језика је њихово тренирање на необележеним скуповима података на ненадгледан начин. Ово је важно јер имамо огромне количине необележеног текста, док је количина обележеног текста увек ограничена временом и трудом који можемо уложити у обележавање. Најчешће можемо изградити моделе језика који могу **предвидети недостајуће речи** у тексту, јер је лако сакрити насумичну реч у тексту и користити је као узорак за тренирање. + +## Тренирање уграђаја + +У нашим претходним примерима користили смо претходно обучене семантичке уграђаје, али је занимљиво видети како се ти уграђаји могу тренирати. Постоји неколико могућих идеја које се могу користити: + +* **Н-Грам** моделирање језика, где предвиђамо токен гледајући претходних N токена (N-грам). +* **Континуирана врећа речи** (CBoW), где предвиђамо средишњи токен $W_0$ у низу токена $W_{-N}$, ..., $W_N$. +* **Скип-грам**, где предвиђамо скуп суседних токена {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} на основу средишњег токена $W_0$. + +![слика из рада о претварању речи у векторе](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sr.png) + +> Слика из [овог рада](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Пример бележница: Тренирање CBoW модела + +Наставите са учењем у следећим бележницама: + +* [Тренирање 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) + +## Преглед и самостално учење + +* [Званични 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/sr/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/sr/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..d09679d8 --- /dev/null +++ b/translations/sr/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). + +## Задатак + +У овом задатку, изазивамо вас да обучите 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)) од Луиса Керола. Или, можете користити Шекспирове драме, које можете добити користећи следећи код: + +```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') +``` + +## Истражите! + +Ако имате времена и желите да дубље уђете у тему, пробајте да истражите неколико ствари: + +* Како величина уграђивања (embedding size) утиче на резултате? +* Како различити стилови текста утичу на резултат? +* Узмите неколико веома различитих типова речи и њихових синонима, добијте њихове векторске репрезентације, примените PCA да смањите димензије на 2, и прикажите их у 2D простору. Да ли видите неке обрасце? + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/5-NLP/16-RNN/README.md b/translations/sr/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..7e2ffe29 --- /dev/null +++ b/translations/sr/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.sr.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). + +![Слика која приказује пример LSTM ћелије](../../../../../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/) аутора Кристофера Олаха. + +## Двосмерни и вишеслојни RNN-ови + +Разматрали смо рекурентне мреже које раде у једном правцу, од почетка секвенце до краја. То изгледа природно, јер подсећа на начин на који читамо и слушамо говор. Међутим, пошто у многим практичним случајевима имамо случајни приступ улазној секвенци, можда има смисла покренути рекурентни прорачун у оба правца. Такве мреже се називају **двосмерне** RNN-ове. Када радимо са двосмерном мрежом, биће нам потребна два скривена вектора стања, по један за сваки правац. + +Рекурентна мрежа, било једносмерна или двосмерна, хвата одређене обрасце унутар секвенце и може их складиштити у вектор стања или проследити у излаз. Као и код конволуционих мрежа, можемо изградити још један рекурентни слој на врху првог да бисмо ухватили обрасце вишег нивоа и изградили од образаца нижег нивоа које је извукао први слој. Ово нас доводи до концепта **вишеслојног RNN-а** који се састоји од два или више рекурентних мрежа, где се излаз претходног слоја прослеђује следећем слоју као улаз. + +![Слика која приказује вишеслојни LSTM RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sr.jpg) + +*Слика из [овог дивног поста](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) + +## Закључак + +У овој јединици видели смо да се 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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/5-NLP/16-RNN/assignment.md b/translations/sr/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..77c7468e --- /dev/null +++ b/translations/sr/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/sr/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/sr/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..08508555 --- /dev/null +++ b/translations/sr/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -0,0 +1,88 @@ + +# Генеративне мреже + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) + +Рекурентне неуронске мреже (RNN) и њихове варијанте са "гейтованим" ћелијама, као што су Long Short Term Memory ћелије (LSTM) и Gated Recurrent Units (GRU), пружају механизам за моделирање језика јер могу да науче редослед речи и дају предвиђања за следећу реч у низу. Ово нам омогућава да користимо RNN за **генеративне задатке**, као што су обично генерисање текста, машинско превођење, па чак и генерисање описа слика. + +> ✅ Размислите о свим ситуацијама у којима сте имали користи од генеративних задатака, као што је довршавање текста док куцате. Истражите своје омиљене апликације да видите да ли су користиле RNN. + +У RNN архитектури коју смо разматрали у претходној јединици, свака RNN јединица је производила следеће скривено стање као излаз. Међутим, можемо додати још један излаз свакој рекурентној јединици, што би нам омогућило да добијемо **секвенцу** (једнаке дужине као оригинална секвенца). Штавише, можемо користити RNN јединице које не прихватају улаз на сваком кораку, већ само узимају почетни вектор стања и затим производе секвенцу излаза. + +Ово омогућава различите неуронске архитектуре које су приказане на слици испод: + +![Слика која приказује уобичајене обрасце рекурентних неуронских мрежа.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sr.jpg) + +> Слика из блога [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) аутора [Андреја Карпатија](http://karpathy.github.io/) + +* **Један-на-један** је традиционална неуронска мрежа са једним улазом и једним излазом +* **Један-на-много** је генеративна архитектура која прихвата једну улазну вредност и генерише секвенцу излазних вредности. На пример, ако желимо да обучимо мрежу за **генерисање описа слика** која би производила текстуални опис слике, можемо узети слику као улаз, пропустити је кроз CNN да добијемо њено скривено стање, а затим користити рекурентни ланац да генерише опис реч по реч +* **Много-на-један** одговара RNN архитектурама које смо описали у претходној јединици, као што је класификација текста +* **Много-на-много**, или **секвенца-на-секвенцу**, одговара задацима као што је **машинско превођење**, где прва RNN сакупља све информације из улазне секвенце у скривено стање, а друга RNN развија ово стање у излазну секвенцу. + +У овој јединици, фокусираћемо се на једноставне генеративне моделе који нам помажу да генеришемо текст. Ради једноставности, користићемо токенизацију на нивоу карактера. + +Обучаваћемо ову RNN да генерише текст корак по корак. На сваком кораку, узимамо секвенцу карактера дужине `nchars` и тражимо од мреже да генерише следећи излазни карактер за сваки улазни карактер: + +![Слика која приказује пример RNN генерисања речи 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sr.png) + +Приликом генерисања текста (током инференције), почињемо са неким **подстицајем** (prompt), који се пропушта кроз 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*', следећи карактер може једнако добро бити размак или **е** (као у речи *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 документацији](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/sr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/sr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..8011c816 --- /dev/null +++ b/translations/sr/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Генерација текста на нивоу речи користећи RNN + +Задатак из [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Задатак + +У овом задатку, потребно је да узмете било коју књигу и користите је као скуп података за тренирање генератора текста на нивоу речи. + +## Скуп података + +Можете користити било коју књигу. Много бесплатних текстова можете пронаћи на [Project Gutenberg](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/sr/lessons/5-NLP/18-Transformers/README.md b/translations/sr/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..e440cdf5 --- /dev/null +++ b/translations/sr/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.sr.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.sr.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) + +Усвајање механизама пажње у комбинацији са овим ограничењем довело је до стварања садашњих трансформер модела, као што су BERT и Open-GPT3, који представљају стање уметности. + +## Трансформер модели + +Једна од главних идеја иза трансформера је избегавање секвенцијалне природе RNN-ова и стварање модела који је паралелизован током тренинга. Ово се постиже имплементацијом две идеје: + +* позиционо кодирање +* коришћење механизма самопажње за хватање образаца уместо RNN-ова (или CNN-ова) (због чега се рад који уводи трансформере зове *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Позиционо кодирање/уграђивање + +Идеја позиционог кодирања је следећа. +1. Код RNN-ова, релативна позиција токена је представљена бројем корака, и стога не мора бити експлицитно представљена. +2. Међутим, када пређемо на пажњу, морамо знати релативне позиције токена унутар секвенце. +3. Да бисмо добили позиционо кодирање, проширујемо нашу секвенцу токена са секвенцом позиција токена у секвенци (тј. секвенцом бројева 0,1, ...). +4. Затим мешамо позицију токена са вектором уграђивања токена. Да бисмо трансформисали позицију (цео број) у вектор, можемо користити различите приступе: + +* Тренабилно уграђивање, слично уграђивању токена. Ово је приступ који овде разматрамо. Примењујемо слојеве уграђивања на токене и њихове позиције, добијајући векторе уграђивања истих димензија, које затим сабирамо. +* Фиксна функција позиционог кодирања, како је предложено у оригиналном раду. + + + +> Слика аутора + +Резултат који добијамо са позиционим уграђивањем укључује и оригинални токен и његову позицију унутар секвенце. + +### Вишеглава самопажња + +Затим, потребно је да ухватимо неке обрасце унутар наше секвенце. Да бисмо то урадили, трансформери користе механизам **самопажње**, који је у суштини пажња примењена на исту секвенцу као улаз и излаз. Примена самопажње омогућава нам да узмемо у обзир **контекст** унутар реченице и видимо који су термини међусобно повезани. На пример, омогућава нам да видимо на шта се односе кореференце, као што је *оно*, и такође узмемо у обзир контекст: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sr.png) + +> Слика из [Google-овог блога](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.sr.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/sr/lessons/5-NLP/18-Transformers/assignment.md b/translations/sr/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..b4bbc147 --- /dev/null +++ b/translations/sr/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/sr/lessons/5-NLP/19-NER/README.md b/translations/sr/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..42854c85 --- /dev/null +++ b/translations/sr/lessons/5-NLP/19-NER/README.md @@ -0,0 +1,92 @@ + +# Препознавање именованих ентитета + +До сада смо се углавном концентрисали на један NLP задатак - класификацију. Међутим, постоје и други NLP задаци који се могу решити помоћу неуронских мрежа. Један од тих задатака је **[Препознавање именованих ентитета](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), који се бави препознавањем специфичних ентитета у тексту, као што су места, имена особа, временски интервали, хемијске формуле и тако даље. + +## [Квиз пре предавања](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) + +## Пример коришћења NER-а + +Претпоставимо да желите да развијете чет-бот за природни језик, сличан Amazon Alexa или Google Assistant. Начин на који интелигентни чет-ботови функционишу је да *разумеју* шта корисник жели, радећи класификацију текста на улазној реченици. Резултат те класификације је такозвани **намерни сигнал** (intent), који одређује шта чет-бот треба да уради. + +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 + +Пошто треба да изградимо један-на-један однос између токена и класа, можемо обучити десни **многи-на-многе** модел неуронске мреже из ове слике: + +![Слика која приказује уобичајене обрасце рекурентних неуронских мрежа.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sr.jpg) + +> *Слика из [овог блога](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) аутора [Андреја Карпатија](http://karpathy.github.io/). Модели класификације токена за NER одговарају десној архитектури мреже на овој слици.* + +## Обука NER модела + +Пошто је NER модел у суштини модел за класификацију токена, можемо користити RNN-ове са којима смо већ упознати за овај задатак. У овом случају, сваки блок рекурентне мреже ће враћати ID токена. Следећи пример нотебука показује како обучити LSTM за класификацију токена. + +## ✍️ Пример нотебука: NER + +Наставите учење у следећем нотебуку: + +* [NER са TensorFlow-ом](../../../../../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) да бисте добили све детаље. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/5-NLP/19-NER/lab/README.md b/translations/sr/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..df35519c --- /dev/null +++ b/translations/sr/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 +... +``` + +У овом скупу података, на прве две линије налазе се наслов и апстракт рада, а затим следе појединачни ентитети са почетним и завршним позицијама унутар блока наслов+апстракт. Поред типа ентитета, добијате и онтолошки ID тог ентитета унутар неке медицинске онтологије. + +Потребно је да напишете Python код који ће овај скуп података конвертовати у BIO кодирање. + +## Мрежа + +Први покушај за NER може се урадити коришћењем 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/sr/lessons/5-NLP/20-LangModels/README.md b/translations/sr/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..aeecf0e4 --- /dev/null +++ b/translations/sr/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), као и преко [OpenAI API](https://openai.com/api/). + +## Инжењеринг упита (Prompt Engineering) + +Пошто је 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 задатака у 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/sr/lessons/5-NLP/README.md b/translations/sr/lessons/5-NLP/README.md new file mode 100644 index 00000000..d0bd321b --- /dev/null +++ b/translations/sr/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Обрада природног језика + +![Резиме NLP задатака у скици](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sr.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 методе имплементиране су у Python библиотеци [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Доступна је одлична [NLTK књига](https://www.nltk.org/book/) која покрива како се различити NLP задаци могу решити коришћењем NLTK-а. + +У нашем курсу, углавном ћемо се фокусирати на коришћење неуронских мрежа за NLP, а NLTK ћемо користити где је потребно. + +Већ смо научили како да користимо неуронске мреже за рад са табеларним подацима и сликама. Главна разлика између тих типова података и текста је у томе што је текст секвенца променљиве дужине, док је величина улаза у случају слика унапред позната. Док конволуционе мреже могу да извуку обрасце из улазних података, обрасци у тексту су сложенији. На пример, негација може бити одвојена од субјекта произвољним бројем речи (нпр. *Не волим поморанџе* у односу на *Не волим оне велике шарене укусне поморанџе*), а то би и даље требало тумачити као један образац. Због тога, за обраду језика морамо увести нове типове неуронских мрежа, као што су *рекурентне мреже* и *трансформери*. + +## Инсталирање библиотека + +Ако користите локалну Python инсталацију за покретање овог курса, можда ћете морати да инсталирате све потребне библиотеке за NLP помоћу следећих команди: + +**За PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**За TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> NLP са 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) +``` + +Ако сте заинтересовани за учење о 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) + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/sr/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..a5b28a1a --- /dev/null +++ b/translations/sr/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) као почетну тачку. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/6-Other/22-DeepRL/README.md b/translations/sr/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..8bf5ca57 --- /dev/null +++ b/translations/sr/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* или *Гироскутери*. Они су у стању да се аутоматски балансирају прилагођавањем точкова у одговору на сигнал са акцелерометра или жироскопа. У овом одељку ћемо научити како да решимо сличан проблем - балансирање шипке. Ово је слично ситуацији када циркуски извођач треба да балансира шипку на својој руци - али ово балансирање шипке се дешава само у једној димензији. + +Поједностављена верзија балансирања позната је као проблем **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) + +Циљ RL алгоритма је да обучи модел - такозвану **политику** π - која ће враћати акцију као одговор на дато стање. Такође можемо сматрати да је политика вероватносна, нпр. за било које стање *s* и акцију *a* она ће враћати вероватноћу π(*a*|*s*) да треба да предузмемо *a* у стању *s*. + +## Алгоритам градијента политике + +Најочигледнији начин за моделирање политике је креирање неуронске мреже која ће узимати стања као улаз и враћати одговарајуће акције (или тачније вероватноће свих акција). У извесном смислу, то би било слично нормалном задатку класификације, са једном великом разликом - унапред не знамо које акције треба да предузмемо у сваком кораку. + +Идеја је овде да проценимо те вероватноће. Градимо вектор **кумулативних награда** који показује нашу укупну награду у сваком кораку експеримента. Такође примењујемо **дисконтовање награде** множењем ранијих награда са неким коефицијентом γ=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, глумац предлаже акцију коју треба предузети, а критичар покушава да буде критичан и процени резултат. Међутим, наш циљ је да обучимо те мреже у хармонији. + +Пошто знамо и стварне кумулативне награде и резултате које је критичар вратио током експеримента, релативно је лако изградити функцију губитка која ће минимизирати разлику између њих. То би нам дало **губитак критичара**. **Губитак глумца** можемо израчунати користећи исти приступ као у алгоритму градијента политике. + +Након покретања једног од ових алгоритама, можемо очекивати да се наш CartPole понаша овако: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Вежбе: Градијенти политике и 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 задаци + +Појачано учење је данас брзорастуће поље истраживања. Неки од занимљивих примера појачаног учења су: + +* Учење рачунара да игра **Atari игре**. Изазов у овом проблему је што немамо једноставно стање представљено као вектор, већ снимак екрана - и морамо користити CNN да бисмо претворили слику екрана у вектор карактеристика или извукли информације о награди. Atari игре су доступне у 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) + +## Преглед и самостално учење + +Сазнајте више о класичном појачаном учењу у нашем [курикулуму за почетнике у машинском учењу](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Погледајте [овај одличан видео](https://www.youtube.com/watch?v=qv6UVOQ0F44) који говори о томе како рачунар може научити да игра Super Mario. + +## Задатак: [Обучите Mountain Car](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/sr/lessons/6-Other/22-DeepRL/lab/README.md b/translations/sr/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..f3c5d1c9 --- /dev/null +++ b/translations/sr/lessons/6-Other/22-DeepRL/lab/README.md @@ -0,0 +1,31 @@ + +# Тренирање планинског аутомобила да побегне + +Задатак из [Курикулума за почетнике у вештачкој интелигенцији](https://github.com/microsoft/ai-for-beginners). + +## Задатак + +Ваш циљ је да обучите RL агента да контролише [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) у OpenAI окружењу. + +## Окружење + +Окружење Mountain Car се састоји од аутомобила заробљеног у долини. Ваш циљ је да искочите из долине и стигнете до заставице. Акције које можете извршити су убрзање улево, удесно или нерадити ништа. Можете посматрати позицију аутомобила дуж x-осе и брзину. + +## Почетна свеска + +Започните задатак отварањем [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) + +## Закључак + +Током овог задатка требало би да научите да је прилагођавање RL алгоритама новом окружењу често прилично једноставно, јер OpenAI Gym има исти интерфејс за сва окружења, а алгоритми у великој мери не зависе од природе окружења. Чак можете реструктурирати Python код на такав начин да било које окружење проследите RL алгоритму као параметар. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/6-Other/23-MultiagentSystems/README.md b/translations/sr/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..991790c8 --- /dev/null +++ b/translations/sr/lessons/6-Other/23-MultiagentSystems/README.md @@ -0,0 +1,156 @@ + +# Мултиагентски системи + +Један од могућих начина постизања интелигенције је такозвани **емергентни** (или **синергетски**) приступ, који се заснива на чињеници да комбиновано понашање многих релативно једноставних агената може резултирати укупно сложенијим (или интелигентнијим) понашањем система у целини. Теоријски, ово се заснива на принципима [Колективне интелигенције](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-их као одговор на раст Интернета и дистрибуираних система. Један од класичних уџбеника о вештачкој интелигенцији, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), фокусира се на класичну вештачку интелигенцију из перспективе мултиагентских система. + +Централни појам мултиагентског приступа је **агент** – ентитет који живи у неком **окружењу**, које може да перципира и на које може да делује. Ово је веома широка дефиниција, и могу постојати различите врсте и класификације агената: + +* Према способности расуђивања: + - **Реактивни** агенти обично имају једноставно понашање типа захтев-одговор + - **Делиберативни** агенти користе неку врсту логичког расуђивања и/или способности планирања +* Према месту извршавања кода агента: + - **Статички** агенти раде на одређеном чвору мреже + - **Мобилни** агенти могу премештати свој код између чворова мреже +* Према понашању: + - **Пасивни агенти** немају специфичне циљеве. Такви агенти могу реаговати на спољашње стимулусе, али неће сами иницирати акције. + - **Активни агенти** имају одређене циљеве које следе + - **Когнитивни агенти** укључују сложено планирање и расуђивање + +Мултиагентски системи се данас користе у бројним апликацијама: + +* У играма, многи ликови који нису играчи користе неку врсту вештачке интелигенције и могу се сматрати интелигентним агентима +* У видео продукцији, рендеровање сложених 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/) ако желите да сазнате више. + +Можете [преузети](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.sr.png) + +> Снимак екрана, Дмитриј Сошњиков + +На овом екрану можете видети: + +* **Интерфејс** који садржи: + - Главно поље, где сви агенти живе + - Различите контроле: дугмад, клизаче итд. + - Графиконе које можете користити за приказ параметара симулације +* **Code** картицу која садржи уређивач, где можете писати NetLogo програм + +У већини случајева, интерфејс ће имати дугме **Setup**, које иницијализује стање симулације, и дугме **Go**, које покреће извршење. Ово се обрађује одговарајућим обрађивачима у коду који изгледају овако: + +``` +to go [ +... +] +``` + +Свет NetLogo-а састоји се од следећих објеката: + +* **Агенти** (корњаче) који се могу кретати по пољу и нешто радити. Агенти се командују помоћу синтаксе `ask turtles [...]`, а код у заградама извршавају сви агенти у *режиму корњаче*. +* **Патчеви** су квадратне области поља на којима агенти живе. Можете се позивати на све агенте на истом патчу или мењати боје патчева и нека друга својства. Такође можете `ask patches` да нешто ураде. +* **Посматрач** је јединствени агент који контролише свет. Сви обрађивачи дугмади извршавају се у *режиму посматрача*. + +> ✅ Лепота мултиагентског окружења је у томе што се код који се извршава у режиму корњаче или патча извршава истовремено од стране свих агената паралелно. Тако, писањем мало кода и програмирањем понашања појединачног агента, можете креирати сложено понашање симулационог система у целини. + +### Флокирање + +Као пример мултиагентског понашања, размотримо **[Флокирање](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). Ови језици су дизајнирани на основу [теорије говорних чинова](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) садржи преглед платформи за мултиагентске системе, заједно са кратком историјом мултиагентских система и њиховим различитим сценаријима употребе. + +## Закључак + +Мултиагентски системи могу попримити веома различите облике и користити се у многим различитим апликацијама. +Сви они теже да се фокусирају на једноставније понашање појединачног агента и постижу сложеније понашање целокупног система захваљујући **синергетском ефекту**. + +## 🚀 Изазов + +Примените ову лекцију у стварном свету и покушајте да концептуализујете мултиагентски систем који може решити неки проблем. Шта би, на пример, мултиагентски систем требало да уради како би оптимизовао руту школског аутобуса? Како би могао функционис + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/sr/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..496dc669 --- /dev/null +++ b/translations/sr/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Задатак за NetLogo + +Узмите један од модела из библиотеке NetLogo и користите га да симулирате стварну животну ситуацију што је могуће прецизније. Добар пример би био да прилагодите модел Virus из фасцикле Alternative Visualizations како бисте показали како се може користити за моделовање ширења COVID-19. Можете ли направити модел који опонаша стварно ширење вируса? + +Прикажите свој рад тако што ћете сачувати копију и направити видео демонстрацију у којој објашњавате како је модел повезан са стварном ситуацијом. + +**Одрицање од одговорности**: +Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода. \ No newline at end of file diff --git a/translations/sr/lessons/7-Ethics/README.md b/translations/sr/lessons/7-Ethics/README.md new file mode 100644 index 00000000..867d2988 --- /dev/null +++ b/translations/sr/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Етичка и одговорна вештачка интелигенција + +Скоро сте завршили овај курс, и надам се да сада јасно видите да је вештачка интелигенција заснована на низу формалних математичких метода који нам омогућавају да пронађемо односе у подацима и обучимо моделе да реплицирају неке аспекте људског понашања. У овом тренутку историје, сматрамо да је вештачка интелигенција веома моћан алат за извлачење образаца из података и примену тих образаца за решавање нових проблема. + +## [Квиз пре предавања](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Међутим, у научној фантастици често видимо приче у којима вештачка интелигенција представља опасност за човечанство. Обично су те приче усредсређене на неку врсту побуне вештачке интелигенције, када она одлучи да се супротстави људима. Ово имплицира да вештачка интелигенција има неку врсту емоција или може доносити одлуке које њени програмери нису предвидели. + +Врста вештачке интелигенције коју смо изучавали у овом курсу није ништа више од велике матричне аритметике. То је веома моћан алат који нам помаже да решимо наше проблеме, и као сваки други моћан алат - може се користити у добре и лоше сврхе. Важно је напоменути да може бити *злоупотребљена*. + +## Принципи одговорне вештачке интелигенције + +Да бисмо избегли ову случајну или намерну злоупотребу вештачке интелигенције, Microsoft је дефинисао важне [Принципе одговорне вештачке интелигенције](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Следећи концепти су основа ових принципа: + +* **Правичност** је повезана са важним проблемом *пристрасности модела*, која може настати коришћењем пристрасних података за обуку. На пример, када покушавамо да предвидимо вероватноћу да нека особа добије посао програмера, модел ће вероватно дати већу предност мушкарцима - само зато што је скуп података за обуку вероватно био пристрасан према мушкој популацији. Морамо пажљиво балансирати податке за обуку и истражити модел како бисмо избегли пристрасности и осигурали да модел узима у обзир релевантније карактеристике. +* **Поузданост и безбедност**. По својој природи, модели вештачке интелигенције могу правити грешке. Неуронска мрежа враћа вероватноће, и то морамо узети у обзир приликом доношења одлука. Сваки модел има одређену прецизност и осетљивост, и то морамо разумети како бисмо спречили штету коју погрешан савет може изазвати. +* **Приватност и безбедност** имају неке специфичне импликације у контексту вештачке интелигенције. На пример, када користимо неке податке за обуку модела, ти подаци на неки начин постају "интегрисани" у модел. С једне стране, то повећава безбедност и приватност, али с друге стране - морамо се сетити који су подаци коришћени за обуку модела. +* **Инклузивност** значи да не градимо вештачку интелигенцију да замени људе, већ да их унапреди и учини наш рад креативнијим. Ово је такође повезано са правичношћу, јер када се бавимо недовољно заступљеним заједницама, већина скупова података које прикупљамо вероватно ће бити пристрасна, и морамо осигурати да те заједнице буду укључене и правилно обрађене од стране вештачке интелигенције. +* **Транспарентност**. Ово укључује осигурање да увек јасно ставимо до знања да се користи вештачка интелигенција. Такође, где год је могуће, желимо да користимо системе вештачке интелигенције који су *интерпретабилни*. +* **Одговорност**. Када модели вештачке интелигенције доносе неке одлуке, није увек јасно ко је одговоран за те одлуке. Морамо осигурати да разумемо где лежи одговорност за одлуке вештачке интелигенције. У већини случајева желимо да укључимо људе у процес доношења важних одлука, како би стварни људи били одговорни. + +## Алати за одговорну вештачку интелигенцију + +Microsoft је развио [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/sr/lessons/README.md b/translations/sr/lessons/README.md new file mode 100644 index 00000000..131ae778 --- /dev/null +++ b/translations/sr/lessons/README.md @@ -0,0 +1,17 @@ + +# Преглед + +![Преглед у виду цртежа](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sr.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/sr/lessons/X-Extras/X1-MultiModal/README.md b/translations/sr/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..69283cd1 --- /dev/null +++ b/translations/sr/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Мултимодалне мреже + +Након успеха трансформер модела у решавању задатака обраде природног језика (NLP), исте или сличне архитектуре примењене су и на задатке рачунарског вида. Расте интересовање за изградњу модела који би *комбиновали* могућности визије и природног језика. Један од таквих покушаја је направио OpenAI, а назива се CLIP и DALL.E. + +## Контрастивно претходно обучавање слика (CLIP) + +Главна идеја CLIP-а је могућност поређења текстуалних упита са сликом и одређивање колико добро слика одговара упиту. + +![CLIP Архитектура](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sr.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.sr.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/) (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.sr.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.sr.png) | ![Слика коју је произвео Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sr.png) | ![Слика коју је произвео Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sr.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: +![Слика коју је произвео 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.sr.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.sr.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.sr.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/sr/lessons/sketchnotes/LICENSE.md b/translations/sr/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..d80057c5 --- /dev/null +++ b/translations/sr/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,122 @@ + +Атрибуција-Делити под истим условима 4.0 Међународна + +======================================================================= + +Creative Commons Corporation ("Creative Commons") није адвокатска фирма и не пружа правне услуге или правне савете. Дистрибуција јавних лиценци Creative Commons-а не ствара однос адвокат-клијент или било који други однос. Creative Commons чини своје лиценце и повезане информације доступним "као што јесу". Creative Commons не даје никакве гаранције у вези са својим лиценцама, било којим материјалом лиценцираним под њиховим условима и одредбама, или било којим повезаним информацијама. Creative Commons одриче сваку одговорност за штету која произилази из њихове употребе у највећој могућој мери. + +Коришћење јавних лиценци Creative Commons-а + +Јавне лиценце Creative Commons-а пружају стандардни сет услова и одредби које креатори и други носиоци права могу користити за дељење оригиналних ауторских дела и другог материјала који подлеже ауторским правима и одређеним другим правима наведеним у јавној лиценци испод. Следећа разматрања су само у информативне сврхе, нису исцрпна и не чине део наших лиценци. + +Разматрања за лиценцоре: Наше јавне лиценце су намењене за употребу од стране оних који су овлашћени да јавности дају дозволу за коришћење материјала на начине који су иначе ограничени ауторским правима и одређеним другим правима. Наше лиценце су неповратне. Лиценцори би требало да прочитају и разумеју услове и одредбе лиценце коју одаберу пре него што је примене. Лиценцори би такође требало да обезбеде сва неопходна права пре примене наших лиценци како би јавност могла да поново користи материјал како је очекивано. Лиценцори би требало јасно да обележе било који материјал који није предмет лиценце. Ово укључује други материјал лиценциран под CC лиценцом или материјал коришћен под изузетком или ограничењем ауторских права. Више разматрања за лиценцоре: +wiki.creativecommons.org/Considerations_for_licensors + +Разматрања за јавност: Коришћењем једне од наших јавних лиценци, лиценцор даје јавности дозволу да користи лиценцирани материјал под одређеним условима и одредбама. Ако дозвола лиценцора није неопходна из било ког разлога — на пример, због било ког применљивог изузетка или ограничења ауторских права — онда та употреба није регулисана лиценцом. Наше лиценце дају само дозволе под ауторским правима и одређеним другим правима која лиценцор има овлашћење да да. Употреба лиценцираног материјала може и даље бити ограничена из других разлога, укључујући зато што други имају ауторска права или друга права у материјалу. Лиценцор може поставити посебне захтеве, као што је тражење да све измене буду обележене или описане. Иако то није обавезно према нашим лиценцама, препоручује се да поштујете те захтеве где је то разумно. Више разматрања за јавност: +wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Атрибуција-Делити под истим условима 4.0 Међународна јавна лиценца + +Коришћењем Лиценцираних права (дефинисаних испод), прихватате и слажете се да будете обавезани условима и одредбама ове Creative Commons Атрибуција-Делити под истим условима 4.0 Међународне јавне лиценце ("Јавна лиценца"). У мери у којој се ова Јавна лиценца може тумачити као уговор, добијате Лиценцирана права у замену за прихватање ових услова и одредби, а Лиценцор вам даје та права у замену за користи које Лиценцор добија од стављања Лиценцираног материјала на располагање под овим условима и одредбама. + +Одељак 1 -- Дефиниције. + +a. Прерађени материјал значи материјал који подлеже ауторским правима и сличним правима, а који је изведен из или заснован на Лиценцираном материјалу и у којем је Лиценцирани материјал преведен, измењен, уређен, трансформисан или на други начин модификован на начин који захтева дозволу под ауторским правима и сличним правима која држи Лиценцор. За потребе ове Јавне лиценце, где је Лиценцирани материјал музичко дело, извођење или звучни запис, Прерађени материјал се увек производи када је Лиценцирани материјал синхронизован у временском односу са покретном сликом. + +b. Лиценца адаптера значи лиценцу коју примењујете на своја ауторска права и слична права у вашим доприносима Прерађеном материјалу у складу са условима и одредбама ове Јавне лиценце. + +c. BY-SA компатибилна лиценца значи лиценцу наведену на creativecommons.org/compatiblelicenses, коју је Creative Commons одобрио као суштински еквивалент овој Јавној лиценци. + +d. Ауторска права и слична права значе ауторска права и/или слична права блиско повезана са ауторским правима, укључујући, без ограничења, права на извођење, емитовање, звучни запис и sui generis права на базу података, без обзира на то како су права означена или категоризована. За потребе ове Јавне лиценце, права наведена у Одељку 2(b)(1)-(2) нису ауторска права и слична права. + +e. Ефективне технолошке мере значе оне мере које, у одсуству одговарајућег овлашћења, не могу бити заобиђене према законима који испуњавају обавезе из Члана 11 WIPO Уговора о ауторским правима усвојеног 20. децембра 1996. године и/или сличних међународних споразума. + +f. Изузеци и ограничења значе фер употребу, фер поступање и/или било који други изузетак или ограничење ауторских права и сличних права који се примењују на вашу употребу Лиценцираног материјала. + +g. Елементи лиценце значе атрибуте лиценце наведене у називу Creative Commons јавне лиценце. Елементи лиценце ове Јавне лиценце су Атрибуција и Делити под истим условима. + +h. Лиценцирани материјал значи уметничко или књижевно дело, базу података или други материјал на који је Лиценцор применио ову Јавну лиценцу. + +i. Лиценцирана права значе права која су вам дата под условима и одредбама ове Јавне лиценце, а која су ограничена на сва ауторска права и слична права која се примењују на вашу употребу Лиценцираног материјала и која Лиценцор има овлашћење да лиценцира. + +j. Лиценцор значи појединца или ентитет који даје права под овом Јавном лиценцом. + +k. Делити значи пружити материјал јавности било којим средствима или процесом који захтева дозволу под Лиценцираним правима, као што су репродукција, јавно приказивање, јавно извођење, дистрибуција, ширење, комуникација или увоз, и учинити материјал доступним јавности, укључујући на начине који омогућавају члановима јавности да приступе материјалу са места и у време које сами изаберу. + +l. Sui Generis права на базу података значе права другачија од ауторских права која произилазе из Директиве 96/9/EC Европског парламента и Савета од 11. марта 1996. године о правној заштити база података, како је измењена и/или замењена, као и друга суштински еквивалентна права било где у свету. + +m. Ви значи појединца или ентитет који користи Лиценцирана права под овом Јавном лиценцом. Ваш има одговарајуће значење. +Права, затим база података у којој имате Sui Generis Database права (али не њене појединачне садржаје) представља адаптирани материјал, + +укључујући за потребе одељка 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/sr/lessons/sketchnotes/README.md b/translations/sr/lessons/sketchnotes/README.md new file mode 100644 index 00000000..ac60f7f3 --- /dev/null +++ b/translations/sr/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/sw/README.md b/translations/sw/README.md index 2012506f..8614a077 100644 --- a/translations/sw/README.md +++ b/translations/sw/README.md @@ -1,140 +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) + +[![Leseni ya GitHub](https://img.shields.io/github/license/microsoft/AI-For-Beginners.svg)](https://github.com/microsoft/AI-For-Beginners/blob/main/LICENSE) +[![Wachangiaji wa GitHub](https://img.shields.io/github/contributors/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/graphs/contributors/) +[![Masuala ya GitHub](https://img.shields.io/github/issues/microsoft/AI-For-Beginners.svg)](https://GitHub.com/microsoft/AI-For-Beginners/issues/) +[![Maombi ya kuvuta GitHub](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) +[![Watazamaji wa 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 za GitHub](https://img.shields.io/github/forks/microsoft/AI-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/AI-For-Beginners/network/) +[![Nyota za 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) -[![](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) -# Artificiell Intelligens för Nybörjare - En Lärplan +# Akili Bandia kwa Kompyuta - Mtaala -|![ Sketchnote av [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| -|:---:| -| AI För Nybörjare - _Sketchnote av [@girlie_mac](https://twitter.com/girlie_mac)_ | +|![ Sketchnote na [(@girlie_mac)](https://twitter.com/girlie_mac) ](./lessons/sketchnotes/ai-overview.png)| +|:---:| +| AI Kwa Kompyuta - _Sketchnote na [@girlie_mac](https://twitter.com/girlie_mac)_ | -Utforska världen av **Artificiell Intelligens** (AI) med vår 12-veckors, 24-lektioners lärplan! Den innehåller praktiska lektioner, quiz och labbar. Lärplanen är nybörjarvänlig och täcker verktyg som TensorFlow och PyTorch, samt etik inom AI. +Gundua ulimwengu wa **Akili Bandia** (AI) kupitia mtaala wetu wa wiki 12, masomo 24! Unajumuisha masomo ya vitendo, majaribio, na maabara. Mtaala huu ni rafiki kwa wanaoanza na unashughulikia zana kama TensorFlow na PyTorch, pamoja na maadili katika AI. -## Vad du kommer att lära dig +## Kile Utakachojifunza -**[Mindmap av Kursen](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** +**[Ramani ya Akili ya Kozi](http://soshnikov.com/courses/ai-for-beginners/mindmap.html)** -I denna lärplan kommer du att lära dig: +Katika mtaala huu, utajifunza: -* Olika tillvägagångssätt för Artificiell Intelligens, inklusive den "gamla goda" symboliska metoden med **Kunskapsrepresentation** och resonemang ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). -* **Neurala Nätverk** och **Djupinlärning**, som är centrala för modern AI. Vi kommer att illustrera koncepten bakom dessa viktiga ämnen med kod i två av de mest populära ramverken - [TensorFlow](http://Tensorflow.org) och [PyTorch](http://pytorch.org). -* **Neurala Arkitekturer** för att arbeta med bilder och text. Vi kommer att täcka aktuella modeller men kan vara något bristfälliga när det gäller det senaste inom området. -* Mindre populära AI-metoder, såsom **Genetiska Algoritmer** och **Multi-Agent System**. +* Njia tofauti za Akili Bandia, ikijumuisha njia ya zamani ya alama na **Uwakilishi wa Maarifa** na hoja ([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)). +* **Mitandao ya Neural** na **Kujifunza kwa Kina**, ambavyo ni msingi wa AI ya kisasa. Tutaelezea dhana za mada hizi muhimu kwa kutumia msimbo katika mifumo miwili maarufu - [TensorFlow](http://Tensorflow.org) na [PyTorch](http://pytorch.org). +* **Miundo ya Neural** kwa kazi na picha na maandishi. Tutashughulikia mifano ya hivi karibuni lakini huenda tukakosa hali ya kisasa zaidi. +* Njia za AI zisizo maarufu, kama **Algorithimu za Kijenetiki** na **Mifumo ya Wakala Wengi**. -Vad vi inte kommer att täcka i denna lärplan: +Kile ambacho hatutashughulikia katika mtaala huu: -> [Hitta alla ytterligare resurser för denna kurs i vår Microsoft Learn-samling](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) +> [Pata rasilimali zote za ziada za kozi hii katika mkusanyiko wetu wa Microsoft Learn](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) -* Affärscase för att använda **AI i Affärer**. Överväg att ta [Introduktion till AI för affärsanvändare](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) lärstigen på Microsoft Learn, eller [AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), utvecklad i samarbete med [INSEAD](https://www.insead.edu/). -* **Klassisk Maskininlärning**, som är väl beskriven i vår [Maskininlärning för Nybörjare Lärplan](http://github.com/Microsoft/ML-for-Beginners). -* Praktiska AI-applikationer byggda med **[Kognitiva Tjänster](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. För detta rekommenderar vi att du börjar med moduler på Microsoft Learn för [vision](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [naturalspråksbehandling](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generativ AI med Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** och andra. -* Specifika ML **Cloud Frameworks**, som [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) eller [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Överväg att använda inlärningsvägarna [Bygg och driftsätt maskininlärningslösningar med Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) och [Bygg och driftsätt maskininlärningslösningar med Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). -* **Konverserande AI** och **Chattbottar**. Det finns en separat inlärningsväg för [Skapa konverserande AI-lösningar](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), och du kan också hänvisa till [detta blogginlägg](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) för mer information. -* **Djup matematik** bakom djupinlärning. För detta rekommenderar vi [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) av Ian Goodfellow, Yoshua Bengio och Aaron Courville, som också finns tillgänglig online på [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). +* Matumizi ya biashara ya **AI katika Biashara**. Fikiria kuchukua [Utangulizi wa AI kwa watumiaji wa biashara](https://docs.microsoft.com/learn/paths/introduction-ai-for-business-users/?WT.mc_id=academic-77998-bethanycheum) kwenye Microsoft Learn, au [Shule ya Biashara ya AI](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-bethanycheum), iliyotengenezwa kwa kushirikiana na [INSEAD](https://www.insead.edu/). +* **Kujifunza kwa Mashine kwa Kawaida**, ambako kumeelezewa vizuri katika [Mtaala wa Kujifunza kwa Mashine kwa Kompyuta](http://github.com/Microsoft/ML-for-Beginners). +* Matumizi ya AI ya vitendo yaliyotengenezwa kwa kutumia **[Huduma za Utambuzi](https://azure.microsoft.com/services/cognitive-services/?WT.mc_id=academic-77998-bethanycheum)**. Kwa hili, tunapendekeza uanze na moduli za Microsoft Learn kwa [maono](https://docs.microsoft.com/learn/paths/create-computer-vision-solutions-azure-cognitive-services/?WT.mc_id=academic-77998-bethanycheum), [usindikaji wa lugha asilia](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-bethanycheum), **[Generative AI na Azure OpenAI Service](https://learn.microsoft.com/en-us/training/paths/develop-ai-solutions-azure-openai/?WT.mc_id=academic-77998-bethanycheum)** na nyinginezo. +* Mfumo maalum wa **Cloud ML**, kama [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), au [Azure Databricks](https://docs.microsoft.com/learn/paths/data-engineer-azure-databricks?WT.mc_id=academic-77998-bethanycheum). Fikiria kutumia [Jenga na endesha suluhisho za kujifunza kwa mashine na Azure Machine Learning](https://docs.microsoft.com/learn/paths/build-ai-solutions-with-azure-ml-service/?WT.mc_id=academic-77998-bethanycheum) na [Jenga na Endesha suluhisho za Kujifunza kwa Mashine na Azure Databricks](https://docs.microsoft.com/learn/paths/build-operate-machine-learning-solutions-azure-databricks/?WT.mc_id=academic-77998-bethanycheum). +* **AI ya Mazungumzo** na **Chat Bots**. Kuna njia tofauti ya kujifunza [Unda suluhisho za AI za mazungumzo](https://docs.microsoft.com/learn/paths/create-conversational-ai-solutions/?WT.mc_id=academic-77998-bethanycheum), na unaweza pia kurejelea [chapisho hili la blogu](https://soshnikov.com/azure/hello-bot-conversational-ai-on-microsoft-platform/) kwa maelezo zaidi. +* **Hisabati ya Kina** nyuma ya kujifunza kwa kina. Kwa hili, tunapendekeza [Deep Learning](https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618) na Ian Goodfellow, Yoshua Bengio na Aaron Courville, ambayo pia inapatikana mtandaoni kwenye [https://www.deeplearningbook.org/](https://www.deeplearningbook.org/). -För en mjuk introduktion till ämnena _AI i molnet_ kan du överväga att ta inlärningsvägen [Kom igång med artificiell intelligens på Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum). +Kwa utangulizi wa polepole wa mada za _AI katika Wingu_, unaweza kufikiria kuchukua [Anza na akili bandia kwenye Azure](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc_id=academic-77998-bethanycheum) Njia ya Kujifunza. -# Innehåll +# Yaliyomo -| | Länkar till lektioner | PyTorch/Keras/TensorFlow | Lab | -| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | -| 0 | [Kursinställning](./lessons/0-course-setup/setup.md) | [Ställ in din utvecklingsmiljö](./lessons/0-course-setup/how-to-run.md) | | -| I | [**Introduktion till AI**](./lessons/1-Intro/README.md) | | | -| 01 | [Introduktion och historia om AI](./lessons/1-Intro/README.md) | - | - | -| II | **Symbolisk AI** | -| 02 | [Kunskapsrepresentation och expertssystem](./lessons/2-Symbolic/README.md) | [Expertssystem](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontologi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Begreppsgraf](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | -| III | [**Introduktion till neurala nätverk**](./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 | [Flerlagrad perceptron och skapa vårt eget ramverk](./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 | [Introduktion till ramverk (PyTorch/TensorFlow) och överanpassning](./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 | [**Datorseende**](./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)| [Utforska Datorseende på Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | -| 06 | [Introduktion till Datorseende. 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) | [Laboratorium](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | -| 07 | [Konvolutionella Neurala Nätverk](./lessons/4-ComputerVision/07-ConvNets/README.md) & [CNN-arkitekturer](./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) | [Laboratorium](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | -| 08 | [Förtränade Nätverk och Överföringsinlärning](./lessons/4-ComputerVision/08-TransferLearning/README.md) och [Träningsknep](./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) | [Laboratorium](./lessons/4-ComputerVision/08-TransferLearning/lab/README.md) | -| 09 | [Autoenkodare och VAE:er](./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 | [Generativa Motstridiga Nätverk & Konstnärlig Stilöverföring](./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 | [Objektdetektering](./lessons/4-ComputerVision/11-ObjectDetection/README.md) | [TensorFlow](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) | [Laboratorium](./lessons/4-ComputerVision/11-ObjectDetection/lab/README.md) | -| 12 | [Semantisk Segmentering. 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 | [**Bearbetning av naturligt språk**](./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) | [Utforska bearbetning av naturligt språk på Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| -| 13 | [Textrepresentation. 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 | [Semantiska ordembeddings. Word2Vec och 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 | [Språkmodellering. Träna dina egna 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) | [Laboratorium](./lessons/5-NLP/15-LanguageModeling/lab/README.md) | -| 16 | [Återkommande neurala nätverk](./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 | [Generativa återkommande nätverk](./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) | [Laboratorium](./lessons/5-NLP/17-GenerativeNetworks/lab/README.md) | +| | Kiungo cha Somo | PyTorch/Keras/TensorFlow | Maabara | +| :-: | :------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------ | +| 0 | [Usanidi wa Kozi](./lessons/0-course-setup/setup.md) | [Sanidi Mazingira Yako ya Maendeleo](./lessons/0-course-setup/how-to-run.md) | | +| I | [**Utangulizi wa AI**](./lessons/1-Intro/README.md) | | | +| 01 | [Utangulizi na Historia ya AI](./lessons/1-Intro/README.md) | - | - | +| II | **AI ya Alama** | +| 02 | [Uwakilishi wa Maarifa na Mifumo ya Wataalamu](./lessons/2-Symbolic/README.md) | [Mifumo ya Wataalamu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) / [Ontolojia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) /[Grafu ya Dhana](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) | | +| III | [**Utangulizi wa Mitandao ya Neural**](./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) | [Maabara](./lessons/3-NeuralNetworks/03-Perceptron/lab/README.md) | +| 04 | [Perceptron wa Tabaka Nyingi na Kuunda Mfumo Wetu Wenyewe](./lessons/3-NeuralNetworks/04-OwnFramework/README.md) | [Notebook](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) | [Maabara](./lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md) | +| 05 | [Utangulizi wa Mifumo (PyTorch/TensorFlow) na 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) | [Maabara](./lessons/3-NeuralNetworks/05-Frameworks/lab/README.md) | +| IV | [**Maono ya Kompyuta**](./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)| [Chunguza Maono ya Kompyuta kwenye Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) | +| 06 | [Utangulizi wa Maono ya Kompyuta. 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) | [Maabara](./lessons/4-ComputerVision/06-IntroCV/lab/README.md) | +| 07 | [Mitandao ya Neural ya Convolutional](./lessons/4-ComputerVision/07-ConvNets/README.md) & [Miundo ya 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) | [Maabara](./lessons/4-ComputerVision/07-ConvNets/lab/README.md) | +| 08 | [Mitandao Iliyojifunza Tayari na Uhamisho wa Kujifunza](./lessons/4-ComputerVision/08-TransferLearning/README.md) na [Mbinu za Mafunzo](./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 na 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 | [Mitandao ya Kizazi ya Adversarial & Uhamisho wa Mtindo wa Kisanifu](./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 | [Utambuzi wa Vitu](./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 | [Ugawaji wa Kisemantiki. 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 | [**Usindikaji wa Lugha Asilia**](./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) | [Gundua Usindikaji wa Lugha Asilia kwenye Microsoft Azure](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum)| +| 13 | [Uwakilishi wa Maandishi. 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 | [Uwekaji wa Maneno ya Kisemantiki. Word2Vec na 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 | [Uundaji wa Lugha. Kufundisha Uwekaji wako mwenyewe](./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 | [Mitandao ya Neural ya Kurudia](./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 | [Mitandao ya Kizazi ya Kurudia](./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 | [Namngiven entitetsigenkänning](./lessons/5-NLP/19-NER/README.md) | [TensorFlow](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/19-NER/NER-TF.ipynb) | [Laboratorium](./lessons/5-NLP/19-NER/lab/README.md) | -| 20 | [Stora språkmodeller, Prompt-programmering och Few-Shot-uppgifter](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | -| VI | **Andra AI-tekniker** || | -| 21 | [Genetiska algoritmer](./lessons/6-Other/21-GeneticAlgorithms/README.md) | [Anteckningsbok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) | | -| 22 | [Djup förstärkningsinlärning](./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) | [Laboratorium](./lessons/6-Other/22-DeepRL/lab/README.md) | -| 23 | [Multi-agent system](./lessons/6-Other/23-MultiagentSystems/README.md) | | | -| VII | **AI Etik** | | | -| 24 | [AI Etik och Ansvarsfull AI](./lessons/7-Ethics/README.md) | [Microsoft Learn: Ansvarsfulla AI-principer](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | -| IX | **Extra** | | | -| 25 | [Multi-modala nätverk, CLIP och VQGAN](./lessons/X-Extras/X1-MultiModal/README.md) | [Anteckningsbok](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/X-Extras/X1-MultiModal/Clip.ipynb) | | +| 19 | [Utambuzi wa Vitu vya Majina](./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 | [Mitandao Mikubwa ya Lugha, Programu ya Maagizo na Kazi za Mifano Michache](./lessons/5-NLP/20-LangModels/READMELargeLang.md) | [PyTorch](https://microsoft.github.io/AI-For-Beginners/lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) | | +| VI | **Mbinu Nyingine za AI** || | +| 21 | [Algoriti za Kijenetiki](./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 | [Kujifunza kwa Kuimarisha Kina](./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 | [Mifumo ya Wakala Wengi](./lessons/6-Other/23-MultiagentSystems/README.md) | | | +| VII | **Maadili ya AI** | | | +| 24 | [Maadili ya AI na AI ya Uwajibikaji](./lessons/7-Ethics/README.md) | [Microsoft Learn: Kanuni za AI ya Uwajibikaji](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) | | +| IX | **Ziada** | | | +| 25 | [Mitandao ya Multi-Modal, CLIP na 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) | | -## Varje lektion innehåller +## Kila somo linajumuisha -* Förhandsläsningsmaterial -* Exekverbara Jupyter-anteckningsböcker, som ofta är specifika för ramverket (**PyTorch** eller **TensorFlow**). Den exekverbara anteckningsboken innehåller också mycket teoretiskt material, så för att förstå ämnet behöver du gå igenom minst en version av anteckningsboken (antingen PyTorch eller TensorFlow). -* **Laboratorier** tillgängliga för vissa ämnen, som ger dig möjlighet att försöka tillämpa det material du har lärt dig på ett specifikt problem. -* Vissa avsnitt innehåller länkar till [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) moduler som täcker relaterade ämnen. +* Vifaa vya kusoma kabla +* Notebooks za Jupyter zinazoweza kutekelezwa, ambazo mara nyingi ni maalum kwa mfumo (**PyTorch** au **TensorFlow**). Notebook inayoweza kutekelezwa pia ina maudhui mengi ya kinadharia, kwa hivyo ili kuelewa mada unahitaji kupitia angalau toleo moja la notebook (ama PyTorch au TensorFlow). +* **Labs** zinapatikana kwa baadhi ya mada, ambazo zinakupa fursa ya kujaribu kutumia maudhui uliyoyajifunza kwenye tatizo maalum. +* Sehemu zingine zina viungo vya moduli za [**MS Learn**](https://learn.microsoft.com/en-us/collections/7w28iy2xrqzdj0?WT.mc_id=academic-77998-bethanycheum) zinazoshughulikia mada zinazohusiana. -## Komma igång +## Kuanza -- Vi har skapat en [installationslektion](./lessons/0-course-setup/setup.md) för att hjälpa dig att ställa in din utvecklingsmiljö. - För utbildare har vi också skapat en [kursplaneringslektion](./lessons/0-course-setup/for-teachers.md)! -- Hur man [Kör koden i VSCode eller Codepace](./lessons/0-course-setup/how-to-run.md) +- Tumeunda [somo la usanidi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/setup.md) ili kukusaidia kuanzisha mazingira yako ya maendeleo. - Kwa Walimu, tumeunda [somo la usanidi wa mtaala](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/for-teachers.md) kwa ajili yako pia! +- Jinsi ya [Kuendesha msimbo katika VSCode au Codepace](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/0-course-setup/how-to-run.md) -Följ dessa steg: +Fuata hatua hizi: -Forka repository: Klicka på "Fork"-knappen i det övre högra hörnet av denna sida. +Fork Hifadhi: Bonyeza kitufe cha "Fork" kwenye kona ya juu-kulia ya ukurasa huu. -Klona repository: `git clone https://github.com/microsoft/AI-For-Beginners.git` +Clone Hifadhi: `git clone https://github.com/microsoft/AI-For-Beginners.git` -Glöm inte att stjärna (🌟) detta repo för att lättare hitta det senare. +Usisahau kuweka nyota (🌟) kwenye hifadhi hii ili kuipata kwa urahisi baadaye. -## Möt andra studenter +## Kutana na Wanafunzi Wengine -Gå med i vår [officiella AI Discord-server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) för att träffa och nätverka med andra studenter som tar denna kurs och få stöd. +Jiunge na [seva rasmi ya AI ya Discord](https://aka.ms/genai-discord?WT.mc_id=academic-105485-bethanycheum) ili kukutana na kuungana na wanafunzi wengine wanaochukua kozi hii na kupata msaada. -## Frågesporter +Ikiwa una maoni ya bidhaa au maswali wakati wa kujenga tembelea [Jukwaa la Azure AI Foundry Developer](https://aka.ms/foundry/forum) -> **En anteckning om frågesporter**: Alla frågesporter finns i mappen Quiz-app i etc\quiz-app, De är länkade från lektionerna, frågesportappen kan köras lokalt eller distribueras till Azure; följ instruktionerna i `quiz-app` mappen. De lokaliseras gradvis. +## Maswali ya Quiz +> **Maelezo kuhusu maswali ya majaribio**: Maswali yote ya majaribio yanapatikana kwenye folda ya Quiz-app ndani ya etc\quiz-app. Yameunganishwa kutoka ndani ya masomo, na programu ya maswali ya majaribio inaweza kuendeshwa moja kwa moja kwenye kompyuta yako au kuwekwa kwenye Azure; fuata maelekezo yaliyopo kwenye folda ya `quiz-app`. Yanatafsiriwa hatua kwa hatua. +## Msaada Unahitajika -## Hjälp önskas +Je, una mapendekezo au umepata makosa ya tahajia au ya kificho? Fungua suala au unda ombi la kuvuta mabadiliko. -Har du förslag eller har du upptäckt stavfel eller kodfel? Skapa ett ärende eller en pull-begäran. +## Shukrani Maalum -## Speciella tack +* **✍️ Mwandishi Mkuu:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Mhariri:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Mchoraji wa Sketchnote:** [Tomomi Imura](https://twitter.com/girlie_mac) +* **✅ Muundaji wa Maswali:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) +* **🙏 Wachangiaji Wakuu:** [Evgenii Pishchik](https://github.com/Pe4enIks) -* **✍️ Huvudförfattare:** [Dmitry Soshnikov](http://soshnikov.com), PhD -* **🔥 Redaktör:** [Jen Looper](https://twitter.com/jenlooper), PhD -* **🎨 Sketchnote-illustratör:** [Tomomi Imura](https://twitter.com/girlie_mac) -* **✅ Frågesportsskapare:** [Lateefah Bello](https://github.com/CinnamonXI), [MLSA](https://studentambassadors.microsoft.com/) -* **🙏 Kärnmedlemmar:** [Evgenii Pishchik](https://github.com/Pe4enIks) +## Mitaala Mingine -## Andra kursplaner +Timu yetu inazalisha mitaala mingine! Angalia: -Vårt team producerar andra kursplaner! Kolla in: +- [Generative AI kwa Kompyuta](https://aka.ms/genai-beginners) +- [Generative AI kwa Kompyuta .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI na JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI na Java](https://github.com/microsoft/Generative-AI-for-beginners-java) +- [AI kwa Kompyuta](https://aka.ms/ai-beginners) +- [Sayansi ya Takwimu kwa Kompyuta](https://aka.ms/datascience-beginners) +- [ML kwa Kompyuta](https://aka.ms/ml-beginners) +- [Usalama wa Mtandao kwa Kompyuta](https://github.com/microsoft/Security-101) +- [Web Dev kwa Kompyuta](https://aka.ms/webdev-beginners) +- [IoT kwa Kompyuta](https://aka.ms/iot-beginners) +- [Maendeleo ya XR kwa Kompyuta](https://github.com/microsoft/xr-development-for-beginners) +- [Kumiliki GitHub Copilot kwa Matumizi ya Wakala](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Kumiliki GitHub Copilot kwa Waendelezaji wa C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Chagua Safari Yako ya Copilot](https://github.com/microsoft/CopilotAdventures) -* [Data Science för nybörjare](https://aka.ms/ds4beginners) -* [**Version 2.0** Generativ AI för nybörjare](https://aka.ms/genai-beginners) -* [**NY** Cybersäkerhet för nybörjare](https://github.com/microsoft/Security-101??WT.mc_id=academic-96948-sayoung) -* [Webbutveckling för nybörjare](https://aka.ms/webdev-beginners) -* [IoT för nybörjare](https://aka.ms/iot-beginners) -* [Maskininlärning för nybörjare](https://aka.ms/ml4beginners) -* [XR-utveckling för nybörjare](https://aka.ms/xr-dev-for-beginners) -* [Mästra GitHub Copilot för AI-parprogrammering](https://aka.ms/GitHubCopilotAI) - -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/SECURITY.md b/translations/sw/SECURITY.md index f2560927..bfb17e96 100644 --- a/translations/sw/SECURITY.md +++ b/translations/sw/SECURITY.md @@ -1,40 +1,49 @@ -## Säkerhet + +## Usalama -Microsoft tar säkerheten för våra programvaruprodukter och tjänster på största allvar, vilket inkluderar alla källkodsförråd som hanteras genom våra GitHub-organisationer, som inkluderar [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), och [våra GitHub-organisationer](https://opensource.microsoft.com/). +Microsoft inachukulia usalama wa bidhaa na huduma zetu za programu kwa uzito, ikijumuisha hazina zote za msimbo wa chanzo zinazodhibitiwa kupitia mashirika yetu ya GitHub, ambayo ni pamoja na [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), na [mashirika yetu ya GitHub](https://opensource.microsoft.com/). -Om du tror att du har funnit en säkerhetsbrist i något Microsoft-ägt förråd som uppfyller [Microsofts definition av en säkerhetsbrist](https://aka.ms/opensource/security/definition), vänligen rapportera det till oss enligt beskrivningen nedan. +Ikiwa unaamini umebaini udhaifu wa kiusalama katika hazina yoyote inayomilikiwa na Microsoft ambayo inakidhi [ufafanuzi wa Microsoft wa udhaifu wa kiusalama](https://aka.ms/opensource/security/definition), tafadhali ripoti kwetu kama ilivyoelezwa hapa chini. -## Rapportera säkerhetsproblem +## Kuripoti Masuala ya Usalama -**Vänligen rapportera inte säkerhetsbrister genom offentliga GitHub-ärenden.** +**Tafadhali usiripoti udhaifu wa kiusalama kupitia masuala ya umma ya GitHub.** -Istället, vänligen rapportera dem till Microsoft Security Response Center (MSRC) på [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). +Badala yake, tafadhali ripoti kwa Kituo cha Majibu ya Usalama cha Microsoft (MSRC) kupitia [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). -Om du föredrar att skicka in utan att logga in, skicka e-post till [secure@microsoft.com](mailto:secure@microsoft.com). Om möjligt, kryptera ditt meddelande med vår PGP-nyckel; vänligen ladda ner den från [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). +Ikiwa unapendelea kuwasilisha bila kuingia, tuma barua pepe kwa [secure@microsoft.com](mailto:secure@microsoft.com). Ikiwezekana, enkripti ujumbe wako kwa kutumia ufunguo wetu wa PGP; tafadhali pakua kutoka kwa [ukurasa wa Ufunguo wa PGP wa Kituo cha Majibu ya Usalama cha Microsoft](https://aka.ms/opensource/security/pgpkey). -Du bör få ett svar inom 24 timmar. Om du av någon anledning inte får svar, vänligen följ upp via e-post för att säkerställa att vi mottagit ditt ursprungliga meddelande. Ytterligare information kan hittas på [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). +Unapaswa kupokea majibu ndani ya saa 24. Ikiwa kwa sababu fulani hutapokea, tafadhali fuatilia kupitia barua pepe ili kuhakikisha tumepokea ujumbe wako wa awali. Maelezo ya ziada yanapatikana kwenye [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). -Vänligen inkludera den begärda informationen som listas nedan (så mycket som du kan tillhandahålla) för att hjälpa oss att bättre förstå arten och omfattningen av det möjliga problemet: +Tafadhali jumuisha maelezo yaliyoombwa hapa chini (kadri unavyoweza kutoa) ili kutusaidia kuelewa vyema asili na upeo wa suala linalowezekana: - * Typ av problem (t.ex. buffertöverskridning, SQL-injektion, cross-site scripting, etc.) - * Fullständiga sökvägar för källfil(er) relaterade till manifestation av problemet - * Platsen för den påverkade källkoden (tagg/branch/commit eller direkt URL) - * Eventuell speciell konfiguration som krävs för att reproducera problemet - * Steg-för-steg-instruktioner för att reproducera problemet - * Bevis på koncept eller exploateringskod (om möjligt) - * Påverkan av problemet, inklusive hur en angripare kan utnyttja problemet + * Aina ya suala (mfano, kufurika kwa buffer, sindano ya SQL, maandishi ya tovuti ya msalaba, n.k.) + * Njia kamili za faili za chanzo zinazohusiana na udhihirisho wa suala + * Mahali pa msimbo wa chanzo ulioathiriwa (tagi/tawi/ahadi au URL ya moja kwa moja) + * Mipangilio yoyote maalum inayohitajika ili kuzalisha suala + * Maelekezo ya hatua kwa hatua ya kuzalisha suala + * Msimbo wa uthibitisho wa dhana au msimbo wa shambulio (ikiwezekana) + * Athari ya suala, ikijumuisha jinsi mshambulizi anaweza kutumia suala hilo -Denna information kommer att hjälpa oss att snabbt triagera din rapport. +Maelezo haya yatatusaidia kushughulikia ripoti yako haraka zaidi. -Om du rapporterar för en buggbelöning kan mer kompletta rapporter bidra till en högre belöning. Vänligen besök vår [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) sida för mer information om våra aktiva program. +Ikiwa unaripoti kwa ajili ya zawadi ya hitilafu, ripoti kamili zaidi zinaweza kuchangia tuzo ya juu zaidi. Tafadhali tembelea [Ukurasa wa Mpango wa Zawadi ya Hitilafu ya Microsoft](https://aka.ms/opensource/security/bounty) kwa maelezo zaidi kuhusu programu zetu zinazotumika. -## Föredragna språk +## Lugha Zinazopendelewa -Vi föredrar att all kommunikation sker på engelska. +Tunapendelea mawasiliano yote yawe kwa Kiingereza. -## Policy +## Sera -Microsoft följer principen om [Koordinerad sårbarhetsavslöjande](https://aka.ms/opensource/security/cvd). +Microsoft inafuata kanuni ya [Ufunuo wa Udhaifu Ulio Ratibiwa](https://aka.ms/opensource/security/cvd). -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/CODE_OF_CONDUCT.md b/translations/sw/etc/CODE_OF_CONDUCT.md index 526a42a3..0af22182 100644 --- a/translations/sw/etc/CODE_OF_CONDUCT.md +++ b/translations/sw/etc/CODE_OF_CONDUCT.md @@ -1,12 +1,21 @@ -# Microsoft Open Source Code of Conduct + +# Kanuni za Maadili ya Microsoft Open Source -Detta projekt har antagit [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Mradi huu umechukua [Kanuni za Maadili za Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/). -Resurser: +Rasilimali: -- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) -- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) -- Kontakta [opencode@microsoft.com](mailto:opencode@microsoft.com) med frågor eller bekymmer. +- [Kanuni za Maadili za Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/) +- [Maswali Yanayoulizwa Mara kwa Mara kuhusu Kanuni za Maadili za Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Wasiliana na [opencode@microsoft.com](mailto:opencode@microsoft.com) kwa maswali au wasiwasi -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/CONTRIBUTING.md b/translations/sw/etc/CONTRIBUTING.md index ccf4dfd6..d1ab84c6 100644 --- a/translations/sw/etc/CONTRIBUTING.md +++ b/translations/sw/etc/CONTRIBUTING.md @@ -1,20 +1,36 @@ -# Bidragande + +# Kuchangia -Detta projekt välkomnar bidrag och förslag. De flesta bidrag kräver att du godkänner ett Contributor License Agreement (CLA) som förklarar att du har rätten att, och faktiskt gör, ge oss rättigheterna att använda ditt bidrag. För mer information, besök https://cla.microsoft.com. +Mradi huu unakaribisha michango na mapendekezo. Michango mingi inahitaji wewe +kukubaliana na Mkataba wa Leseni ya Mchangiaji (CLA) unaoeleza kuwa una haki ya, +na kwa kweli unatoa, ruhusa kwetu kutumia mchango wako. Kwa maelezo zaidi, tembelea +https://cla.microsoft.com. -När du skickar in en pull request kommer en CLA-bot automatiskt att avgöra om du behöver tillhandahålla en CLA och dekorera PR:n på lämpligt sätt (t.ex. etikett, kommentar). Följ bara instruktionerna som ges av boten. Du behöver bara göra detta en gång över alla arkiv som använder vår CLA. +Unapowasilisha ombi la kuvuta (pull request), CLA-bot itatambua kiotomatiki kama unahitaji +kutoa CLA na kuipamba PR ipasavyo (mfano, lebo, maoni). Fuata tu +maelekezo yaliyotolewa na bot. Utahitaji kufanya hivi mara moja tu kwenye hifadhi zote zinazotumia CLA yetu. -Detta projekt har antagit [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). För mer information, se [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) eller kontakta [opencode@microsoft.com](mailto:opencode@microsoft.com) med eventuella ytterligare frågor eller kommentarer. +Mradi huu umechukua [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Kwa maelezo zaidi angalia [Maswali Yanayoulizwa Mara kwa Mara kuhusu Kanuni za Maadili](https://opensource.microsoft.com/codeofconduct/faq/) +au wasiliana na [opencode@microsoft.com](mailto:opencode@microsoft.com) kwa maswali au maoni ya ziada. -# Söker Bidrag +# Kutafuta Michango -Vi letar för närvarande aktivt efter bidrag inom följande ämnen: +Kwa sasa tunatafuta michango kwa mada zifuatazo: -- [ ] Skriv avsnitt om Deep Reinforcement Learning -- [ ] Förbättra avsnitt + anteckningsbok om Objektidentifiering -- [ ] PyTorch Lightning (för [detta avsnitt](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) -- [ ] Skriv avsnitt + exempel om Namngiven Entitetsigenkänning -- [ ] Skapa exempel för att träna våra egna inbäddningar för [detta avsnitt](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) +- [ ] Andika sehemu kuhusu Kujifunza Kuimarisha Kina (Deep Reinforcement Learning) +- [ ] Boresha sehemu + daftari kuhusu Utambuzi wa Vitu (Object Detection) +- [ ] PyTorch Lightning (kwa [sehemu hii](https://github.com/microsoft/AI-For-Beginners/blob/main/3-NeuralNetworks/05-Frameworks/README.md)) +- [ ] Andika sehemu + mifano kuhusu Utambuzi wa Huluki Jina (Named Entity Recognition) +- [ ] Unda mifano ya kufundisha embeddings zetu wenyewe kwa [sehemu hii](https://github.com/microsoft/AI-For-Beginners/tree/main/5-NLP/15-LanguageModeling) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/Mindmap.md b/translations/sw/etc/Mindmap.md index 7bcb13a4..af3cf1e2 100644 --- a/translations/sw/etc/Mindmap.md +++ b/translations/sw/etc/Mindmap.md @@ -1,76 +1,87 @@ + # AI -## [Introduktion till AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) - - Definition av AI - - AI:s historia - - Tillvägagångssätt för AI - - Top-down/Symbolisk - - Bottom-up/Neural - - Evolutionär - - Synergetisk / Emergent AI - - [Microsoft AI Business School](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) +## [Utangulizi wa AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Ufafanuzi wa AI + - Historia ya AI + - Njia za AI + - Juu-chini/Kiishara + - Chini-juu/Neural + - Mabadiliko ya Kimaumbile + - Synergetic / AI Inayojitokeza + - [Shule ya Biashara ya AI ya Microsoft](https://www.microsoft.com/ai/ai-business-school/?WT.mc_id=academic-77998-cacaste) -## [Symbolisk AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) - - Kunskapsrepresentation - - [Expert System](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) - - [Ontologier](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) - - Semantisk webb +## [AI ya Kiishara](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/README.md) + - Uwakilishi wa Maarifa + - [Mifumo ya Wataalamu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) + - [Ontolojia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) + - Wavuti ya Semantiki -## [Neurala nätverk](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) - - [Flerlagersnätverk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) - - [Introduktion till ramverk](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) - - [Överanpassning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/05-Frameworks/Overfitting.md) +## [Mitandao ya Neural](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) + - [Mitandao ya Tabaka Nyingi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/3-NeuralNetworks/04-OwnFramework/README.md) + - [Utangulizi wa Mfumo](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) -## [Datorseende](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) - - På MS Learn - - [AI-grunder: Utforska datorseende](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) - - [CV med PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) - - [CV med TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) - - [Introduktion till CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) - - [Konvolutionella nätverk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) - - [CNN-arkitekturer](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) - - [Överföringsinlärning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) - - [Träningstips](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) - - [Autoenkodare och VAE:er](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) - - [Generativa motstridiga nätverk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) - - [Stilöverföring](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) - - [Objektdetektering](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) - - [Segmentering](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) - -## [Bearbetning av naturligt språk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) - - På MS Learn - - [AI-grunder: Utforska NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) - - [NLP med PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) - - [NLP med 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) - - Bag of Words - - TF/IDF - - [Semantic Embeddings](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) - - Word2Vec - - GloVE - - [Språkmodellering](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) - - [Återkommande Neurala Nätverk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) - - LSTM - - GRU - - [Generativa Återkommande Nätverk](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) - - [Transformers och BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) - - [Namngiven Entitetsigenkänning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) - - [Textgenerering och GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) -## Andra Tekniker - - [Genetiska Algoritmer](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) - - [Djup Förstärkningsinlärning](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) - - [Multi-Agent System](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) +## [Maono ya Kompyuta](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/README.md) + - Kwenye MS Learn + - [Misingi ya AI: Chunguza Maono ya Kompyuta](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc_id=academic-77998-cacaste) + - [CV na PyTorch](https://docs.microsoft.com/learn/modules/intro-computer-vision-pytorch/?WT.mc_id=academic-77998-cacaste) + - [CV na TensorFlow](https://docs.microsoft.com/learn/modules/intro-computer-vision-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Utangulizi wa CV. OpenCV](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/06-IntroCV/README.md) + - [Mitandao ya Convolutional](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/README.md) + - [Miundo ya CNN](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md) + - [Kujifunza kwa Uhamisho](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/README.md) + - [Mbinu za Mafunzo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md) + - [Autoencoders na VAEs](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/09-Autoencoders/README.md) + - [Mitandao ya Kizazi ya Adversarial](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/README.md) + - [Uhamisho wa Mtindo](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + - [Utambuzi wa Vitu](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/11-ObjectDetection/README.md) + - [Ugawaji](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/4-ComputerVision/12-Segmentation/README.md) -## [AI Etik](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) - - [MS Learn om Ansvarsfull AI](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) -## Extramaterial - - [Multimodala Nätverk](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 +## [Usindikaji wa Lugha Asilia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/README.md) + - Kwenye MS Learn + - [Misingi ya AI: Chunguza NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP na PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP na TensorFlow](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-TensorFlow/?WT.mc_id=academic-77998-cacaste) + - [Uwakilishi wa Maandishi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/13-TextRep/README.md) + - Mfuko wa Maneno + - TF/IDF + - [Embeddings za Semantiki](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/14-Embeddings/README.md) + - Word2Vec + - GloVE + - [Uundaji wa Lugha](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/15-LanguageModeling) + - [Mitandao ya Neural ya Kurudiarudia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/16-RNN/README.md) + - LSTM + - GRU + - [Mitandao ya Kizazi ya Kurudiarudia](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/17-GenerativeNetworks/README.md) + - [Transformers na BERT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/18-Transformers/README.md) + - [Utambuzi wa Vitu vya Majina](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/19-NER/README.md) + - [Uundaji wa Maandishi na GPT](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/5-NLP/20-LanguageModels/README.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +## Mbinu Nyingine + - [Algorithimu za Kijenetiki](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/21-GeneticAlgorithms/README.md) + - [Kujifunza kwa Kuimarisha kwa Kina](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/22-DeepRL/README.md) + - [Mifumo ya Wakala Wengi](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/6-Other/23-MultiagentSystems/README.md) + +## [Maadili ya AI](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/7-Ethics/README.md) + - [MS Learn kuhusu AI ya Uwajibikaji](https://docs.microsoft.com/learn/paths/responsible-ai-business-principles/?WT.mc_id=academic-77998-cacaste) + +## Ziada + - [Mitandao ya Multimodal](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 + +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/SUPPORT.md b/translations/sw/etc/SUPPORT.md index d84419c5..70eb6e5d 100644 --- a/translations/sw/etc/SUPPORT.md +++ b/translations/sw/etc/SUPPORT.md @@ -1,16 +1,23 @@ -# Support + +# Msaada -## Hur man rapporterar problem och får hjälp +## Jinsi ya kuripoti matatizo na kupata msaada -Detta projekt använder GitHub Issues för att spåra buggar och funktionsförfrågningar. Vänligen sök bland de befintliga -problemen innan du rapporterar nya för att undvika dubbletter. För nya problem, rapportera din bugg eller -funktionsförfrågan som ett nytt problem. +Mradi huu unatumia GitHub Issues kufuatilia hitilafu na maombi ya vipengele vipya. Tafadhali tafuta matatizo yaliyopo kabla ya kuripoti matatizo mapya ili kuepuka marudio. Kwa matatizo mapya, ripoti hitilafu yako au ombi la kipengele kama Issue mpya. -För hjälp och frågor om hur man använder detta projekt, vänligen använd Diskussionsforum. +Kwa msaada na maswali kuhusu jinsi ya kutumia mradi huu, tafadhali tumia Mabaraza ya Majadiliano. -## Microsofts supportpolicy +## Sera ya Msaada ya Microsoft -Stödet för detta projekt är begränsat till de resurser som anges ovan. +Msaada kwa mradi huu umewekewa mipaka kwa rasilimali zilizoorodheshwa hapo juu. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för eventuella missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/TRANSLATIONS.md b/translations/sw/etc/TRANSLATIONS.md index 1e11d7da..9a48ee96 100644 --- a/translations/sw/etc/TRANSLATIONS.md +++ b/translations/sw/etc/TRANSLATIONS.md @@ -1,36 +1,45 @@ -# Bidra genom att översätta lektioner + +# Changia kwa kutafsiri masomo -Vi välkomnar översättningar för lektionerna i denna läroplan! +Tunakaribisha tafsiri za masomo katika mtaala huu! -## Riktlinjer +## Miongozo -Det finns mappar i varje lektionsmapp och mapp för lektionsintroduktion som innehåller de översatta markdown-filerna. +Kuna folda katika kila folda ya somo na folda ya utangulizi wa somo ambazo zina faili za markdown zilizotafsiriwa. -> Observera, vänligen översätt inte någon kod i kodexempelfilerna; det enda som ska översättas är README, uppgifter och quiz. Tack! +> Kumbuka, tafadhali usitafsiri msimbo wowote katika faili za sampuli za msimbo; vitu pekee vya kutafsiri ni README, kazi, na maswali ya majaribio. Asante! -Översatta filer bör följa denna namngivningskonvention: +Faili zilizotafsiriwa zinapaswa kufuata muundo huu wa majina: -**README._[språk]_.md** +**README._[language]_.md** -där _[språk]_ är en tvåbokstavsförkortning för språket enligt ISO 639-1-standarden (t.ex. `README.es.md` för spanska och `README.nl.md` för nederländska). +ambapo _[language]_ ni kifupi cha herufi mbili cha lugha kinachofuata kiwango cha ISO 639-1 (mfano `README.es.md` kwa Kihispania na `README.nl.md` kwa Kiholanzi). -**assignment._[språk]_.md** +**assignment._[language]_.md** -Liksom för Readme, vänligen översätt även uppgifterna. +Sawa na README, tafadhali tafsiri pia kazi. -**Quiz** +**Maswali ya Majaribio** -1. Lägg till din översättning till quiz-appen genom att lägga till en fil här: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, med korrekt namngivningskonvention (en.json, fr.json). **Vänligen lokalisera inte orden 'true' eller 'false' dock. Tack!** +1. Ongeza tafsiri yako kwenye programu ya maswali ya majaribio kwa kuongeza faili hapa: https://github.com/microsoft/AI-For-Beginners/tree/main/etc/quiz-app/src/assets/translations, kwa kufuata muundo sahihi wa majina (en.json, fr.json). **Tafadhali usibadilisha maneno 'true' au 'false' hata hivyo. Asante!** -2. Lägg till din språkkod i rullgardinsmenyn i quiz-appens App.vue-fil. +2. Ongeza msimbo wa lugha yako kwenye menyu kunjuzi katika faili ya App.vue ya programu ya maswali ya majaribio. -3. Redigera quiz-appens [translations index.js-fil](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) för att lägga till ditt språk. +3. Hariri [faili ya index.js ya tafsiri za programu ya maswali ya majaribio](https://github.com/microsoft/AI-For-Beginners/blob/main/etc/quiz-app/src/assets/translations/index.js) ili kuongeza lugha yako. -4. Slutligen, redigera ALLA quiz-länkar i dina översatta README.md-filer så att de pekar direkt på ditt översatta quiz: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 blir https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id +4. Hatimaye, hariri VIUNGO VYOTE vya maswali ya majaribio katika faili zako za README.md zilizotafsiriwa ili kuelekeza moja kwa moja kwenye jaribio lako lililotafsiriwa: https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1 inakuwa https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/1?loc=id -**TACK** +**ASANTE** -Vi uppskattar verkligen dina insatser! +Tunathamini sana juhudi zako! -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/etc/quiz-app/README.md b/translations/sw/etc/quiz-app/README.md index da53500b..12b21ab2 100644 --- a/translations/sw/etc/quiz-app/README.md +++ b/translations/sw/etc/quiz-app/README.md @@ -1,96 +1,106 @@ -# Quizzes + +# Maswali ya Mitihani -Dessa quizzar är för- och efterföljande quizzar för AI-läroplanen på https://aka.ms/ai-beginners +Maswali haya ni ya kabla na baada ya mihadhara kwa mtaala wa AI unaopatikana kwenye https://aka.ms/ai-beginners -## Lägga till en översatt quizuppsättning +## Kuongeza seti ya maswali iliyotafsiriwa -Lägg till en quizöversättning genom att skapa matchande quizstrukturer i `assets/translations` mapparna. De kanoniska quizzarna finns i `assets/translations/en`. Quizzarna är uppdelade i flera grupper efter lektion. Se till att numreringen stämmer överens med den rätta quizsektionen. Det finns totalt 40 quizzar i denna läroplan, med räkningen som börjar på 0. +Ongeza tafsiri ya maswali kwa kuunda miundo inayolingana ya maswali katika folda za `assets/translations`. Maswali ya msingi yapo kwenye `assets/translations/en`. Maswali yamegawanywa katika makundi kadhaa kulingana na somo. Hakikisha unalinganisha namba na sehemu sahihi ya maswali. Kuna jumla ya maswali 40 katika mtaala huu, na hesabu inaanzia 0. -Efter att ha redigerat översättningarna, redigera index.js-filen i översättningsmappen för att importera alla filer enligt konventionerna i `en`. +Baada ya kuhariri tafsiri, hariri faili ya `index.js` katika folda ya tafsiri ili kuingiza faili zote ukifuata kanuni za `en`. -Redigera `index.js`-filen i `assets/translations` för att importera de nya översatta filerna. +Hariri faili ya `index.js` katika `assets/translations` ili kuingiza faili mpya zilizotafsiriwa. -Därefter, redigera rullgardinsmenyn i `App.vue` i denna app för att lägga till ditt språk. Matcha den lokaliserade förkortningen med mappnamnet för ditt språk. +Kisha, hariri menyu kunjuzi katika `App.vue` kwenye programu hii ili kuongeza lugha yako. Linganisha kifupi cha lugha kilichotafsiriwa na jina la folda ya lugha yako. -Slutligen, redigera alla quizlänkar i de översatta lektionerna, om de finns, för att inkludera denna lokalisering som en frågeparameter: `?loc=fr` till exempel. +Mwishowe, hariri viungo vyote vya maswali katika masomo yaliyotafsiriwa, ikiwa yapo, ili kujumuisha utafsiri huu kama kigezo cha swali: `?loc=fr` kwa mfano. -## Projektuppsättning +## Usanidi wa Mradi ``` npm install ``` -### Kompilerar och hot-reloader för utveckling +### Inakamilisha na kupakia tena kwa maendeleo ``` npm run serve ``` -### Kompilerar och minifierar för produktion +### Inakamilisha na kupunguza kwa uzalishaji ``` npm run build ``` -### Lintar och fixar filer +### Inakagua na kurekebisha faili ``` npm run lint ``` -### Anpassa konfiguration +### Kubadilisha usanidi -Se [Konfigurationsreferens](https://cli.vuejs.org/config/). +Tazama [Marejeleo ya Usanidi](https://cli.vuejs.org/config/). -Krediter: Tack till den ursprungliga versionen av denna quizapp: https://github.com/arpan45/simple-quiz-vue +Shukrani: Asante kwa toleo la awali la programu hii ya maswali: https://github.com/arpan45/simple-quiz-vue -## Distribuera till Azure +## Kuweka kwenye Azure -Här är en steg-för-steg-guide för att hjälpa dig komma igång: +Hapa kuna mwongozo wa hatua kwa hatua wa kukusaidia kuanza: -1. Forka ett GitHub-repo -Se till att din statiska webbapps kod finns i ditt GitHub-repo. Forka detta repo. +1. Nakili Hifadhi ya GitHub +Hakikisha msimbo wa programu yako ya wavuti tuli uko kwenye hifadhi yako ya GitHub. Nakili hifadhi hii. -2. Skapa en Azure Static Web App -- Skapa ett [Azure-konto](http://azure.microsoft.com) -- Gå till [Azure-portalen](https://portal.azure.com) -- Klicka på "Skapa en resurs" och sök efter "Static Web App". -- Klicka på "Skapa". +2. Unda Azure Static Web App +- Unda [akaunti ya Azure](http://azure.microsoft.com) +- Nenda kwenye [Azure portal](https://portal.azure.com) +- Bonyeza “Create a resource” na utafute “Static Web App”. +- Bonyeza “Create”. -3. Konfigurera den statiska webbappen -- Grundläggande: Prenumeration: Välj din Azure-prenumeration. -- Resursgrupp: Skapa en ny resursgrupp eller använd en befintlig. -- Namn: Ange ett namn för din statiska webbapp. -- Region: Välj den region som ligger närmast dina användare. +3. Sanidi Azure Static Web App +- Msingi: + - Usajili: Chagua usajili wako wa Azure. + - Kikundi cha Rasilimali: Unda kikundi kipya cha rasilimali au tumia kilichopo. + - Jina: Toa jina kwa programu yako ya wavuti tuli. + - Eneo: Chagua eneo lililo karibu zaidi na watumiaji wako. -- #### Distribueringsdetaljer: -- Källa: Välj "GitHub". -- GitHub-konto: Auktorisera Azure att få tillgång till ditt GitHub-konto. -- Organisation: Välj din GitHub-organisation. -- Repository: Välj det repo som innehåller din statiska webbapp. -- Gren: Välj den gren du vill distribuera från. +- #### Maelezo ya Uwekaji: + - Chanzo: Chagua “GitHub”. + - Akaunti ya GitHub: Ruhusu Azure kufikia akaunti yako ya GitHub. + - Shirika: Chagua shirika lako la GitHub. + - Hifadhi: Chagua hifadhi yenye msimbo wa programu yako ya wavuti tuli. + - Tawi: Chagua tawi unalotaka kuweka kutoka. -- #### Byggdetaljer: -- Byggförinställningar: Välj det ramverk din app är byggd med (t.ex. React, Angular, Vue, etc.). -- App-läge: Specificera mappen som innehåller din appkod (t.ex. / om den ligger i roten). -- API-läge: Om du har ett API, specificera dess plats (valfritt). -- Utmatningsläge: Specificera mappen där byggutmatningen genereras (t.ex. build eller dist). +- #### Maelezo ya Ujenzi: + - Vigezo vya Ujenzi: Chagua mfumo ambao programu yako imejengwa nao (mfano, React, Angular, Vue, n.k.). + - Eneo la Programu: Eleza folda yenye msimbo wa programu yako (mfano, / ikiwa iko kwenye mzizi). + - Eneo la API: Ikiwa una API, eleza eneo lake (hiari). + - Eneo la Matokeo: Eleza folda ambapo matokeo ya ujenzi yanazalishwa (mfano, build au dist). -4. Granska och skapa -Granska dina inställningar och klicka på "Skapa". Azure kommer att ställa in de nödvändiga resurserna och skapa en GitHub Actions-arbetsflöde i ditt repo. +4. Kagua na Unda +Kagua mipangilio yako na bonyeza “Create”. Azure itaweka rasilimali zinazohitajika na kuunda faili ya GitHub Actions katika hifadhi yako. -5. GitHub Actions-arbetsflöde -Azure kommer automatiskt att skapa en GitHub Actions-arbetsflödesfil i ditt repo (.github/workflows/azure-static-web-apps-.yml). Detta arbetsflöde kommer att hantera bygg- och distributionsprocessen. +5. Faili ya GitHub Actions Workflow +Azure itaunda moja kwa moja faili ya GitHub Actions workflow katika hifadhi yako (.github/workflows/azure-static-web-apps-.yml). Faili hii itashughulikia mchakato wa ujenzi na uwekaji. -6. Övervaka distributionen -Gå till fliken "Actions" i ditt GitHub-repo. -Du bör se ett arbetsflöde som körs. Detta arbetsflöde kommer att bygga och distribuera din statiska webbapp till Azure. -När arbetsflödet är klart kommer din app att vara live på den angivna Azure-URL:en. +6. Fuata Uwekaji +Nenda kwenye kichupo cha “Actions” katika hifadhi yako ya GitHub. +Unapaswa kuona mchakato wa workflow ukiendelea. Mchakato huu utajenga na kuweka programu yako ya wavuti tuli kwenye Azure. +Baada ya workflow kukamilika, programu yako itakuwa hewani kwenye URL iliyotolewa na Azure. -### Exempel på arbetsflödesfil +### Mfano wa Faili ya Workflow -Här är ett exempel på hur GitHub Actions-arbetsflödesfilen kan se ut: -name: Azure Static Web Apps CI/CD +Hapa kuna mfano wa jinsi faili ya GitHub Actions workflow inaweza kuonekana: +name: Azure Static Web Apps CI/CD ``` on: push: @@ -119,9 +129,9 @@ jobs: output_location: "dist" #Built app content directory - optional ``` -### Ytterligare resurser -- [Dokumentation för Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) -- [Dokumentation för GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) +### Rasilimali za Ziada +- [Nyaraka za Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Nyaraka za GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) -**Varning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/0-course-setup/for-teachers.md b/translations/sw/lessons/0-course-setup/for-teachers.md index bf10b906..6956fc49 100644 --- a/translations/sw/lessons/0-course-setup/for-teachers.md +++ b/translations/sw/lessons/0-course-setup/for-teachers.md @@ -1,26 +1,35 @@ -# För lärare + +# Kwa Walimu -Vill du använda denna läroplan i ditt klassrum? Känn dig fri att göra det! +Je, ungependa kutumia mtaala huu darasani kwako? Tafadhali jisikie huru! -Faktum är att du kan använda den direkt inom GitHub genom att använda GitHub Classroom. +Kwa kweli, unaweza kuutumia ndani ya GitHub yenyewe kwa kutumia GitHub Classroom. -För att göra det, fork denna repo. Du kommer att behöva skapa en repo för varje lektion, så du måste extrahera varje mapp till en separat repo. På så sätt kan [GitHub Classroom](https://classroom.github.com/classrooms) plocka upp varje lektion separat. +Ili kufanya hivyo, nakili repo hii. Utahitaji kuunda repo kwa kila somo, kwa hivyo utahitaji kutoa kila folda na kuiweka kwenye repo tofauti. Kwa njia hiyo, [GitHub Classroom](https://classroom.github.com/classrooms) inaweza kuchukua kila somo moja kwa moja. -Dessa [fullständiga instruktioner](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) ger dig en uppfattning om hur du sätter upp ditt klassrum. +Maelezo haya [kamili](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) yatakupa mwongozo wa jinsi ya kuandaa darasa lako. -## Använda repo som den är +## Kutumia repo kama ilivyo -Om du vill använda denna repo som den är nu, utan att använda GitHub Classroom, går det också bra. Du behöver kommunicera med dina studenter om vilken lektion ni ska arbeta igenom tillsammans. +Ikiwa ungependa kutumia repo hii kama ilivyo sasa, bila kutumia GitHub Classroom, hilo linawezekana pia. Utahitaji kuwasiliana na wanafunzi wako kuhusu somo gani la kufanyia kazi pamoja. -I ett online-format (Zoom, Teams eller annat) kan du skapa breakout-rum för quizzen och vägleda studenterna för att hjälpa dem att förbereda sig för att lära. Sedan kan du bjuda in studenterna till quizzen och låta dem skicka in sina svar som 'issues' vid en viss tidpunkt. Du kan göra detsamma med uppgifter, om du vill att studenterna ska arbeta tillsammans öppet. +Katika muundo wa mtandaoni (Zoom, Teams, au nyinginezo) unaweza kuunda vyumba vya vikundi kwa ajili ya maswali ya majaribio, na kuwaelekeza wanafunzi ili kuwasaidia kujiandaa kujifunza. Kisha waalike wanafunzi kushiriki kwenye maswali ya majaribio na kuwasilisha majibu yao kama 'issues' kwa wakati fulani. Unaweza kufanya vivyo hivyo na kazi za nyumbani, ikiwa unataka wanafunzi wafanye kazi kwa kushirikiana waziwazi. -Om du föredrar ett mer privat format, be dina studenter att forkla läroplanen, lektion för lektion, till sina egna GitHub-repos som privata repos och ge dig tillgång. Då kan de slutföra quizzen och uppgifterna privat och skicka dem till dig via issues på din klassrumsrepo. +Ikiwa unapendelea muundo wa faragha zaidi, waombe wanafunzi wako kunakili mtaala huu, somo kwa somo, kwenye repos zao za GitHub kama repos za faragha, na wakupe ufikiaji. Kisha wanaweza kukamilisha maswali ya majaribio na kazi za nyumbani kwa faragha na kuwasilisha kwako kupitia 'issues' kwenye repo ya darasa lako. -Det finns många sätt att få detta att fungera i ett online klassrumformat. Låt oss veta vad som fungerar bäst för dig! +Kuna njia nyingi za kufanya hili lifanye kazi katika muundo wa darasa la mtandaoni. Tafadhali tujulishe ni njia gani inakufaa zaidi! -## Ge oss gärna dina tankar +## Tafadhali tupe maoni yako -Vi vill att denna läroplan ska fungera för dig och dina studenter. Ge oss gärna feedback på diskussionsforumet! +Tunataka mtaala huu ufanye kazi kwako na kwa wanafunzi wako. Tafadhali tupe maoni yako kwenye bodi za majadiliano! -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/0-course-setup/how-to-run.md b/translations/sw/lessons/0-course-setup/how-to-run.md index 29ec7dcb..f562e6e2 100644 --- a/translations/sw/lessons/0-course-setup/how-to-run.md +++ b/translations/sw/lessons/0-course-setup/how-to-run.md @@ -1,12 +1,21 @@ -# Hur man kör koden + +# Jinsi ya Kuendesha Msimbo -Denna kursplan innehåller många exekverbara exempel och labbar som du vill köra. För att göra detta behöver du kunna köra Python-kod i Jupyter Notebooks som tillhandahålls som en del av denna kursplan. Du har flera alternativ för att köra koden: +Mtaala huu una mifano mingi inayoweza kutekelezwa na maabara ambayo ungependa kuendesha. Ili kufanya hivyo, unahitaji uwezo wa kutekeleza msimbo wa Python katika Jupyter Notebooks zinazotolewa kama sehemu ya mtaala huu. Una chaguo kadhaa za kuendesha msimbo: -## Kör lokalt på din dator +## Kuendesha kwenye Kompyuta Yako -För att köra koden lokalt på din dator behöver du ha någon version av Python installerad. Jag rekommenderar personligen att installera **[miniconda](https://conda.io/en/latest/miniconda.html)** - det är en ganska lättviktsinstallation som stöder `conda` paketchef för olika Python **virtuella miljöer**. +Ili kuendesha msimbo kwenye kompyuta yako, unahitaji kuwa na toleo fulani la Python lililowekwa. Ninapendekeza sana kusakinisha **[miniconda](https://conda.io/en/latest/miniconda.html)** - ni usakinishaji mwepesi unaosaidia meneja wa kifurushi cha `conda` kwa mazingira tofauti ya **Python**. -Efter att du har installerat miniconda behöver du klona repositoryt och skapa en virtuell miljö som ska användas för denna kurs: +Baada ya kusakinisha miniconda, unahitaji kunakili hifadhi na kuunda mazingira ya kawaida yatakayotumika kwa kozi hii: ```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 ``` -### Använda Visual Studio Code med Python-tillägg +### Kutumia Visual Studio Code na Kiendelezi cha Python -Förmodligen det bästa sättet att använda kursplanen är att öppna den i [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) med [Python-tillägget](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). +Njia bora zaidi ya kutumia mtaala huu ni kuufungua katika [Visual Studio Code](http://code.visualstudio.com/?WT.mc_id=academic-77998-cacaste) na [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-cacaste). -> **Obs!**: När du har klonat och öppnat katalogen i VS Code kommer den automatiskt att föreslå att du installerar Python-tillägg. Du måste också installera miniconda som beskrivits ovan. +> **Note**: Mara tu unapokopi na kufungua folda katika VS Code, itakupendekezea kusakinisha viendelezi vya Python. Pia utahitaji kusakinisha miniconda kama ilivyoelezwa hapo juu. -> **Obs!**: Om VS Code föreslår att du ska öppna repositoryt i en container, behöver du avböja detta för att använda den lokala Python-installationen. +> **Note**: Ikiwa VS Code inapendekeza kufungua hifadhi katika kontena, unapaswa kukataa hili ili kutumia usakinishaji wa Python wa ndani. -### Använda Jupyter i webbläsaren +### Kutumia Jupyter kwenye Kivinjari -Du kan också använda Jupyter-miljön direkt från webbläsaren på din egen dator. Faktum är att både klassiska Jupyter och Jupyter Hub erbjuder en ganska bekväm utvecklingsmiljö med automatisk komplettering, kodmarkering, etc. +Unaweza pia kutumia mazingira ya Jupyter moja kwa moja kutoka kwenye kivinjari kwenye kompyuta yako. Kwa kweli, Jupyter ya kawaida na Jupyter Hub hutoa mazingira mazuri ya maendeleo yenye uwezo wa kukamilisha msimbo kiotomatiki, kuonyesha rangi ya msimbo, n.k. -För att starta Jupyter lokalt, gå till kursens katalog och kör: +Ili kuanza Jupyter ndani ya nchi, nenda kwenye folda ya kozi, na utekeleze: ```bash jupyter notebook ``` -eller +au ```bash jupyterhub ``` -Du kan sedan navigera till valfri `.ipynb` files, open them and start working. +Kisha unaweza kuvinjari faili zozote za `.ipynb`, kuzifungua na kuanza kufanya kazi. -### Running in container +### Kuendesha katika Kontena -One alternative to Python installation would be to run the code in container. Since our repository contains special `.devcontainer` mapp som instruerar hur man bygger en container för detta repo, VS Code skulle erbjuda dig att öppna koden i containern. Detta kräver Docker-installation och skulle också vara mer komplext, så vi rekommenderar detta för mer erfarna användare. +Njia mbadala ya usakinishaji wa Python ni kuendesha msimbo katika kontena. Kwa kuwa hifadhi yetu ina folda maalum ya `.devcontainer` inayotoa maelekezo ya jinsi ya kujenga kontena kwa hifadhi hii, VS Code itakupendekezea kufungua msimbo katika kontena. Hii itahitaji usakinishaji wa Docker, na pia itakuwa ngumu zaidi, kwa hivyo tunapendekeza hii kwa watumiaji wenye uzoefu zaidi. -## Köra i molnet +## Kuendesha Mtandaoni -Om du inte vill installera Python lokalt och har tillgång till några molnresurser - ett bra alternativ skulle vara att köra koden i molnet. Det finns flera sätt att göra detta: +Ikiwa hutaki kusakinisha Python ndani ya nchi, na una rasilimali za wingu - njia nzuri ni kuendesha msimbo mtandaoni. Kuna njia kadhaa za kufanya hivi: -* Använda **[GitHub Codespaces](https://github.com/features/codespaces)**, vilket är en virtuell miljö som skapats för dig på GitHub, tillgänglig via VS Code:s webbläsargränssnitt. Om du har tillgång till Codespaces kan du helt enkelt klicka på **Code**-knappen i repo, starta en codespace och komma igång på nolltid. -* Använda **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) är en gratis datorkraft som tillhandahålls i molnet för personer som du att testa lite kod på GitHub. Det finns en knapp på förstasidan för att öppna repositoryt i Binder - detta bör snabbt ta dig till bindersidan, som kommer att bygga den underliggande containern och starta Jupyter-webbgränssnittet för dig sömlöst. +* Kutumia **[GitHub Codespaces](https://github.com/features/codespaces)**, ambayo ni mazingira ya kawaida yaliyoundwa kwa ajili yako kwenye GitHub, yanayopatikana kupitia kiolesura cha kivinjari cha VS Code. Ikiwa una ufikiaji wa Codespaces, unaweza kubofya kitufe cha **Code** kwenye hifadhi, kuanzisha codespace, na kuanza mara moja. +* Kutumia **[Binder](https://mybinder.org/v2/gh/microsoft/ai-for-beginners/HEAD)**. [Binder](https://mybinder.org) ni rasilimali za bure za kompyuta zinazotolewa mtandaoni kwa watu kama wewe kujaribu msimbo kwenye GitHub. Kuna kitufe kwenye ukurasa wa mbele kufungua hifadhi katika Binder - hii inapaswa kukuchukua haraka kwenye tovuti ya Binder, ambayo itajenga kontena msingi na kuanzisha kiolesura cha wavuti cha Jupyter kwa urahisi. -> **Obs!**: För att förhindra missbruk har Binder tillgång till vissa webbresurser blockerade. Detta kan förhindra att viss kod fungerar, som hämtar modeller och/eller dataset från offentliga Internet. Du kan behöva hitta några lösningar. Dessutom är de datorkraft som tillhandahålls av Binder ganska grundläggande, så träningen kommer att vara långsam, särskilt i senare mer komplexa lektioner. +> **Note**: Ili kuzuia matumizi mabaya, Binder imezuia ufikiaji wa baadhi ya rasilimali za wavuti. Hii inaweza kuzuia baadhi ya misimbo inayopakua mifano na/au seti za data kutoka mtandao wa umma kufanya kazi. Unaweza kuhitaji kutafuta njia mbadala. Pia, rasilimali za kompyuta zinazotolewa na Binder ni za msingi sana, kwa hivyo mafunzo yatakuwa polepole, hasa katika masomo magumu zaidi. -## Köra i molnet med GPU +## Kuendesha Mtandaoni na GPU -Vissa av de senare lektionerna i denna kursplan skulle dra stor nytta av GPU-stöd, eftersom träningen annars kommer att vara smärtsamt långsam. Det finns några alternativ du kan följa, särskilt om du har tillgång till molnet antingen genom [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste) eller genom din institution: +Baadhi ya masomo ya baadaye katika mtaala huu yatanufaika sana na msaada wa GPU, kwa sababu vinginevyo mafunzo yatakuwa ya polepole sana. Kuna chaguo chache unazoweza kufuata, hasa ikiwa una ufikiaji wa wingu kupitia [Azure for Students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-77998-cacaste), au kupitia taasisi yako: -* Skapa [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) och anslut till den via Jupyter. Du kan då klona repo direkt till maskinen och börja lära dig. NC-seriens virtuella maskiner har GPU-stöd. +* Unda [Data Science Virtual Machine](https://docs.microsoft.com/learn/modules/intro-to-azure-data-science-virtual-machine/?WT.mc_id=academic-77998-cacaste) na uunganishe nayo kupitia Jupyter. Unaweza kisha kunakili hifadhi moja kwa moja kwenye mashine, na kuanza kujifunza. Mashine za NC-series zina msaada wa GPU. -> **Obs!**: Vissa prenumerationer, inklusive Azure for Students, erbjuder inte GPU-stöd direkt. Du kan behöva begära ytterligare GPU-kärnor genom en teknisk supportförfrågan. +> **Note**: Baadhi ya usajili, ikiwa ni pamoja na Azure for Students, hazitoi msaada wa GPU moja kwa moja. Unaweza kuhitaji kuomba nyongeza ya cores za GPU kupitia ombi la msaada wa kiufundi. -* Skapa [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) och använd sedan Notebook-funktionen där. [Denna video](https://azure-for-academics.github.io/quickstart/azureml-papers/) visar hur man klonar ett repository till Azure ML-notebook och börjar använda det. +* Unda [Azure Machine Learning Workspace](https://azure.microsoft.com/services/machine-learning/?WT.mc_id=academic-77998-cacaste) na kisha utumie kipengele cha Notebook huko. [Video hii](https://azure-for-academics.github.io/quickstart/azureml-papers/) inaonyesha jinsi ya kunakili hifadhi kwenye daftari la Azure ML na kuanza kuitumia. -Du kan också använda Google Colab, som kommer med viss gratis GPU-stöd, och ladda upp Jupyter Notebooks dit för att köra dem en efter en. +Unaweza pia kutumia Google Colab, ambayo inakuja na msaada wa GPU wa bure, na kupakia Jupyter Notebooks huko ili kuzitekeleza moja baada ya nyingine. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/0-course-setup/setup.md b/translations/sw/lessons/0-course-setup/setup.md index 8ee08451..472c0044 100644 --- a/translations/sw/lessons/0-course-setup/setup.md +++ b/translations/sw/lessons/0-course-setup/setup.md @@ -1,45 +1,54 @@ -# Komma igång med denna läroplan + +# Kuanza na Mtaala Huu -## Är du student? +## Je, wewe ni mwanafunzi? -Börja med följande resurser: +Anza na rasilimali zifuatazo: -* [Student Hub-sidan](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) På denna sida hittar du nybörjarresurser, studentpaket och till och med sätt att få en gratis certifikatvoucher. Detta är en sida du vill bokmärka och kolla på då och då eftersom vi byter ut innehållet minst en gång i månaden. -* [Microsoft Student Learn-ambassadörer](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Gå med i en global gemenskap av studentambassadörer, detta kan vara din väg in i Microsoft. +* [Ukurasa wa Student Hub](https://docs.microsoft.com/learn/student-hub?WT.mc_id=academic-77998-cacaste) Kwenye ukurasa huu, utapata rasilimali za wanaoanza, vifurushi vya wanafunzi, na hata njia za kupata vocha ya cheti bila malipo. Huu ni ukurasa wa muhimu kuweka alama na kuangalia mara kwa mara kwani tunabadilisha maudhui angalau kila mwezi. +* [Microsoft Student Learn ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77998-cacaste) Jiunge na jumuiya ya kimataifa ya mabalozi wa wanafunzi, hii inaweza kuwa njia yako ya kuingia Microsoft. -**Studenter**, det finns flera sätt att använda läroplanen. Först och främst kan du bara läsa texten och titta på koden direkt på GitHub. Om du vill köra koden i någon av anteckningsböckerna - [läs våra instruktioner](./etc/how-to-run.md), och hitta mer råd om hur du gör det [i detta blogginlägg](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). +**Wanafunzi**, kuna njia kadhaa za kutumia mtaala huu. Kwanza kabisa, unaweza kusoma maandishi na kuangalia moja kwa moja msimbo kwenye GitHub. Ikiwa unataka kuendesha msimbo katika mojawapo ya daftari - [soma maelekezo yetu](./etc/how-to-run.md), na pata ushauri zaidi wa jinsi ya kufanya hivyo [katika chapisho hili la blogu](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). -> **Notera**: [Instruktioner om hur man kör koden i denna läroplan](/how-to-run.md) +> **Note**: [Maelekezo ya jinsi ya kuendesha msimbo katika mtaala huu](./how-to-run.md) -## Självstudier +## Kujisomea -Men om du vill ta kursen som ett självstudieprojekt, föreslår vi att du forklar hela repot till ditt eget GitHub-konto och slutför övningarna på egen hand eller med en grupp: +Hata hivyo, ikiwa ungependa kuchukua kozi hii kama mradi wa kujisomea, tunapendekeza uige repo nzima kwenye akaunti yako ya GitHub na ukamilishe mazoezi peke yako au na kikundi: -* Börja med ett quiz före föreläsningen. -* Läs introduktionstexten för föreläsningen. -* Om föreläsningen har ytterligare anteckningsböcker, gå igenom dem, läs och kör koden. Om både TensorFlow- och PyTorch-anteckningsböcker tillhandahålls, kan du fokusera på en av dem - välj ditt favoritramverk. -* Anteckningsböcker innehåller ofta några av de utmaningar som kräver att du justerar koden lite för att experimentera. -* Ta quizet efter föreläsningen. -* Om det finns ett laboratorium kopplat till modulen - slutför uppgiften. -* Besök [Diskussionsforumet](https://github.com/microsoft/AI-For-Beginners/discussions) för att "lära ut högt". +* Anza na jaribio la awali la somo. +* Soma maandishi ya utangulizi ya somo. +* Ikiwa somo lina daftari za ziada, pitia, ukisoma na kuendesha msimbo. Ikiwa daftari za TensorFlow na PyTorch zimetolewa, unaweza kuzingatia moja yao - chagua mfumo unaoupenda. +* Daftari mara nyingi zina changamoto zinazokuhitaji kurekebisha msimbo kidogo ili kujaribu. +* Fanya jaribio la baada ya somo. +* Ikiwa kuna maabara iliyounganishwa na moduli - kamilisha kazi hiyo. +* Tembelea [Bodi ya Majadiliano](https://github.com/microsoft/AI-For-Beginners/discussions) ili "kujifunza kwa sauti". -> För vidare studier rekommenderar vi att följa dessa [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) moduler och lärstigar. +> Kwa masomo zaidi, tunapendekeza kufuata [Microsoft Learn](https://docs.microsoft.com/en-us/users/dmitrysoshnikov-9132/collections/31zgizg2p418yo/?WT.mc_id=academic-77998-cacaste) moduli na njia za kujifunza. -**Lärare**, vi har [inkluderat några förslag](/for-teachers.md) på hur man använder denna läroplan. +**Walimu**, tumetoa [mapendekezo kadhaa](/for-teachers.md) ya jinsi ya kutumia mtaala huu. --- -## Pedagogik +## Pedagogia -Vi har valt två pedagogiska principer när vi byggde denna läroplan: att säkerställa att den är praktisk **projektbaserad** och att den inkluderar **frekventa quiz**. +Tumechagua kanuni mbili za kielimu wakati wa kuunda mtaala huu: kuhakikisha kuwa ni wa vitendo **unaotegemea miradi** na kwamba unajumuisha **maswali ya mara kwa mara**. -Genom att säkerställa att innehållet är kopplat till projekt, görs processen mer engagerande för studenterna och retentionen av koncept kommer att öka. Dessutom sätter ett lågriskquiz före en lektion intentionen för studenten att lära sig ett ämne, medan ett andra quiz efter lektionen säkerställer ytterligare retention. Denna läroplan är utformad för att vara flexibel och rolig och kan tas helt eller delvis. Projekten börjar små och blir alltmer komplexa i slutet av den 12 veckor långa cykeln. +Kwa kuhakikisha kuwa maudhui yanalingana na miradi, mchakato unakuwa wa kuvutia zaidi kwa wanafunzi na uhifadhi wa dhana utaongezeka. Aidha, jaribio la hatari ndogo kabla ya darasa huweka nia ya mwanafunzi kuelekea kujifunza mada, wakati jaribio la pili baada ya darasa linahakikisha uhifadhi zaidi. Mtaala huu uliundwa kuwa rahisi na wa kufurahisha na unaweza kuchukuliwa kwa ukamilifu au kwa sehemu. Miradi huanza kwa urahisi na kuwa ngumu zaidi mwishoni mwa mzunguko wa wiki 12. -> **En notering om quiz**: Alla quiz finns [i denna app](https://red-field-0a6ddfd03.1.azurestaticapps.net/), med totalt 50 quiz av tre frågor vardera. De är länkade från lektionerna, men quiz-appen kan köras lokalt; följ instruktionerna i `etc/quiz-app`-mappen. +> **Maelezo kuhusu maswali**: Maswali yote yamejumuishwa [katika programu hii](https://red-field-0a6ddfd03.1.azurestaticapps.net/), kwa jumla ya maswali 50 ya maswali matatu kila moja. Yameunganishwa kutoka ndani ya masomo lakini programu ya maswali inaweza kuendeshwa ndani ya nchi; fuata maelekezo katika folda ya `etc/quiz-app`. -## Offline-åtkomst +## Ufikiaji wa Nje ya Mtandao -Du kan köra denna dokumentation offline genom att använda [Docsify](https://docsify.js.org/#/). Forka detta repo, [installera Docsify](https://docsify.js.org/#/quickstart) på din lokala maskin, och skriv sedan `docsify serve` i `etc/docsify`-mappen i detta repo. Webbplatsen kommer att serveras på port 3000 på din localhost: `localhost:3000`. En pdf av läroplanen finns tillgänglig [på denna länk](../../../../../../etc/pdf/readme.pdf). +Unaweza kuendesha nyaraka hizi nje ya mtandao kwa kutumia [Docsify](https://docsify.js.org/#/). Ige repo hii, [sakinisha Docsify](https://docsify.js.org/#/quickstart) kwenye mashine yako ya ndani, kisha kwenye folda kuu ya repo hii, andika `docsify serve`. Tovuti itahudumiwa kwenye bandari 3000 kwenye localhost yako: `localhost:3000`. Pdf ya mtaala inapatikana [katika kiungo hiki](../../../../../../../../../etc/pdf/readme.pdf). -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/1-Intro/README.md b/translations/sw/lessons/1-Intro/README.md index 6ee9c146..4e82e496 100644 --- a/translations/sw/lessons/1-Intro/README.md +++ b/translations/sw/lessons/1-Intro/README.md @@ -1,38 +1,66 @@ -> Bild av Dmitry Soshnikov, [foto](https://unsplash.com/photos/r8LmVbUKgns) av [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -## Senaste AI-forskningen +Kadri muda ulivyopita, rasilimali za kompyuta zimekuwa nafuu, na data zaidi imepatikana, hivyo mbinu za mitandao ya neva zimeanza kuonyesha utendaji mzuri katika kushindana na binadamu katika maeneo mengi, kama vile kuona kwa kompyuta au kuelewa sauti. Katika muongo uliopita, neno Akili Bandia limekuwa likitumika zaidi kama jina la mitandao ya neva, kwa sababu mafanikio mengi ya AI tunayoyasikia yanatokana na teknolojia hii. -Den enorma tillväxten inom forskningen om neurala nätverk började runt 2010, när stora offentliga datamängder började bli tillgängliga. En stor samling av bilder kallad [ImageNet](https://en.wikipedia.org/wiki/ImageNet), som innehåller omkring 14 miljoner annoterade bilder, gav upphov till [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). +Tunaweza kuona jinsi mbinu zilivyobadilika, kwa mfano, katika kuunda programu ya kompyuta inayocheza chess: -![ILSVRC Noggrannhet](../../../../lessons/1-Intro/images/ilsvrc.gif) +* Programu za chess za awali zilitegemea utafutaji – programu ilijaribu kwa makusudi kutathmini hatua zinazowezekana za mpinzani kwa idadi fulani ya hatua zijazo, na kuchagua hatua bora kulingana na nafasi bora inayoweza kufikiwa katika hatua chache. Hii ilisababisha maendeleo ya [algorithimu ya alpha-beta pruning](https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning). +* Mikakati ya utafutaji hufanya kazi vizuri mwishoni mwa mchezo, ambapo nafasi ya utafutaji imepunguzwa na idadi ndogo ya hatua zinazowezekana. Hata hivyo, mwanzoni mwa mchezo, nafasi ya utafutaji ni kubwa, na algorithimu inaweza kuboreshwa kwa kujifunza kutoka kwa mechi zilizopo kati ya wachezaji wa binadamu. Majaribio ya baadaye yalitumia [case-based reasoning](https://en.wikipedia.org/wiki/Case-based_reasoning), ambapo programu ilitafuta kesi katika hifadhidata zinazofanana sana na nafasi ya sasa katika mchezo. +* Programu za kisasa zinazoshinda wachezaji wa binadamu zinategemea mitandao ya neva na [ujifunzaji wa kuimarisha](https://en.wikipedia.org/wiki/Reinforcement_learning), ambapo programu hujifunza kucheza kwa kucheza muda mrefu dhidi ya yenyewe na kujifunza kutokana na makosa yake – kama vile binadamu wanavyofanya wanapojifunza kucheza chess. Hata hivyo, programu ya kompyuta inaweza kucheza michezo mingi zaidi kwa muda mfupi, na hivyo kujifunza haraka zaidi. -> Bild av [Dmitry Soshnikov](http://soshnikov.com) -In 2012, [Convolutional Neural Networks](../4-ComputerVision/07-ConvNets/README.md) användes först för bildklassificering, vilket ledde till en betydande minskning av klassificeringsfel (från nästan 30% till 16.4%). År 2015 uppnådde ResNet-arkitekturen från Microsoft Research [mänsklig noggrannhet](https://doi.org/10.1109/ICCV.2015.123). +✅ Fanya utafiti kidogo kuhusu michezo mingine ambayo AI imecheza. -Sedan dess har neurala nätverk visat mycket framgångsrikt beteende i många uppgifter: +Vivyo hivyo, tunaweza kuona jinsi mbinu za kuunda programu za "kuongea" (ambazo zinaweza kupita mtihani wa Turing) zilivyobadilika: + +* Programu za awali za aina hii kama [Eliza](https://en.wikipedia.org/wiki/ELIZA), zilitegemea sheria rahisi za kisarufi na kuunda upya sentensi ya pembejeo kuwa swali. +* Wasaidizi wa kisasa, kama Cortana, Siri au Google Assistant ni mifumo mseto inayotumia mitandao ya neva kubadilisha sauti kuwa maandishi na kutambua nia yetu, kisha kutumia baadhi ya mantiki au algorithimu za wazi kutekeleza vitendo vinavyohitajika. +* Katika siku zijazo, tunaweza kutarajia mfano kamili wa msingi wa neva kushughulikia mazungumzo yenyewe. Familia ya mitandao ya neva ya hivi karibuni kama GPT na [Turing-NLG](https://turing.microsoft.com/) inaonyesha mafanikio makubwa katika hili. + +> Picha na Dmitry Soshnikov, [picha](https://unsplash.com/photos/r8LmVbUKgns) na [Marina Abrosimova](https://unsplash.com/@abrosimova_marina_foto), Unsplash + +## Utafiti wa Hivi Karibuni wa AI + +Ukuaji mkubwa wa hivi karibuni katika utafiti wa mitandao ya neva ulianza karibu mwaka 2010, wakati seti kubwa za data za umma zilipoanza kupatikana. Mkusanyiko mkubwa wa picha unaoitwa [ImageNet](https://en.wikipedia.org/wiki/ImageNet), ambao una takriban picha milioni 14 zilizo na maelezo, ulizaa [ImageNet Large Scale Visual Recognition Challenge](https://image-net.org/challenges/LSVRC/). + +![Usahihi wa ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Picha na [Dmitry Soshnikov](http://soshnikov.com) + +Mnamo 2012, [Mitandao ya Neva ya Convolutional](../4-ComputerVision/07-ConvNets/README.md) ilitumiwa kwa mara ya kwanza katika uainishaji wa picha, jambo ambalo lilisababisha kupungua kwa makosa ya uainishaji (kutoka karibu 30% hadi 16.4%). Mnamo 2015, usanifu wa ResNet kutoka Microsoft Research [ulifanikisha usahihi wa kiwango cha binadamu](https://doi.org/10.1109/ICCV.2015.123). + +Tangu wakati huo, Mitandao ya Neva imeonyesha mafanikio makubwa katika kazi nyingi: --- -År | Mänsklig paritet uppnådd +Mwaka | Usawa wa Binadamu ulifanikishwa -----|-------- -2015 | [Bildklassificering](https://doi.org/10.1109/ICCV.2015.123) -2016 | [Konverserande taligenkänning](https://arxiv.org/abs/1610.05256) -2018 | [Automatisk maskinöversättning](https://arxiv.org/abs/1803.05567) (kinesiska till engelska) -2020 | [Bildtextning](https://arxiv.org/abs/2009.13682) +2015 | [Uainishaji wa Picha](https://doi.org/10.1109/ICCV.2015.123) +2016 | [Utambuzi wa Hotuba ya Mazungumzo](https://arxiv.org/abs/1610.05256) +2018 | [Tafsiri ya Mashine ya Kiotomatiki](https://arxiv.org/abs/1803.05567) (Kutoka Kichina hadi Kiingereza) +2020 | [Uwekaji Maelezo ya Picha](https://arxiv.org/abs/2009.13682) -Under de senaste åren har vi bevittnat stora framgångar med stora språkmodeller, såsom BERT och GPT-3. Detta har främst skett på grund av att det finns mycket allmän textdata tillgänglig som gör att vi kan träna modeller för att fånga strukturen och betydelsen av texter, förtränka dem på allmänna textsamlingar och sedan specialisera dessa modeller för mer specifika uppgifter. Vi kommer att lära oss mer om [Natural Language Processing](../5-NLP/README.md) senare i den här kursen. +Katika miaka michache iliyopita tumeshuhudia mafanikio makubwa na mifano mikubwa ya lugha, kama BERT na GPT-3. Hii ilitokea hasa kwa sababu kuna data nyingi za maandishi ya jumla zinazopatikana ambazo zinaturuhusu kufundisha mifano ili kunasa muundo na maana ya maandishi, kuifundisha awali kwenye mkusanyiko wa maandishi ya jumla, na kisha kuiboresha kwa kazi maalum zaidi. Tutajifunza zaidi kuhusu [Usindikaji wa Lugha Asilia](../5-NLP/README.md) baadaye katika kozi hii. -## 🚀 Utmaning +## 🚀 Changamoto -Gör en rundtur på internet för att avgöra var, enligt din åsikt, AI används mest effektivt. Är det i en kartapp, eller någon tjänst för tal-till-text eller ett videospel? Forskning om hur systemet byggdes. +Fanya ziara ya mtandao ili kubaini wapi, kwa maoni yako, AI inatumiwa kwa ufanisi zaidi. Je, ni katika programu ya Ramani, huduma ya hotuba-kwa-maandishi, au mchezo wa video? Tafiti jinsi mfumo ulivyojengwa. -## [Quiz efter föreläsningen](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) +## [Maswali ya Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/201) -## Granskning & Självstudie +## Mapitio na Kujisomea -Granska historien om AI och ML genom att läsa [denna lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Ta ett element från sketchnoten högst upp i den lektionen eller denna och undersök det mer ingående för att förstå den kulturella kontext som informerar dess utveckling. +Pitia historia ya AI na ML kwa kusoma [somo hili](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/2-history-of-ML). Chukua kipengele kutoka kwenye sketchnote mwanzoni mwa somo hilo au hili na kifanyie utafiti kwa kina ili kuelewa muktadha wa kitamaduni unaoathiri mageuzi yake. -**Uppgift**: [Game Jam](assignment.md) +**Kazi**: [Game Jam](assignment.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/1-Intro/assignment.md b/translations/sw/lessons/1-Intro/assignment.md index f9bc851e..ff2b3bd9 100644 --- a/translations/sw/lessons/1-Intro/assignment.md +++ b/translations/sw/lessons/1-Intro/assignment.md @@ -1,6 +1,15 @@ + # Game Jam -Spel är ett område som har påverkats kraftigt av utvecklingen inom AI och ML. I denna uppgift, skriv ett kort papper om ett spel som du gillar och som har påverkats av AI:s evolution. Det bör vara ett tillräckligt gammalt spel för att ha påverkats av flera typer av databehandlingssystem. Ett bra exempel är Schack eller Go, men ta även en titt på videospel som pong eller Pac-Man. Skriv en uppsats som diskuterar spelets förflutna, nutid och AI:s framtid. +Michezo ni eneo ambalo limeathiriwa sana na maendeleo ya AI na ML. Katika kazi hii, andika karatasi fupi kuhusu mchezo unaoupenda ambao umeathiriwa na mageuzi ya AI. Unapaswa kuwa mchezo wa zamani wa kutosha kuathiriwa na aina kadhaa za mifumo ya usindikaji wa kompyuta. Mfano mzuri ni Chess au Go, lakini pia angalia michezo ya video kama pong au Pac-Man. Andika insha inayojadili historia ya mchezo huo, hali yake ya sasa, na mustakabali wake wa AI. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/2-Symbolic/README.md b/translations/sw/lessons/2-Symbolic/README.md index af17f07d..ada28db3 100644 --- a/translations/sw/lessons/2-Symbolic/README.md +++ b/translations/sw/lessons/2-Symbolic/README.md @@ -1,107 +1,114 @@ -# Kunskapsrepresentation och Expert System + +# Uwakilishi wa Maarifa na Mifumo ya Wataalamu -![Sammanfattning av Symbolisk AI-innehåll](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png) +![Muhtasari wa maudhui ya AI ya Kimaandishi](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.sw.png) -> Sketchnote av [Tomomi Imura](https://twitter.com/girlie_mac) +> Sketchnote na [Tomomi Imura](https://twitter.com/girlie_mac) -Jakten på artificiell intelligens baseras på en strävan efter kunskap, för att förstå världen på ett sätt som liknar hur människor gör. Men hur går man tillväga för att uppnå detta? +Utafutaji wa akili bandia unategemea kutafuta maarifa, ili kuelewa dunia kama binadamu wanavyofanya. Lakini unaweza kufanikisha hili vipi? -## [Förläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/102) -I AI:s tidiga dagar var den topp-ner-ansatsen för att skapa intelligenta system (diskuterad i den föregående lektionen) populär. Idén var att extrahera kunskap från människor till en maskinläsbar form och sedan använda den för att automatiskt lösa problem. Denna metod baserades på två stora idéer: +Katika siku za mwanzo za AI, mbinu ya juu-chini ya kuunda mifumo yenye akili (ilijadiliwa katika somo lililopita) ilikuwa maarufu. Wazo lilikuwa ni kutoa maarifa kutoka kwa watu katika mfumo unaoweza kusomeka na mashine, na kisha kuyatumia kutatua matatizo kiotomatiki. Mbinu hii ilitegemea mawazo mawili makubwa: -* Kunskapsrepresentation -* Resonemang +* Uwakilishi wa Maarifa +* Utoaji wa Sababu -## Kunskapsrepresentation +## Uwakilishi wa Maarifa -Ett av de viktiga koncepten inom Symbolisk AI är **kunskap**. Det är viktigt att särskilja kunskap från *information* eller *data*. Till exempel kan man säga att böcker innehåller kunskap, eftersom man kan studera böcker och bli expert. Vad böcker innehåller kallas faktiskt *data*, och genom att läsa böcker och integrera dessa data i vår världsmodell omvandlar vi dessa data till kunskap. +Moja ya dhana muhimu katika AI ya Kimaandishi ni **maarifa**. Ni muhimu kutofautisha maarifa na *taarifa* au *data*. Kwa mfano, mtu anaweza kusema kwamba vitabu vina maarifa, kwa sababu mtu anaweza kusoma vitabu na kuwa mtaalamu. Hata hivyo, kile kilicho kwenye vitabu kinaitwa *data*, na kwa kusoma vitabu na kuunganisha data hii katika mfano wetu wa dunia tunabadilisha data hii kuwa maarifa. -> ✅ **Kunskap** är något som finns i vårt huvud och representerar vår förståelse av världen. Den erhålls genom en aktiv **inlärnings**process, som integrerar bitar av information som vi får in i vår aktiva modell av världen. +> ✅ **Maarifa** ni kitu kilicho ndani ya akili zetu na kinawakilisha uelewa wetu wa dunia. Kinapatikana kupitia mchakato wa **kujifunza** kwa bidii, ambao huunganisha vipande vya taarifa tunazopokea katika mfano wetu hai wa dunia. -Ofta definierar vi inte strikt kunskap, utan vi kopplar den till andra relaterade koncept med hjälp av [DIKW-pyramiden](https://en.wikipedia.org/wiki/DIKW_pyramid). Den innehåller följande koncept: +Mara nyingi, hatufafanui maarifa kwa ukali, lakini tunalinganisha na dhana nyingine zinazohusiana kwa kutumia [Piramidi ya DIKW](https://en.wikipedia.org/wiki/DIKW_pyramid). Inajumuisha dhana zifuatazo: -* **Data** är något som representeras i fysiska medier, såsom skriven text eller talade ord. Data existerar oberoende av människor och kan överföras mellan personer. -* **Information** är hur vi tolkar data i vårt huvud. Till exempel, när vi hör ordet *dator*, har vi en viss förståelse av vad det är. -* **Kunskap** är information som integreras i vår världsmodell. Till exempel, när vi väl har lärt oss vad en dator är, börjar vi få idéer om hur den fungerar, hur mycket den kostar och vad den kan användas till. Detta nätverk av relaterade koncept formar vår kunskap. -* **Visdom** är ytterligare en nivå av vår förståelse av världen, och den representerar *meta-kunskap*, dvs. en viss uppfattning om hur och när kunskapen bör användas. +* **Data** ni kitu kinachowakilishwa katika vyombo vya kimwili, kama maandishi yaliyoandikwa au maneno yaliyosemwa. Data ipo bila kujali uwepo wa binadamu na inaweza kupitishwa kati ya watu. +* **Taarifa** ni jinsi tunavyotafsiri data katika akili zetu. Kwa mfano, tunaposikia neno *kompyuta*, tunakuwa na uelewa fulani wa kile ilivyo. +* **Maarifa** ni taarifa zinazounganishwa katika mfano wetu wa dunia. Kwa mfano, mara tu tunapojifunza kompyuta ni nini, tunaanza kuwa na mawazo kuhusu jinsi inavyofanya kazi, gharama yake, na matumizi yake. Mtandao huu wa dhana zinazohusiana huunda maarifa yetu. +* **Hekima** ni kiwango kingine cha uelewa wetu wa dunia, na kinawakilisha *maarifa ya juu*, yaani, dhana fulani kuhusu jinsi na wakati maarifa yanapaswa kutumika. - +*Picha [kutoka Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), Na Longlivetheux - Kazi ya Kibinafsi, CC BY-SA 4.0* -*Bild [från Wikipedia](https://commons.wikimedia.org/w/index.php?curid=37705247), av Longlivetheux - Eget arbete, CC BY-SA 4.0* +Kwa hivyo, tatizo la **uwakilishi wa maarifa** ni kutafuta njia bora ya kuwakilisha maarifa ndani ya kompyuta katika mfumo wa data, ili yaweze kutumika kiotomatiki. Hili linaweza kuonekana kama wigo: -Således är problemet med **kunskapsrepresentation** att hitta ett effektivt sätt att representera kunskap inuti en dator i form av data, för att göra den automatiskt användbar. Detta kan ses som ett spektrum: +![Wigo wa uwakilishi wa maarifa](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png) -![Kunskapsrepresentationsspektrum](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.sw.png) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +* Kushoto, kuna aina rahisi sana za uwakilishi wa maarifa ambazo zinaweza kutumika kwa ufanisi na kompyuta. Rahisi zaidi ni ya kialgorithimu, ambapo maarifa yanawakilishwa na programu ya kompyuta. Hii, hata hivyo, si njia bora ya kuwakilisha maarifa, kwa sababu si rahisi kubadilika. Maarifa ndani ya akili zetu mara nyingi si ya kialgorithimu. +* Kulia, kuna uwakilishi kama maandishi ya asili. Ni yenye nguvu zaidi, lakini haiwezi kutumika kwa utoaji wa sababu kiotomatiki. -* Till vänster finns mycket enkla typer av kunskapsrepresentationer som kan användas effektivt av datorer. Den enklaste är algoritmisk, när kunskap representeras av ett datorprogram. Detta är dock inte det bästa sättet att representera kunskap, eftersom det inte är flexibelt. Kunskap i vårt huvud är ofta icke-algoritmisk. -* Till höger finns representationer såsom naturlig text. Det är den mest kraftfulla, men kan inte användas för automatisk resonemang. +> ✅ Fikiria kwa dakika moja jinsi unavyowakilisha maarifa katika akili yako na kuyabadilisha kuwa maelezo. Je, kuna muundo fulani unaokufaa kusaidia kukumbuka? -> ✅ Tänk en minut på hur du representerar kunskap i ditt huvud och omvandlar den till anteckningar. Finns det ett särskilt format som fungerar bra för dig för att underlätta retention? +## Uainishaji wa Uwakilishi wa Maarifa ya Kompyuta -## Klassificering av datorers kunskapsrepresentationer +Tunaweza kuainisha mbinu tofauti za uwakilishi wa maarifa ya kompyuta katika makundi yafuatayo: -Vi kan klassificera olika metoder för kunskapsrepresentation i datorer i följande kategorier: +* **Uwakilishi wa mtandao** unategemea ukweli kwamba tuna mtandao wa dhana zinazohusiana ndani ya akili zetu. Tunaweza kujaribu kuunda mitandao sawa kama grafu ndani ya kompyuta - mtandao wa **semantic**. -* **Nätverksrepresentationer** baseras på det faktum att vi har ett nätverk av relaterade koncept i vårt huvud. Vi kan försöka återskapa samma nätverk som en graf inuti en dator - ett så kallat **semantiskt nätverk**. +1. **Triplets za Kitu-Sifa-Thamani** au **jozi za sifa-thamani**. Kwa kuwa grafu inaweza kuwakilishwa ndani ya kompyuta kama orodha ya nodi na kingo, tunaweza kuwakilisha mtandao wa semantic kwa orodha ya triplets, zinazojumuisha vitu, sifa, na thamani. Kwa mfano, tunajenga triplets zifuatazo kuhusu lugha za programu: -1. **Objekt-Attribut-Värde-trippel** eller **attribut-värde-par**. Eftersom en graf kan representeras inuti en dator som en lista av noder och kanter, kan vi representera ett semantiskt nätverk med en lista av trippel, som innehåller objekt, attribut och värden. Till exempel bygger vi följande trippel om programmeringsspråk: +Kitu | Sifa | Thamani +-----|------|------- +Python | ni | Lugha Isiyo na Aina +Python | ilivumbuliwa-na | Guido van Rossum +Python | syntax ya block | indentation +Lugha Isiyo na Aina | haina | ufafanuzi wa aina -Objekt | Attribut | Värde --------|-----------|------ -Python | är | Otypad-Språk -Python | uppfunnen-av | Guido van Rossum -Python | block-syntax | indentering -Otypad-Språk | har inte | typdefinitioner +> ✅ Fikiria jinsi triplets zinavyoweza kutumika kuwakilisha aina nyingine za maarifa. -> ✅ Tänk på hur trippel kan användas för att representera andra typer av kunskap. +2. **Uwakilishi wa kihierarkia** unasisitiza ukweli kwamba mara nyingi tunaunda hierarkia ya vitu ndani ya akili zetu. Kwa mfano, tunajua kwamba kanari ni ndege, na ndege wote wana mabawa. Pia tuna wazo fulani kuhusu rangi ya kanari kawaida, na kasi yao ya kuruka. -2. **Hierarkiska representationer** betonar det faktum att vi ofta skapar en hierarki av objekt i vårt huvud. Till exempel vet vi att en kanariefågel är en fågel, och alla fåglar har vingar. Vi har också en viss uppfattning om vilken färg en kanariefågel vanligtvis har, och vad deras flyghastighet är. - - - **Ramrepresentation** baseras på att representera varje objekt eller klass av objekt som en **ram** som innehåller **platser**. Platser har möjliga standardvärden, värdebegränsningar eller lagrade procedurer som kan anropas för att få värdet av en plats. Alla ramar bildar en hierarki liknande en objektshierarki i objektorienterade programmeringsspråk. - - **Scenarier** är en speciell typ av ramar som representerar komplexa situationer som kan utvecklas över tid. + - **Uwakilishi wa fremu** unategemea kuwakilisha kila kitu au darasa la vitu kama **fremu** inayojumuisha **slots**. Slots zinaweza kuwa na thamani za default, vizuizi vya thamani, au taratibu zilizohifadhiwa ambazo zinaweza kuitwa kupata thamani ya slot. Fremu zote zinaunda hierarkia sawa na hierarkia ya vitu katika lugha za programu za kielekezi. + - **Matukio** ni aina maalum ya fremu zinazowakilisha hali ngumu zinazoweza kutokea kwa muda. **Python** -Plats | Värde | Standardvärde | Intervall | ------|-------|---------------|----------| -Namn | Python | | | -Är-En | Otypad-Språk | | | -Variabelnamn | | CamelCase | | -Programlängd | | | 5-5000 rader | -Blocksyntax | Indent | | | +Slot | Thamani | Thamani ya Default | Kipindi +-----|--------|--------------------|-------- +Jina | Python | | +Ni-A | Lugha Isiyo na Aina | | +Kesi ya Kigezo | | CamelCase | +Urefu wa Programu | | | mistari 5-5000 +Syntax ya Block | Indent | | -3. **Procedurala representationer** baseras på att representera kunskap genom en lista av åtgärder som kan utföras när ett visst villkor inträffar. - - Produktionsregler är om-så uttalanden som tillåter oss att dra slutsatser. Till exempel kan en läkare ha en regel som säger att **OM** en patient har hög feber **ELLER** hög nivå av C-reaktivt protein i blodprovet **SÅ** har han en inflammation. När vi stöter på ett av villkoren kan vi dra en slutsats om inflammation, och sedan använda den i vidare resonemang. - - Algoritmer kan betraktas som en annan form av procedural representation, även om de nästan aldrig används direkt i kunskapsbaserade system. +3. **Uwakilishi wa kiutaratibu** unategemea kuwakilisha maarifa kwa orodha ya vitendo vinavyoweza kutekelezwa wakati hali fulani inatokea. + - Sheria za uzalishaji ni kauli za ikiwa-basi zinazoturuhusu kutoa hitimisho. Kwa mfano, daktari anaweza kuwa na sheria inayosema kwamba **IWAPO** mgonjwa ana homa kali **AU** kiwango cha juu cha protini ya C-reactive katika kipimo cha damu **BASI** ana uvimbe. Mara tu tunapokutana na mojawapo ya hali hizo, tunaweza kufanya hitimisho kuhusu uvimbe, na kisha kuitumia katika utoaji wa sababu zaidi. + - Algorithms zinaweza kuchukuliwa kama aina nyingine ya uwakilishi wa kiutaratibu, ingawa karibu hazitumiki moja kwa moja katika mifumo inayotegemea maarifa. -4. **Logik** föreslogs ursprungligen av Aristoteles som ett sätt att representera universell mänsklig kunskap. - - Predikatlogik som en matematisk teori är för rik för att vara beräkningsbar, därför används normalt en delmängd av den, såsom Horn-klausuler som används i Prolog. - - Beskrivande logik är en familj av logiska system som används för att representera och resonera om hierarkier av objekt i distribuerade kunskapsrepresentationer som *semantiskt web*. +4. **Mantiki** ilipendekezwa awali na Aristotle kama njia ya kuwakilisha maarifa ya binadamu ya ulimwengu. + - Mantiki ya Prediketi kama nadharia ya hisabati ni tajiri sana kiasi kwamba haiwezi kuhesabiwa, kwa hivyo subset fulani ya hiyo kawaida hutumiwa, kama vile Horn clauses zinazotumiwa katika Prolog. + - Mantiki ya Maelezo ni familia ya mifumo ya kimantiki inayotumiwa kuwakilisha na kutoa sababu kuhusu hierarkia ya vitu na uwakilishi wa maarifa uliosambazwa kama *semantic web*. -## Expert System +## Mifumo ya Wataalamu -En av de tidiga framgångarna för symbolisk AI var så kallade **expertsystem** - datorsystem som var designade för att agera som en expert inom ett begränsat problemområde. De baserades på en **kunskapsbas** som extraherades från en eller flera mänskliga experter, och de innehöll en **slutledningsmotor** som utförde resonemang ovanpå den. +Moja ya mafanikio ya awali ya AI ya kimaandishi yalikuwa mifumo ya **wataalamu** - mifumo ya kompyuta iliyoundwa kufanya kazi kama mtaalamu katika eneo fulani la tatizo lililopunguzwa. Ilitegemea **hifadhidata ya maarifa** iliyotolewa kutoka kwa mtaalamu mmoja au zaidi wa binadamu, na ilijumuisha **injini ya utoaji wa sababu** ambayo ilifanya utoaji wa sababu juu yake. -![Mänsklig Arkitektur](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sw.png) | ![Kunskapsbaserat System](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sw.png) ----------------------------------------------|------------------------------------------------ -Förenklad struktur av ett mänskligt neuralt system | Arkitektur av ett kunskapsbaserat system +![Muundo wa Binadamu](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.sw.png) | ![Mfumo Unaotegemea Maarifa](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.sw.png) +---------------------------------------------|------------------------------------------------ +Muundo rahisi wa mfumo wa neva wa binadamu | Muundo wa mfumo unaotegemea maarifa -Expertsystem byggs som det mänskliga resonemangssystemet, som innehåller **korttidsminne** och **långtidsminne**. På liknande sätt särskiljer vi i kunskapsbaserade system följande komponenter: +Mifumo ya wataalamu imejengwa kama mfumo wa utoaji wa sababu wa binadamu, ambao unajumuisha **kumbukumbu ya muda mfupi** na **kumbukumbu ya muda mrefu**. Vivyo hivyo, katika mifumo inayotegemea maarifa tunatofautisha vipengele vifuatavyo: -* **Problemminne**: innehåller kunskap om det problem som för närvarande löses, dvs. temperaturen eller blodtrycket hos en patient, om han har inflammation eller inte, etc. Denna kunskap kallas också **statisk kunskap**, eftersom den innehåller en ögonblicksbild av vad vi för närvarande vet om problemet - det så kallade *problemstatus*. -* **Kunskapsbas**: representerar långsiktig kunskap om ett problemområde. Den extraheras manuellt från mänskliga experter och förändras inte från konsultation till konsultation. Eftersom den tillåter oss att navigera från ett problemstatus till ett annat, kallas den också **dynamisk kunskap**. -* **Slutledningsmotor**: orkestrerar hela processen av sökning i problemstatusens rum, ställer frågor till användaren när det är nödvändigt. Den är också ansvarig för att hitta rätt regler som ska tillämpas på varje status. +* **Kumbukumbu ya tatizo**: inajumuisha maarifa kuhusu tatizo linalosuluhishwa kwa sasa, yaani, joto au shinikizo la damu la mgonjwa, ikiwa ana uvimbe au la, nk. Maarifa haya pia yanaitwa **maarifa tuli**, kwa sababu yanajumuisha picha ya kile tunachojua kwa sasa kuhusu tatizo - hali inayoitwa *hali ya tatizo*. +* **Hifadhidata ya maarifa**: inawakilisha maarifa ya muda mrefu kuhusu eneo la tatizo. Inatolewa kwa mikono kutoka kwa wataalamu wa binadamu, na haibadiliki kutoka ushauri mmoja hadi mwingine. Kwa sababu inaturuhusu kuzunguka kutoka hali moja ya tatizo hadi nyingine, pia inaitwa **maarifa yenye nguvu**. +* **Injini ya utoaji wa sababu**: inaendesha mchakato mzima wa kutafuta katika nafasi ya hali ya tatizo, kuuliza maswali kwa mtumiaji inapohitajika. Pia inawajibika kwa kutafuta sheria sahihi za kutumika kwa kila hali. -Som ett exempel, låt oss överväga följande expertsystem för att bestämma ett djur baserat på dess fysiska egenskaper: +Kwa mfano, hebu tuchunguze mfumo wa wataalamu wa kuamua mnyama kulingana na sifa zake za kimwili: -![AND-OR Träd](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png) +![Mti wa AND-OR](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.sw.png) -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -Detta diagram kallas ett **AND-OR-träd**, och det är en grafisk representation av en uppsättning produktionsregler. Att rita ett träd är användbart i början av kunskapsutvinning från experten. För att representera kunskapen inuti datorn är det mer bekvämt att använda regler: +Mchoro huu unaitwa **mti wa AND-OR**, na ni uwakilishi wa kielelezo wa seti ya sheria za uzalishaji. Kuchora mti ni muhimu mwanzoni mwa kutoa maarifa kutoka kwa mtaalamu. Ili kuwakilisha maarifa ndani ya kompyuta ni rahisi zaidi kutumia sheria: ``` IF the animal eats meat @@ -112,59 +119,57 @@ OR (animal has sharp teeth THEN the animal is a carnivore ``` -Du kan märka att varje villkor på vänster sida av regeln och åtgärden i grunden är objekt-attribut-värde (OAV) trippel. **Arbetsminnet** innehåller uppsättningen av OAV-trippel som motsvarar det problem som för närvarande löses. En **regelmotor** letar efter regler vars villkor är uppfyllda och tillämpar dem, vilket lägger till en annan trippel till arbetsminnet. +Unaweza kugundua kwamba kila hali upande wa kushoto wa sheria na kitendo ni kimsingi triplets za kitu-sifa-thamani (OAV). **Kumbukumbu ya kazi** inajumuisha seti ya triplets za OAV zinazolingana na tatizo linalosuluhishwa kwa sasa. **Injini ya sheria** hutafuta sheria ambazo hali yake imetimizwa na kuzitumia, ikiongeza triplet nyingine kwenye kumbukumbu ya kazi. -> ✅ Rita ditt eget AND-OR-träd om ett ämne du gillar! +> ✅ Andika mti wako wa AND-OR kuhusu mada unayoipenda! -### Framåt vs. Bakåt Slutledning +### Utoaji wa Sababu wa Mbele vs. Nyuma -Processen som beskrivs ovan kallas **framåt slutledning**. Den börjar med viss initial data om problemet som finns i arbetsminnet, och utför sedan följande resonemangsslinga: +Mchakato ulioelezwa hapo juu unaitwa **utoaji wa sababu wa mbele**. Unaanzia na data fulani ya awali kuhusu tatizo inayopatikana katika kumbukumbu ya kazi, na kisha kutekeleza mzunguko wa utoaji wa sababu ufuatao: -1. Om det målattributet finns i arbetsminnet - stoppa och ge resultatet -2. Leta efter alla regler vars villkor för närvarande är uppfyllda - erhåll **konfliktuppsättning** av regler. -3. Utför **konfliktlösning** - välj en regel som ska utföras i detta steg. Det kan finnas olika strategier för konfliktlösning: - - Välj den första tillämpliga regeln i kunskapsbasen - - Välj en slumpmässig regel - - Välj en *mer specifik* regel, dvs. den som uppfyller flest villkor på "vänster sida" (LHS) -4. Tillämpa vald regel och sätt in en ny kunskapsbit i problemstatus -5. Upprepa från steg 1. +1. Ikiwa sifa lengwa ipo katika kumbukumbu ya kazi - simama na toa matokeo +2. Tafuta sheria zote ambazo hali yake imetimizwa kwa sasa - pata **seti ya migogoro** ya sheria. +3. Fanya **azimio la migogoro** - chagua sheria moja ambayo itatekelezwa katika hatua hii. Kunaweza kuwa na mikakati tofauti ya azimio la migogoro: + - Chagua sheria ya kwanza inayotumika katika hifadhidata ya maarifa + - Chagua sheria ya nasibu + - Chagua sheria *maalum zaidi*, yaani, ile inayokidhi hali nyingi zaidi upande wa "kushoto" (LHS) +4. Tumia sheria iliyochaguliwa na ingiza kipande kipya cha maarifa katika hali ya tatizo +5. Rudia kutoka hatua ya 1. -Men i vissa fall kanske vi vill börja med en tom kunskap om problemet och ställa frågor som hjälper oss att nå en slutsats. Till exempel, när vi gör medicinska diagnoser, utför vi vanligtvis inte alla medicinska analyser i förväg innan vi börjar diagnostisera patienten. Vi vill hellre utföra analyser när ett beslut behöver fattas. +Hata hivyo, katika baadhi ya matukio tunaweza kutaka kuanza na maarifa tupu kuhusu tatizo, na kuuliza maswali ambayo yatatusaidia kufikia hitimisho. Kwa mfano, wakati wa kufanya uchunguzi wa matibabu, kwa kawaida hatufanyi uchambuzi wote wa matibabu mapema kabla ya kuanza kumchunguza mgonjwa. Badala yake, tunataka kufanya uchambuzi wakati uamuzi unahitaji kufanywa. -Denna process kan modelleras med hjälp av **bakåt slutledning**. Den drivs av **målet** - det attributvärde som vi letar efter: +Mchakato huu unaweza kuigwa kwa kutumia **utoaji wa sababu wa nyuma**. Unasukumwa na **lengo** - thamani ya sifa tunayotafuta: -1. Välj alla regler som kan ge oss värdet av ett mål (dvs. med målet på RHS ("höger sida")) - en konfliktuppsättning -1. Om det inte finns några regler för detta attribut, eller det finns en regel som säger att vi ska fråga användaren om värdet - fråga efter det, annars: -1. Använd konfliktlösningsstrategin för att välja en regel som vi kommer att använda som *hypotes* - vi kommer att försöka bevisa den -1. Återkommande upprepa processen för alla attribut i LHS av regeln, och försöka bevisa dem som mål -1. Om processen misslyckas vid något tillfälle - använd en annan regel i steg 3. +1. Chagua sheria zote zinazoweza kutupa thamani ya lengo (yaani, na lengo upande wa RHS ("upande wa kulia")) - seti ya migogoro +1. Ikiwa hakuna sheria kwa sifa hii, au kuna sheria inayosema kwamba tunapaswa kuuliza thamani kutoka kwa mtumiaji - uliza, vinginevyo: +1. Tumia mkakati wa azimio la migogoro kuchagua sheria moja ambayo tutatumia kama *dhana* - tutajaribu kuithibitisha +1. Rudia mchakato kwa sifa zote katika LHS ya sheria, tukijaribu kuzithibitisha kama malengo +1. Ikiwa wakati wowote mchakato unashindwa - tumia sheria nyingine katika hatua ya 3. -> ✅ I vilka situationer är framåt slutledning mer lämplig? Hur är det med bakåt slutledning? +> ✅ Katika hali gani utoaji wa sababu wa mbele unafaa zaidi? Na vipi kuhusu utoaji wa sababu wa nyuma? -### Implementera Expertsystem +### Kutekeleza Mifumo ya Wataalamu -Expertsystem kan implementeras med hjälp av olika verktyg: +Mifumo ya wataalamu inaweza kutekelezwa kwa kutumia zana tofauti: -* Programmera dem direkt i något hög nivå programmeringsspråk. Detta är inte den bästa idén, eftersom den främsta fördelen med ett kunskapsbaserat system är att kunskapen är separerad från slutsatserna, och potentiellt bör en problemområdesexpert kunna skriva regler utan att förstå detaljerna i slutledningsprocessen. -* Använda **expertsystemskal**, dvs. ett system som är specifikt utformat för att fyllas med kunskap med hjälp av något kunskapsrepresentationsspråk. +* Kuiandika moja kwa moja katika lugha ya programu ya kiwango cha juu. Hili si wazo bora, kwa sababu faida kuu ya mfumo unaotegemea maarifa ni kwamba maarifa yanatenganishwa na utoaji wa sababu, na mtaalamu wa eneo la tatizo anapaswa kuwa na uwezo wa kuandika sheria bila kuelewa maelezo ya mchakato wa utoaji wa sababu. +* Kutumia **ganda la mifumo ya wataalamu**, yaani, mfumo ulioundwa mahsusi kujazwa na maarifa kwa kutumia lugha fulani ya uwakilishi wa maarifa. -## ✍️ Övning: Djur Slutledning +## ✍️ Zoezi: Utoaji wa Sababu wa Wanyama -Se [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) för ett exempel på att implementera framåt och bakåt slutledning i ett expertsystem. +Tazama [Animals.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/Animals.ipynb) kwa mfano wa kutekeleza mfumo wa wataalamu wa utoaji wa sababu wa mbele na wa nyuma. +> **Kumbuka**: Mfano huu ni rahisi sana, na unatoa tu wazo la jinsi mfumo wa kitaalamu unavyoonekana. Mara tu unapoanza kuunda mfumo kama huu, utaanza kuona tabia fulani za *akili* kutoka kwake mara tu unapofikia idadi fulani ya sheria, takriban 200+. Wakati fulani, sheria zinakuwa ngumu sana kiasi kwamba ni vigumu kuzihifadhi zote akilini, na katika hatua hii unaweza kuanza kujiuliza kwa nini mfumo unafanya maamuzi fulani. Hata hivyo, sifa muhimu ya mifumo inayotegemea maarifa ni kwamba unaweza *kueleza* kila wakati jinsi maamuzi yoyote yalivyofanywa. +## Ontolojia na Wavuti wa Semantiki -> **Obs**: Detta exempel är ganska enkelt och ger bara en uppfattning om hur ett expertsystem ser ut. När du börjar skapa ett sådant system kommer du bara att märka något *intelligent* beteende från det när du når ett visst antal regler, omkring 200+. Vid en viss punkt blir reglerna för komplexa för att hålla dem alla i minnet, och vid denna punkt kan du börja undra varför ett system fattar vissa beslut. Men den viktiga egenskapen hos kunskapsbaserade system är att du alltid kan *förklara* exakt hur något av besluten fattades. +Mwisho wa karne ya 20 kulikuwa na juhudi za kutumia uwakilishi wa maarifa ili kuweka alama kwenye rasilimali za mtandao, ili iwezekane kupata rasilimali zinazolingana na maswali maalum sana. Juhudi hii ilijulikana kama **Wavuti wa Semantiki**, na ilitegemea dhana kadhaa: -## Ontologier och det Semantiska Webben +- Uwakilishi maalum wa maarifa unaotegemea **[mantiki za maelezo](https://en.wikipedia.org/wiki/Description_logic)** (DL). Hii ni sawa na uwakilishi wa maarifa wa fremu, kwa sababu hujenga uongozi wa vitu vyenye sifa, lakini ina semantiki rasmi ya kimantiki na hitimisho. Kuna familia nzima ya DLs ambazo zinapima kati ya uelekezi na ugumu wa kimitambo wa hitimisho. +- Uwakilishi wa maarifa uliosambazwa, ambapo dhana zote zinawakilishwa na kitambulisho cha URI cha kimataifa, na kufanya iwezekane kuunda uongozi wa maarifa unaovuka mtandao. +- Familia ya lugha zinazotegemea XML kwa maelezo ya maarifa: RDF (Mfumo wa Maelezo ya Rasilimali), RDFS (Schema ya RDF), OWL (Lugha ya Wavuti ya Ontolojia). -I slutet av 1900-talet fanns det en initiativ för att använda kunskapsrepresentation för att annotera internetresurser, så att det skulle vara möjligt att hitta resurser som motsvarar mycket specifika frågor. Denna rörelse kallades **Semantiskt Web**, och den förlitade sig på flera koncept: +Dhana ya msingi katika Wavuti wa Semantiki ni dhana ya **Ontolojia**. Hii inahusu maelezo ya wazi ya eneo la tatizo kwa kutumia uwakilishi wa maarifa rasmi. Ontolojia rahisi inaweza kuwa tu uongozi wa vitu katika eneo la tatizo, lakini ontolojia ngumu zaidi zitajumuisha sheria zinazoweza kutumika kwa hitimisho. -- En speciell kunskapsrepresentation baserad på **[beskrivningslogik](https://en.wikipedia.org/wiki/Description_logic)** (DL). Den liknar ramkunskapsrepresentation, eftersom den bygger en hierarki av objekt med egenskaper, men den har formell logisk semantik och slutsats. Det finns en hel familj av DL som balanserar mellan uttryckbarhet och algoritmisk komplexitet av slutsatser. -- Distribuerad kunskapsrepresentation, där alla koncept representeras av en global URI-identifierare, vilket gör det möjligt att skapa kunskapshierarkier som sträcker sig över internet. -- En familj av XML-baserade språk för kunskapsbeskrivning: RDF (Resource Description Framework), RDFS (RDF Schema), OWL (Ontology Web Language). - -Ett kärnkoncept i det semantiska webben är konceptet **Ontologi**. Det hänvisar till en explicit specifikation av ett problemområde med hjälp av någon formell kunskapsrepresentation. Den enklaste ontologin kan vara enbart en hierarki av objekt i ett problemområde, men mer komplexa ontologier kommer att inkludera regler som kan användas för slutsats. - -I det semantiska webben baseras alla representationer på trippel. Varje objekt och varje relation identifieras unikt av URI. Till exempel, om vi vill ange att denna AI-läroplan har utvecklats av Dmitry Soshnikov den 1 januari 2022 - här är trippeln vi kan använda: +Katika wavuti ya semantiki, uwakilishi wote unategemea tripleti. Kila kitu na kila uhusiano hutambuliwa kipekee na URI. Kwa mfano, ikiwa tunataka kusema ukweli kwamba Mtaala huu wa AI uliandaliwa na Dmitry Soshnikov mnamo Januari 1, 2022 - hapa kuna tripleti tunazoweza kutumia: @@ -173,17 +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 ``` -> ✅ Här `http://www.example.com/terms/creation-date` and `http://purl.org/dc/elements/1.1/creator` är några välkända och allmänt accepterade URIs för att uttrycka koncepten *skapare* och *skapelsedatum*. +> ✅ Hapa `http://www.example.com/terms/creation-date` na `http://purl.org/dc/elements/1.1/creator` ni URI zinazojulikana na kukubalika kimataifa kuelezea dhana za *muundaji* na *tarehe ya uundaji*. -I ett mer komplext fall, om vi vill definiera en lista av skapare, kan vi använda några datakonstruktioner definierade i RDF. +Katika hali ngumu zaidi, ikiwa tunataka kufafanua orodha ya waandishi, tunaweza kutumia miundo ya data iliyofafanuliwa katika RDF. -> Diagrammen ovan av [Dmitry Soshnikov](http://soshnikov.com) +> Michoro hapo juu na [Dmitry Soshnikov](http://soshnikov.com) -Framstegen för att bygga det semantiska webben har på något sätt bromsats av framgången för sökmotorer och tekniker för naturlig språkbehandling, som gör det möjligt att extrahera strukturerad data från text. Men inom vissa områden finns det fortfarande betydande ansträngningar för att upprätthålla ontologier och kunskapsbaser. Några projekt värda att nämna: +Maendeleo ya kujenga Wavuti wa Semantiki yalipungua kwa kiasi fulani kutokana na mafanikio ya injini za utafutaji na mbinu za usindikaji wa lugha asilia, ambazo huruhusu uchimbaji wa data iliyopangwa kutoka kwa maandishi. Hata hivyo, katika baadhi ya maeneo bado kuna juhudi kubwa za kudumisha ontolojia na hifadhidata za maarifa. Miradi michache inayostahili kutajwa: -* [WikiData](https://wikidata.org/) är en samling maskinläsbara kunskapsbaser kopplade till Wikipedia. Det mesta av datan utvinns från Wikipedia *InfoBoxes*, delar av strukturerat innehåll inom Wikipedia-sidor. Du kan [fråga](https://query.wikidata.org/) wikidata i SPARQL, ett specialiserat frågespråk för det semantiska webben. Här är ett exempel på en fråga som visar de mest populära ö +* [WikiData](https://wikidata.org/) ni mkusanyiko wa hifadhidata za maarifa zinazosomeka na mashine zinazohusiana na Wikipedia. Sehemu kubwa ya data inachimbwa kutoka kwa *InfoBoxes* za Wikipedia, vipande vya maudhui yaliyopangwa ndani ya kurasa za Wikipedia. Unaweza [kuuliza](https://query.wikidata.org/) wikidata kwa kutumia SPARQL, lugha maalum ya maswali kwa Wavuti wa Semantiki. Hapa kuna mfano wa swali linaloonyesha rangi za macho maarufu zaidi miongoni mwa wanadamu: -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +```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/) ni juhudi nyingine inayofanana na WikiData. + +> ✅ Ikiwa unataka kujaribu kujenga ontolojia zako mwenyewe, au kufungua zile zilizopo, kuna mhariri mzuri wa ontolojia wa kuona unaoitwa [Protégé](https://protege.stanford.edu/). Pakua, au uitumie mtandaoni. + + + +*Mhariri wa Protégé wa Wavuti ukiwa wazi na ontolojia ya Familia ya Romanov. Picha ya skrini na Dmitry Soshnikov* + +## ✍️ Zoezi: Ontolojia ya Familia + +Tazama [FamilyOntology.ipynb](https://github.com/Ezana135/AI-For-Beginners/blob/main/lessons/2-Symbolic/FamilyOntology.ipynb) kwa mfano wa kutumia mbinu za Wavuti wa Semantiki kufikiri kuhusu mahusiano ya kifamilia. Tutachukua mti wa familia uliowakilishwa katika muundo wa kawaida wa GEDCOM na ontolojia ya mahusiano ya kifamilia na kujenga grafu ya mahusiano yote ya kifamilia kwa seti fulani ya watu. + +## Microsoft Concept Graph + +Katika hali nyingi, ontolojia huundwa kwa uangalifu kwa mikono. Hata hivyo, pia inawezekana **kuchimba** ontolojia kutoka kwa data isiyo na muundo, kwa mfano, kutoka kwa maandishi ya lugha asilia. + +Jaribio moja kama hilo lilifanywa na Microsoft Research, na kusababisha [Microsoft Concept Graph](https://blogs.microsoft.com/ai/microsoft-researchers-release-graph-that-helps-machines-conceptualize/?WT.mc_id=academic-77998-cacaste). + +Ni mkusanyiko mkubwa wa vyombo vilivyopangwa pamoja kwa kutumia uhusiano wa urithi wa `is-a`. Hii inaruhusu kujibu maswali kama "Microsoft ni nini?" - jibu likiwa kitu kama "kampuni kwa uwezekano wa 0.87, na chapa kwa uwezekano wa 0.75". + +Grafu inapatikana ama kama API ya REST, au kama faili kubwa inayopakuliwa ya maandishi inayoorodhesha jozi zote za vyombo. + +## ✍️ Zoezi: Grafu ya Dhana + +Jaribu daftari la [MSConceptGraph.ipynb](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/2-Symbolic/MSConceptGraph.ipynb) ili kuona jinsi tunavyoweza kutumia Microsoft Concept Graph kuainisha makala za habari katika kategoria kadhaa. + +## Hitimisho + +Siku hizi, AI mara nyingi huchukuliwa kuwa sawa na *Kujifunza kwa Mashine* au *Mitandao ya Neva*. Hata hivyo, mwanadamu pia huonyesha kufikiri kwa wazi, jambo ambalo kwa sasa halishughulikiwi na mitandao ya neva. Katika miradi ya ulimwengu halisi, kufikiri kwa wazi bado kunatumika kutekeleza kazi zinazohitaji maelezo, au uwezo wa kurekebisha tabia ya mfumo kwa njia inayodhibitiwa. + +## 🚀 Changamoto + +Katika daftari la Ontolojia ya Familia lililohusishwa na somo hili, kuna fursa ya kujaribu mahusiano mengine ya kifamilia. Jaribu kugundua miunganiko mipya kati ya watu katika mti wa familia. + +## [Jaribio baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/202) + +## Mapitio na Kujisomea + +Fanya utafiti kwenye mtandao kugundua maeneo ambapo wanadamu wamejaribu kupima na kuweka kanuni za maarifa. Angalia Taksonomia ya Bloom, na rudi nyuma kihistoria kujifunza jinsi wanadamu walivyojaribu kuelewa ulimwengu wao. Chunguza kazi ya Linnaeus katika kuunda taksonomia ya viumbe, na angalia jinsi Dmitri Mendeleev alivyounda njia ya kuelezea na kuainisha vipengele vya kemikali. Je, unaweza kupata mifano mingine ya kuvutia? + +**Kazi**: [Jenga Ontolojia](assignment.md) + +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/2-Symbolic/assignment.md b/translations/sw/lessons/2-Symbolic/assignment.md index 28116472..b2174190 100644 --- a/translations/sw/lessons/2-Symbolic/assignment.md +++ b/translations/sw/lessons/2-Symbolic/assignment.md @@ -1,6 +1,15 @@ -# Bygg en Ontologi + +# Jenga Ontolojia -Att skapa en kunskapsbas handlar om att kategorisera en modell som representerar fakta om ett ämne. Välj ett ämne - som en person, en plats eller en sak - och bygg sedan en modell av det ämnet. Använd några av de tekniker och strategier för modellbygge som beskrivs i den här lektionen. Ett exempel skulle vara att skapa en ontologi för ett vardagsrum med möbler, belysning och så vidare. Hur skiljer sig vardagsrummet från köket? Från badrummet? Hur vet du att det är ett vardagsrum och inte ett matsal? Använd [Protégé](https://protege.stanford.edu/) för att bygga din ontologi. +Kujenga msingi wa maarifa kunahusu kuainisha mfano unaowakilisha ukweli kuhusu mada fulani. Chagua mada - kama mtu, mahali, au kitu - kisha jenga mfano wa mada hiyo. Tumia baadhi ya mbinu na mikakati ya kujenga mifano iliyoelezewa katika somo hili. Mfano unaweza kuwa kuunda ontolojia ya sebule yenye fanicha, taa, na kadhalika. Sebule inatofautianaje na jikoni? Bafuni? Unajuaje kuwa ni sebule na si chumba cha kulia chakula? Tumia [Protégé](https://protege.stanford.edu/) kujenga ontolojia yako. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md index 2b06b37e..26f56c0f 100644 --- a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -1,52 +1,61 @@ -# Introduktion till Neurala Nätverk: Perceptron + +# Utangulizi wa Mitandao ya Neural: Perceptron -## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) -Ett av de första försöken att implementera något liknande ett modernt neuralt nätverk gjordes av Frank Rosenblatt från Cornell Aeronautical Laboratory år 1957. Det var en hårdvaruimplementation kallad "Mark-1", designad för att känna igen primitiva geometriska figurer, såsom trianglar, fyrkanter och cirklar. +Moja ya majaribio ya kwanza ya kutekeleza kitu kinachofanana na mtandao wa neural wa kisasa yalifanywa na Frank Rosenblatt kutoka Maabara ya Anga ya Cornell mwaka 1957. Ilikuwa ni utekelezaji wa vifaa vilivyoitwa "Mark-1", iliyoundwa kutambua maumbo ya kijiometri rahisi, kama vile pembetatu, miraba na miduara. | | | |--------------|-----------| |Frank Rosenblatt | The Mark 1 Perceptron| -> Bilder [från Wikipedia](https://en.wikipedia.org/wiki/Perceptron) +> Picha [kutoka Wikipedia](https://en.wikipedia.org/wiki/Perceptron) -En ingångsbild representerades av en 20x20 fotocell-array, så det neurala nätverket hade 400 ingångar och en binär utgång. Ett enkelt nätverk innehöll en neuron, även kallad en **tröskellogik-enhet**. Vikterna i det neurala nätverket fungerade som potentiometrar som krävde manuell justering under träningsfasen. +Picha ya ingizo iliwakilishwa na safu ya seli za picha 20x20, hivyo mtandao wa neural ulikuwa na viingizo 400 na pato moja la binary. Mtandao rahisi ulikuwa na neuron moja, pia inayoitwa **kitengo cha mantiki ya kizingiti**. Uzito wa mtandao wa neural ulifanya kazi kama potentiometer ambazo zilihitaji kurekebishwa kwa mikono wakati wa awamu ya mafunzo. -> ✅ En potentiometer är en enhet som låter användaren justera motståndet i en krets. +> ✅ Potentiometer ni kifaa kinachoruhusu mtumiaji kurekebisha upinzani wa mzunguko. -> The New York Times skrev om perceptron vid den tiden: *embryot av en elektronisk dator som [marinen] förväntar sig kommer att kunna gå, prata, se, skriva, reproducera sig själv och vara medveten om sin existens.* +> The New York Times iliandika kuhusu perceptron wakati huo: *kiinitete cha kompyuta ya kielektroniki ambayo [Jeshi la Wanamaji] linatarajia itaweza kutembea, kuzungumza, kuona, kuandika, kujizalisha yenyewe na kufahamu uwepo wake.* -## Perceptronmodell +## Mfano wa Perceptron -Anta att vi har N egenskaper i vår modell, i vilket fall ingångsvektorn skulle vara en vektor av storlek N. En perceptron är en **binär klassificerings**modell, dvs. den kan särskilja mellan två klasser av ingångsdata. Vi antar att för varje ingångsvektor x skulle utgången av vår perceptron vara antingen +1 eller -1, beroende på klassen. Utgången beräknas med hjälp av formeln: +Tuseme tuna vipengele N katika mfano wetu, ambapo vector ya ingizo itakuwa vector ya ukubwa N. Perceptron ni mfano wa **uainishaji wa binary**, yaani inaweza kutofautisha kati ya madarasa mawili ya data ya ingizo. Tutadhani kwamba kwa kila vector ya ingizo x, pato la perceptron yetu litakuwa aidha +1 au -1, kulingana na darasa. Pato litahesabiwa kwa kutumia fomula: y(x) = f(wTx) -där f är en stegaktiveringsfunktion +ambapo f ni kazi ya uanzishaji wa hatua -## Träning av Perceptron +## Mafunzo ya Perceptron -För att träna en perceptron behöver vi hitta en viktvektor w som klassificerar de flesta värdena korrekt, dvs. ger den minsta **felet**. Detta fel E definieras av **perceptron-kriteriet** på följande sätt: +Ili kufundisha perceptron tunahitaji kupata vector ya uzito w ambayo inatofautisha kwa usahihi thamani nyingi, yaani inasababisha **kosa** dogo zaidi. Kosa hili E linafafanuliwa na **kigezo cha perceptron** kwa njia ifuatayo: E(w) = -∑wTxiti -där: +ambapo: -* summan tas över de träningsdata punkterna i som resulterar i felaktig klassificering -* xi är ingångsdata, och ti är antingen -1 eller +1 för negativa och positiva exempel respektive. +* jumla inachukuliwa kwa zile data za mafunzo i ambazo zinasababisha uainishaji usio sahihi +* xi ni data ya ingizo, na ti ni aidha -1 au +1 kwa mifano hasi na chanya ipasavyo. -Detta kriterium betraktas som en funktion av vikterna w, och vi behöver minimera det. Ofta används en metod som kallas **gradientnedstigning**, där vi börjar med några initiala vikter w(0), och sedan uppdaterar vikterna vid varje steg enligt formeln: +Kigezo hiki kinachukuliwa kama kazi ya uzito w, na tunahitaji kukipunguza. Mara nyingi, njia inayoitwa **gradient descent** hutumika, ambapo tunaanza na uzito wa awali w(0), na kisha kila hatua tunasasisha uzito kulingana na fomula: w(t+1) = w(t) - η∇E(w) -Här är η den så kallade **inlärningshastigheten**, och ∇E(w) betecknar **gradienten** av E. Efter att vi har beräknat gradienten får vi +Hapa η ni kinachoitwa **kiwango cha kujifunza**, na ∇E(w) inaonyesha **gradienti** ya E. Baada ya kuhesabu gradienti, tunapata: w(t+1) = w(t) + ∑ηxiti -Algoritmen i Python ser ut så här: +Algorithimu katika Python inaonekana hivi: ```python def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): @@ -68,29 +77,29 @@ def train(positive_examples, negative_examples, num_iterations = 100, eta = 1): return weights ``` -## Slutsats +## Hitimisho -I denna lektion har du lärt dig om en perceptron, som är en binär klassificeringsmodell, och hur man tränar den med hjälp av en viktvektor. +Katika somo hili, umejifunza kuhusu perceptron, ambayo ni mfano wa uainishaji wa binary, na jinsi ya kuifundisha kwa kutumia vector ya uzito. -## 🚀 Utmaning +## 🚀 Changamoto -Om du vill försöka bygga din egen perceptron, prova [detta labb på Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) som använder [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). +Ikiwa ungependa kujaribu kujenga perceptron yako mwenyewe, jaribu [maabara hii kwenye Microsoft Learn](https://docs.microsoft.com/en-us/azure/machine-learning/component-reference/two-class-averaged-perceptron?WT.mc_id=academic-77998-cacaste) ambayo inatumia [Azure ML designer](https://docs.microsoft.com/en-us/azure/machine-learning/concept-designer?WT.mc_id=academic-77998-cacaste). -## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/203) -## Granskning & Självstudie +## Mapitio na Kujisomea -För att se hur vi kan använda perceptron för att lösa ett leksaksproblem såväl som verkliga problem, och för att fortsätta lära oss - gå till [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb) anteckningsbok. +Ili kuona jinsi tunavyoweza kutumia perceptron kutatua tatizo la mfano pamoja na matatizo ya maisha halisi, na kuendelea kujifunza - nenda kwenye daftari la [Perceptron](../../../../../lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb). -Här är en intressant [artikel om perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 -) också. +Hapa kuna [makala ya kuvutia kuhusu perceptrons](https://towardsdatascience.com/what-is-a-perceptron-basics-of-neural-networks-c4cfea20c590 +) pia. -## [Uppgift](lab/README.md) +## [Kazi ya Nyumbani](lab/README.md) -I denna lektion har vi implementerat en perceptron för en binär klassificeringsuppgift, och vi har använt den för att klassificera mellan två handskrivna siffror. I detta labb ombeds du att helt lösa problemet med sifferklassificering, dvs. att avgöra vilken siffra som mest sannolikt motsvarar en given bild. +Katika somo hili, tumetekeleza perceptron kwa kazi ya uainishaji wa binary, na tumeitumia kutofautisha kati ya tarakimu mbili zilizoandikwa kwa mkono. Katika maabara hii, unaombwa kutatua tatizo la uainishaji wa tarakimu kikamilifu, yaani kubaini ni tarakimu gani inayowezekana zaidi kuendana na picha fulani. -* [Instruktioner](lab/README.md) -* [Anteckningsbok](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +* [Maelekezo](lab/README.md) +* [Daftari](../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md index f3e0ed7e..74b3a84c 100644 --- a/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md @@ -1,22 +1,31 @@ -# Flerklassklassificering med Perceptron + +# Uainishaji wa Darasa Nyingi kwa Kutumia Perceptron -Laborationsuppgift från [AI för nybörjare läroplan](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Använd koden vi har utvecklat i den här lektionen för binär klassificering av handskrivna MNIST-siffror för att skapa en flerklassklassificerare som kan känna igen vilken siffra som helst. Beräkna klassificeringsnoggrannheten på tränings- och testdatasetet, och skriv ut förvirringsmatrisen. +Kwa kutumia msimbo tuliotengeneza katika somo hili kwa uainishaji wa binary wa nambari za mkono za MNIST, tengeneza uainishaji wa darasa nyingi ambao utaweza kutambua nambari yoyote. Hesabu usahihi wa uainishaji kwenye seti ya mafunzo na majaribio, na uchapishe matriki ya mkanganyiko. -## Tips +## Vidokezo -1. För varje siffra, skapa ett dataset för binär klassificering av "denna siffra vs. alla andra siffror" -1. Träna 10 olika perceptroner för binär klassificering (en för varje siffra) -1. Definiera en funktion som kommer att klassificera en inmatad siffra +1. Kwa kila nambari, tengeneza seti ya data kwa uainishaji wa binary wa "nambari hii dhidi ya nambari zingine zote" +1. Funza perceptrons 10 tofauti kwa uainishaji wa binary (moja kwa kila nambari) +1. Fafanua kazi ambayo itatambua nambari ya pembejeo -> **Tips**: Om vi kombinerar vikterna från alla 10 perceptroner till en matris, bör vi kunna tillämpa alla 10 perceptroner på inmatade siffror genom en matris-multiplikation. Den mest sannolika siffran kan sedan hittas genom att tillämpa `argmax` operation på utdata. +> **Kidokezo**: Ikiwa tutachanganya uzito wa perceptrons zote 10 kwenye matriki moja, tunaweza kutumia perceptrons zote 10 kwa nambari za pembejeo kwa kuzidisha matriki moja. Nambari inayowezekana zaidi inaweza kupatikana kwa kutumia operesheni ya `argmax` kwenye matokeo. -## Starta anteckningsblock +## Daftari la Kuanza -Börja laborationen genom att öppna [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) +Anza maabara kwa kufungua [PerceptronMultiClass.ipynb](../../../../../../lessons/3-NeuralNetworks/03-Perceptron/lab/PerceptronMultiClass.ipynb) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md index 301c89ab..9e3f5967 100644 --- a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/README.md @@ -1,89 +1,98 @@ -# Introduktion till Neurala Nätverk. Flerlagers Perceptron + +# Utangulizi wa Mitandao ya Neural. Multi-Layered Perceptron -I den föregående sektionen lärde du dig om den enklaste modellen för neurala nätverk - enlagers perceptron, en linjär klassificeringsmodell för två klasser. +Katika sehemu iliyopita, ulijifunza kuhusu mfano rahisi zaidi wa mtandao wa neural - perceptron ya tabaka moja, mfano wa uainishaji wa tabaka mbili wa mstari. -I denna sektion kommer vi att utvidga denna modell till ett mer flexibelt ramverk, vilket gör att vi kan: +Katika sehemu hii tutapanua mfano huu kuwa mfumo wenye kubadilika zaidi, unaotuwezesha: -* utföra **flerklassklassificering** utöver tvåklasstillstånd -* lösa **regressionsproblem** utöver klassificering -* separera klasser som inte är linjärt separerbara +* kufanya **uainishaji wa tabaka nyingi** pamoja na tabaka mbili +* kutatua **matatizo ya regression** pamoja na uainishaji +* kutenganisha madarasa ambayo hayawezi kutenganishwa kwa mstari -Vi kommer också att utveckla vårt eget modulära ramverk i Python som gör att vi kan konstruera olika arkitekturer för neurala nätverk. +Pia tutaendeleza mfumo wetu wa modular kwa kutumia Python ambao utaturuhusu kujenga usanifu tofauti wa mitandao ya neural. -## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/104) -## Formalisering av Maskininlärning +## Urasmishaji wa Kujifunza kwa Mashine -Låt oss börja med att formalisera problemet inom Maskininlärning. Anta att vi har en träningsdataset **X** med etiketter **Y**, och vi behöver bygga en modell *f* som kommer att ge de mest exakta förutsägelserna. Kvaliteten på förutsägelserna mäts av **Förlustfunktion** ℒ. Följande förlustfunktioner används ofta: +Tuanze kwa kurasmisha tatizo la Kujifunza kwa Mashine. Tuseme tuna seti ya mafunzo **X** yenye lebo **Y**, na tunahitaji kujenga mfano *f* ambao utatoa utabiri sahihi zaidi. Ubora wa utabiri hupimwa kwa kutumia **Kazi ya Hasara** ℒ. Kazi za hasara zifuatazo hutumika mara nyingi: -* För regressionsproblem, när vi behöver förutsäga ett tal, kan vi använda **absolut fel** ∑i|f(x(i))-y(i)|, eller **kvadrerat fel** ∑i(f(x(i))-y(i))2 -* För klassificering använder vi **0-1 förlust** (som i huvudsak är detsamma som **noggrannheten** hos modellen), eller **logistisk förlust**. +* Kwa tatizo la regression, ambapo tunahitaji kutabiri namba, tunaweza kutumia **absolute error** ∑i|f(x(i))-y(i)|, au **squared error** ∑i(f(x(i))-y(i))2 +* Kwa uainishaji, tunatumia **0-1 loss** (ambayo kimsingi ni sawa na **usahihi** wa mfano), au **logistic loss**. -För en enlags perceptron definierades funktionen *f* som en linjär funktion *f(x)=wx+b* (här är *w* viktmatrisen, *x* är vektorn av ingångsegenskaper, och *b* är biasvektorn). För olika arkitekturer av neurala nätverk kan denna funktion anta en mer komplex form. +Kwa perceptron ya tabaka moja, kazi *f* ilifafanuliwa kama kazi ya mstari *f(x)=wx+b* (hapa *w* ni matrix ya uzito, *x* ni vector ya vipengele vya ingizo, na *b* ni vector ya bias). Kwa usanifu tofauti wa mitandao ya neural, kazi hii inaweza kuchukua umbo tata zaidi. -> I fallet med klassificering är det ofta önskvärt att få sannolikheter för motsvarande klasser som nätverksutgång. För att konvertera godtyckliga tal till sannolikheter (t.ex. för att normalisera utgången) använder vi ofta **softmax** funktionen σ, och funktionen *f* blir *f(x)=σ(wx+b)* +> Katika hali ya uainishaji, mara nyingi ni muhimu kupata uwezekano wa madarasa husika kama matokeo ya mtandao. Ili kubadilisha namba za kawaida kuwa uwezekano (mfano, kuhalalisha matokeo), mara nyingi tunatumia kazi ya **softmax** σ, na kazi *f* inakuwa *f(x)=σ(wx+b)* -I definitionen av *f* ovan kallas *w* och *b* för **parametrar** θ=⟨*w,b*⟩. Givet datasetet ⟨**X**,**Y**⟩ kan vi beräkna ett totalt fel på hela datasetet som en funktion av parametrarna θ. +Katika ufafanuzi wa *f* hapo juu, *w* na *b* huitwa **vigezo** θ=⟨*w,b*⟩. Kwa kuzingatia seti ya data ⟨**X**,**Y**⟩, tunaweza kuhesabu kosa la jumla kwenye seti nzima ya data kama kazi ya vigezo θ. -> ✅ **Målet med träningen av det neurala nätverket är att minimera felet genom att variera parametrarna θ** +> ✅ **Lengo la mafunzo ya mtandao wa neural ni kupunguza kosa kwa kubadilisha vigezo θ** -## Gradientnedstigning Optimering +## Uboreshaji wa Gradient Descent -Det finns en välkänd metod för funktionsoptimering som kallas **gradientnedstigning**. Idén är att vi kan beräkna en derivata (i flerdimensionellt fall kallad **gradient**) av förlustfunktionen med avseende på parametrarna, och variera parametrarna på ett sätt så att felet minskar. Detta kan formaliseras som följer: +Kuna mbinu inayojulikana ya uboreshaji wa kazi inayoitwa **gradient descent**. Wazo ni kwamba tunaweza kuhesabu derivative (katika hali ya vipimo vingi huitwa **gradient**) ya kazi ya hasara kwa kuzingatia vigezo, na kubadilisha vigezo kwa njia ambayo kosa litapungua. Hii inaweza kurasmishwa kama ifuatavyo: -* Initiera parametrar med några slumpmässiga värden w(0), b(0) -* Upprepa följande steg många gånger: - - w(i+1) = w(i)-η∂ℒ/∂w - - b(i+1) = b(i)-η∂ℒ/∂b +* Anzisha vigezo kwa thamani za nasibu w(0), b(0) +* Rudia hatua ifuatayo mara nyingi: + - w(i+1) = w(i)-η∂ℒ/∂w + - b(i+1) = b(i)-η∂ℒ/∂b -Under träningen förväntas optimeringsstegen beräknas med hänsyn till hela datasetet (kom ihåg att förlusten beräknas som en summa över alla träningsprover). Men i verkligheten tar vi små portioner av datasetet som kallas **minibatcher**, och beräknar gradienter baserat på en delmängd av data. Eftersom delmängden tas slumpmässigt varje gång, kallas denna metod **stokastisk gradientnedstigning** (SGD). +Wakati wa mafunzo, hatua za uboreshaji zinapaswa kuhesabiwa kwa kuzingatia seti nzima ya data (kumbuka kuwa hasara huhesabiwa kama jumla kupitia sampuli zote za mafunzo). Hata hivyo, katika maisha halisi tunachukua sehemu ndogo za seti ya data zinazoitwa **minibatches**, na kuhesabu gradients kwa kuzingatia subset ya data. Kwa sababu subset huchukuliwa kwa nasibu kila wakati, mbinu hii huitwa **stochastic gradient descent** (SGD). -## Flerlagers Perceptron och Backpropagation +## Multi-Layered Perceptrons na Backpropagation -En enlags nätverk, som vi har sett ovan, kan klassificera linjärt separerbara klasser. För att bygga en rikare modell kan vi kombinera flera lager av nätverket. Matematiskt skulle det innebära att funktionen *f* skulle ha en mer komplex form och beräknas i flera steg: -* z1=w1x+b1 -* z2=w2α(z1)+b2 -* f = σ(z2) +Mtandao wa tabaka moja, kama tulivyoona hapo juu, unaweza kuainisha madarasa yanayoweza kutenganishwa kwa mstari. Ili kujenga mfano tajiri zaidi, tunaweza kuchanganya tabaka kadhaa za mtandao. Kihisabati, hii itamaanisha kuwa kazi *f* itakuwa na umbo tata zaidi, na itahesabiwa kwa hatua kadhaa: +* z1=w1x+b1 +* z2=w2α(z1)+b2 +* f = σ(z2) -Här är α en **icke-linjär aktiveringsfunktion**, σ är en softmax-funktion, och parametrarna θ=<*w1,b1,w2,b2* >. +Hapa, α ni **kazi ya uanzishaji isiyo ya mstari**, σ ni kazi ya softmax, na vigezo θ=<*w1,b1,w2,b2*>. -Gradientnedstigningsalgoritmen skulle förbli densamma, men det skulle bli svårare att beräkna gradienter. Givet kedjederiveringsregeln kan vi beräkna derivator som: +Algorithm ya gradient descent itabaki ile ile, lakini itakuwa ngumu zaidi kuhesabu gradients. Kwa kuzingatia kanuni ya mnyororo wa differentiation, tunaweza kuhesabu derivatives kama: -* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) -* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) +* ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2) +* ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1) -> ✅ Kedjederiveringsregeln används för att beräkna derivator av förlustfunktionen med avseende på parametrar. +> ✅ Kanuni ya mnyororo wa differentiation hutumika kuhesabu derivatives za kazi ya hasara kwa kuzingatia vigezo. -Observera att den vänstra delen av alla dessa uttryck är densamma, och vi kan därför effektivt beräkna derivator som börjar från förlustfunktionen och går "bakåt" genom den beräkningsmässiga grafen. Därför kallas metoden för att träna en flerlagers perceptron för **backpropagation**, eller 'backprop'. +Kumbuka kuwa sehemu ya kushoto kabisa ya maelezo haya yote ni sawa, na hivyo tunaweza kuhesabu derivatives kwa ufanisi kuanzia kazi ya hasara na kurudi "nyuma" kupitia grafu ya kihesabu. Hivyo mbinu ya kufundisha perceptron ya tabaka nyingi huitwa **backpropagation**, au 'backprop'. -beräkningsgraf +compute graph -> TODO: bildcitat +> TODO: rejea ya picha -> ✅ Vi kommer att täcka backprop i mycket mer detalj i vårt notebook-exempel. +> ✅ Tutashughulikia backprop kwa undani zaidi katika mfano wetu wa daftari. -## Slutsats +## Hitimisho -I denna lektion har vi byggt vårt eget bibliotek för neurala nätverk, och vi har använt det för en enkel tvådimensionell klassificeringsuppgift. +Katika somo hili, tumejenga maktaba yetu ya mtandao wa neural, na tumeitumia kwa kazi rahisi ya uainishaji wa vipimo viwili. -## 🚀 Utmaning +## 🚀 Changamoto -I den medföljande notebooken kommer du att implementera ditt eget ramverk för att bygga och träna flerlagers perceptron. Du kommer att kunna se i detalj hur moderna neurala nätverk fungerar. +Katika daftari linaloambatana, utatekeleza mfumo wako wa kujenga na kufundisha perceptrons za tabaka nyingi. Utaweza kuona kwa undani jinsi mitandao ya neural ya kisasa inavyofanya kazi. -Gå till [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) notebooken och arbeta igenom den. +Endelea kwenye [OwnFramework](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) daftari na uifanyie kazi. -## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/204) -## Granskning & Självstudie +## Mapitio na Kujisomea -Backpropagation är en vanlig algoritm som används inom AI och ML, värd att studera [i mer detalj](https://wikipedia.org/wiki/Backpropagation) +Backpropagation ni algorithm ya kawaida inayotumika katika AI na ML, inafaa kusomwa [kwa undani zaidi](https://wikipedia.org/wiki/Backpropagation) -## [Uppgift](lab/README.md) +## [Kazi ya Nyumbani](lab/README.md) -I detta labb ombeds du att använda det ramverk du konstruerade i denna lektion för att lösa klassificeringen av handskrivna siffror från MNIST. +Katika maabara hii, unatakiwa kutumia mfumo uliounda katika somo hili kutatua uainishaji wa namba za mkono wa MNIST. -* [Instruktioner](lab/README.md) -* [Notebook](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +* [Maelekezo](lab/README.md) +* [Daftari](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md index 3f7692bd..99f9aab4 100644 --- a/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md @@ -1,23 +1,32 @@ -# MNIST Klassificering med Vårt Eget Ramverk + +# Uainishaji wa MNIST kwa Mfumo Wetu -Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Lös problemet med klassificering av handskrivna siffror i MNIST med hjälp av 1-, 2- och 3-lagerade perceptron. Använd det neurala nätverksramverk vi har utvecklat under lektionen. +Tatua tatizo la uainishaji wa namba zilizoandikwa kwa mkono za MNIST kwa kutumia perceptron ya tabaka 1, 2, na 3. Tumia mfumo wa mtandao wa neva ambao tumeunda katika somo. -## Starta Anteckningsbok +## Daftari la Kuanza -Börja laborationen genom att öppna [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) +Anza maabara kwa kufungua [MyFW_MNIST.ipynb](../../../../../../lessons/3-NeuralNetworks/04-OwnFramework/lab/MyFW_MNIST.ipynb) -## Frågor +## Maswali -Som ett resultat av denna laboration, försök att besvara följande frågor: +Kama matokeo ya maabara hii, jaribu kujibu maswali yafuatayo: -- Påverkar aktiveringsfunktionen mellan lagren nätverkets prestanda? -- Behöver vi ett 2- eller 3-lagerat nätverk för denna uppgift? -- Upplevde du några problem med att träna nätverket? Särskilt när antalet lager ökade. -- Hur beter sig vikterna i nätverket under träningen? Du kan rita max abs-värde av vikterna mot epok för att förstå relationen. +- Je, kazi ya uanzishaji kati ya tabaka inaathiri utendaji wa mtandao? +- Je, tunahitaji mtandao wa tabaka 2 au 3 kwa kazi hii? +- Je, ulipata changamoto zozote wakati wa kufundisha mtandao? Hasa idadi ya tabaka ilipoongezeka. +- Je, uzito wa mtandao unabadilika vipi wakati wa mafunzo? Unaweza kuchora thamani ya juu kabisa ya uzito dhidi ya enzi ili kuelewa uhusiano. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md index 64819968..d919691d 100644 --- a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -1,123 +1,132 @@ -# Neural Network Frameworks + +# Mfumo wa Mitandao ya Neural -Som vi redan har lärt oss, för att effektivt kunna träna neurala nätverk behöver vi göra två saker: +Kama tulivyojifunza tayari, ili kufundisha mitandao ya neural kwa ufanisi tunahitaji kufanya mambo mawili: -* Att arbeta med tensorer, t.ex. att multiplicera, addera och beräkna vissa funktioner som sigmoid eller softmax -* Att beräkna gradienter för alla uttryck, för att kunna utföra gradientnedstigning +* Kufanya kazi na tensors, kwa mfano kuzidisha, kuongeza, na kuhesabu baadhi ya kazi kama sigmoid au softmax +* Kuhesabu derivatives za maelezo yote, ili kufanya uboreshaji wa gradient descent -## [För-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/105) -Medan `numpy` biblioteket kan hantera den första delen, behöver vi någon mekanism för att beräkna gradienter. I [vårt ramverk](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) som vi utvecklade i föregående avsnitt var vi tvungna att manuellt programmera alla derivatfunktioner inuti `backward` metoden, som gör backpropagation. Idealiskt sett bör ett ramverk ge oss möjlighet att beräkna gradienter av *vilket uttryck som helst* som vi kan definiera. +Ingawa maktaba ya `numpy` inaweza kufanya sehemu ya kwanza, tunahitaji utaratibu wa kuhesabu derivatives. Katika [mfumo wetu](../../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) ambao tumeunda katika sehemu iliyopita, tulilazimika kuandika kwa mkono kazi zote za derivatives ndani ya njia ya `backward`, ambayo hufanya backpropagation. Kwa hali bora, mfumo unapaswa kutupa fursa ya kuhesabu derivatives za *maelezo yoyote* tunayoweza kufafanua. -En annan viktig aspekt är att kunna utföra beräkningar på GPU, eller andra specialiserade beräkningsenheter, såsom [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Träning av djupa neurala nätverk kräver *mycket* beräkningar, och att kunna parallellisera dessa beräkningar på GPU:er är mycket viktigt. +Jambo lingine muhimu ni uwezo wa kufanya mahesabu kwenye GPU, au vitengo vingine maalum vya mahesabu, kama [TPU](https://en.wikipedia.org/wiki/Tensor_Processing_Unit). Mafunzo ya mitandao ya neural ya kina yanahitaji *mahesabu mengi sana*, na uwezo wa kuendesha mahesabu hayo kwa sambamba kwenye GPUs ni muhimu sana. -> ✅ Termen 'parallellisera' betyder att fördela beräkningarna över flera enheter. +> ✅ Neno 'kuendesha kwa sambamba' linamaanisha kusambaza mahesabu kwenye vifaa vingi. -För närvarande är de två mest populära neurala ramverken: [TensorFlow](http://TensorFlow.org) och [PyTorch](https://pytorch.org/). Båda erbjuder ett lågnivå-API för att arbeta med tensorer både på CPU och GPU. Ovanpå lågnivå-API:et finns också ett högre API, som kallas [Keras](https://keras.io/) och [PyTorch Lightning](https://pytorchlightning.ai/) respektive. +Kwa sasa, mifumo miwili maarufu zaidi ya neural ni: [TensorFlow](http://TensorFlow.org) na [PyTorch](https://pytorch.org/). Zote mbili zinatoa API ya kiwango cha chini kufanya kazi na tensors kwenye CPU na GPU. Juu ya API ya kiwango cha chini, kuna pia API ya kiwango cha juu, inayoitwa [Keras](https://keras.io/) na [PyTorch Lightning](https://pytorchlightning.ai/) kwa mtiririko huo. -Lågnivå-API | [TensorFlow](http://TensorFlow.org) | [PyTorch](https://pytorch.org/) ---------------|-------------------------------------|-------------------------------- -Högnivå-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/) -**Lågnivå-API:er** i båda ramverken låter dig bygga så kallade **beräkningsgrafer**. Denna graf definierar hur man beräknar utdata (vanligtvis förlustfunktionen) med givna indata, och kan skickas för beräkning på GPU, om det är tillgängligt. Det finns funktioner för att differentiera denna beräkningsgraf och beräkna gradienter, som sedan kan användas för att optimera modellparametrar. +**APIs za kiwango cha chini** katika mifumo yote miwili hukuruhusu kujenga kinachoitwa **michoro ya mahesabu**. Mchoro huu hufafanua jinsi ya kuhesabu matokeo (kawaida kazi ya hasara) kwa kutumia vigezo vilivyotolewa, na inaweza kusukumwa kwa mahesabu kwenye GPU, ikiwa inapatikana. Kuna kazi za kutofautisha mchoro huu wa mahesabu na kuhesabu derivatives, ambazo zinaweza kutumika kuboresha vigezo vya mfano. -**Högnivå-API:er** betraktar i stort sett neurala nätverk som en **sekvens av lager**, och gör konstruktionen av de flesta neurala nätverk mycket enklare. Att träna modellen kräver vanligtvis att man förbereder data och sedan anropar en `fit` funktion för att utföra jobbet. +**APIs za kiwango cha juu** huchukulia mitandao ya neural kama **mfululizo wa tabaka**, na hufanya ujenzi wa mitandao mingi ya neural kuwa rahisi zaidi. Kufundisha mfano kawaida kunahitaji kuandaa data na kisha kuita kazi ya `fit` kufanya kazi hiyo. -Högnivå-API:et gör att du snabbt kan konstruera typiska neurala nätverk utan att behöva oroa dig för många detaljer. Samtidigt erbjuder lågnivå-API:t mycket mer kontroll över träningsprocessen, och därför används de ofta inom forskningen, när man hanterar nya arkitekturer för neurala nätverk. +API ya kiwango cha juu hukuruhusu kujenga mitandao ya neural ya kawaida haraka sana bila kuwa na wasiwasi kuhusu maelezo mengi. Wakati huo huo, API ya kiwango cha chini inatoa udhibiti zaidi juu ya mchakato wa mafunzo, na hivyo hutumika sana katika utafiti, unaposhughulika na usanifu mpya wa mitandao ya neural. -Det är också viktigt att förstå att du kan använda båda API:erna tillsammans, t.ex. kan du utveckla din egen nätverkslagerarkitektur med lågnivå-API:t, och sedan använda den i det större nätverk som konstruerats och tränats med högnivå-API:t. Eller så kan du definiera ett nätverk med högnivå-API:t som en sekvens av lager, och sedan använda din egen lågnivå träningsloop för att utföra optimering. Båda API:erna använder samma grundläggande koncept och är designade för att fungera bra tillsammans. +Ni muhimu pia kuelewa kwamba unaweza kutumia APIs zote mbili pamoja, kwa mfano, unaweza kuunda usanifu wako wa tabaka la mtandao kwa kutumia API ya kiwango cha chini, na kisha kuitumia ndani ya mtandao mkubwa ulioundwa na kufundishwa kwa API ya kiwango cha juu. Au unaweza kufafanua mtandao kwa kutumia API ya kiwango cha juu kama mfululizo wa tabaka, na kisha kutumia mzunguko wako wa mafunzo wa kiwango cha chini kufanya uboreshaji. APIs zote mbili hutumia dhana za msingi sawa, na zimeundwa kufanya kazi vizuri pamoja. -## Lärande +## Kujifunza -I den här kursen erbjuder vi det mesta av innehållet både för PyTorch och TensorFlow. Du kan välja ditt föredragna ramverk och bara gå igenom motsvarande anteckningar. Om du är osäker på vilket ramverk du ska välja, läs några diskussioner på internet angående **PyTorch vs. TensorFlow**. Du kan också titta på båda ramverken för att få en bättre förståelse. +Katika kozi hii, tunatoa maudhui mengi kwa PyTorch na TensorFlow. Unaweza kuchagua mfumo unaoupenda na kupitia tu daftari zinazohusiana. Ikiwa huna uhakika ni mfumo gani wa kuchagua, soma mijadala fulani mtandaoni kuhusu **PyTorch vs. TensorFlow**. Unaweza pia kuangalia mifumo yote miwili ili kupata uelewa bora. -Där det är möjligt kommer vi att använda Högnivå-API:er för enkelhetens skull. Men vi anser att det är viktigt att förstå hur neurala nätverk fungerar från grunden, så i början börjar vi med att arbeta med lågnivå-API och tensorer. Men om du vill komma igång snabbt och inte vill spendera mycket tid på att lära dig dessa detaljer, kan du hoppa över dem och gå direkt till högnivå-API anteckningarna. +Pale inapowezekana, tutatumia APIs za kiwango cha juu kwa urahisi. Hata hivyo, tunaamini ni muhimu kuelewa jinsi mitandao ya neural inavyofanya kazi kutoka mwanzo, hivyo mwanzoni tunaanza kwa kufanya kazi na API ya kiwango cha chini na tensors. Hata hivyo, ikiwa unataka kuanza haraka na hutaki kutumia muda mwingi kujifunza maelezo haya, unaweza kuruka hizo na kwenda moja kwa moja kwenye daftari za API ya kiwango cha juu. -## ✍️ Övningar: Ramverk +## ✍️ Mazoezi: Mifumo -Fortsätt ditt lärande i följande anteckningar: +Endelea kujifunza katika daftari zifuatazo: -Lågnivå-API | [TensorFlow+Keras Anteckning](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) | [PyTorch](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) ---------------|-------------------------------------|-------------------------------- -Högnivå-API| [Keras](../../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKeras.ipynb) | *PyTorch Lightning* +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* -Efter att ha bemästrat ramverken, låt oss sammanfatta begreppet överanpassning. +Baada ya kufahamu mifumo, hebu tukumbuke dhana ya overfitting. -# Överanpassning +# Overfitting -Överanpassning är ett extremt viktigt begrepp inom maskininlärning, och det är mycket viktigt att få det rätt! +Overfitting ni dhana muhimu sana katika ujifunzaji wa mashine, na ni muhimu sana kuielewa vizuri! -Överväg följande problem med att approximera 5 punkter (representerade av `x` på graferna nedan): +Fikiria tatizo lifuatalo la kukadiria alama 5 (zinazowakilishwa na `x` kwenye grafu hapa chini): -![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sw.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sw.jpg) --------------------------|-------------------------- -**Linjär modell, 2 parametrar** | **Icke-linjär modell, 7 parametrar** -Träningsfel = 5.3 | Träningsfel = 0 -Valideringsfel = 5.1 | Valideringsfel = 20 +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.sw.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.sw.jpg) +-------------------------|-------------------------- +**Mfano wa Linear, vigezo 2** | **Mfano wa Non-linear, vigezo 7** +Makosa ya mafunzo = 5.3 | Makosa ya mafunzo = 0 +Makosa ya uthibitishaji = 5.1 | Makosa ya uthibitishaji = 20 -* Till vänster ser vi en bra rak linje approximation. Eftersom antalet parametrar är adekvat, förstår modellen idén bakom punktfördelningen korrekt. -* Till höger är modellen för kraftfull. Eftersom vi bara har 5 punkter och modellen har 7 parametrar, kan den justera sig på ett sätt som gör att den går genom alla punkter, vilket gör träningsfelet till 0. Men detta hindrar modellen från att förstå det korrekta mönstret bakom datan, vilket gör att valideringsfelet blir mycket högt. +* Kushoto, tunaona makadirio mazuri ya mstari wa moja kwa moja. Kwa sababu idadi ya vigezo ni ya kutosha, mfano unapata wazo sahihi la usambazaji wa alama. +* Kulia, mfano ni wenye nguvu kupita kiasi. Kwa sababu tuna alama 5 tu na mfano una vigezo 7, unaweza kurekebisha kwa njia ya kupita kwenye alama zote, na kufanya makosa ya mafunzo kuwa 0. Hata hivyo, hii inazuia mfano kuelewa muundo sahihi wa data, hivyo makosa ya uthibitishaji ni makubwa sana. -Det är mycket viktigt att hitta en korrekt balans mellan modellens rikedom (antal parametrar) och antalet träningsprover. +Ni muhimu sana kupata usawa sahihi kati ya utajiri wa mfano (idadi ya vigezo) na idadi ya sampuli za mafunzo. -## Varför överanpassning inträffar +## Kwa nini overfitting hutokea - * Inte tillräckligt med träningsdata - * För kraftfull modell - * För mycket brus i indata + * Data ya mafunzo haitoshi + * Mfano wenye nguvu kupita kiasi + * Kelele nyingi kwenye data ya ingizo -## Hur man upptäcker överanpassning +## Jinsi ya kugundua overfitting -Som du kan se från grafen ovan kan överanpassning upptäckas genom ett mycket lågt träningsfel och ett högt valideringsfel. Normalt under träning kommer vi att se både tränings- och valideringsfel börja minska, och sedan vid en viss punkt kan valideringsfelet sluta minska och börja öka. Detta kommer att vara ett tecken på överanpassning, och en indikator på att vi troligen bör sluta träna vid denna punkt (eller åtminstone göra en snapshot av modellen). +Kama unavyoona kutoka kwenye grafu hapo juu, overfitting inaweza kugunduliwa kwa makosa ya mafunzo ya chini sana, na makosa ya uthibitishaji ya juu. Kawaida wakati wa mafunzo tutaona makosa ya mafunzo na uthibitishaji yakianza kupungua, na kisha wakati fulani makosa ya uthibitishaji yanaweza kuacha kupungua na kuanza kuongezeka. Hii itakuwa ishara ya overfitting, na kiashiria kwamba tunapaswa labda kuacha mafunzo wakati huo (au angalau kuchukua snapshot ya mfano). ![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.sw.png) -## Hur man förhindrar överanpassning +## Jinsi ya kuzuia overfitting -Om du ser att överanpassning inträffar kan du göra något av följande: +Ikiwa unaona kwamba overfitting inatokea, unaweza kufanya mojawapo ya yafuatayo: - * Öka mängden träningsdata - * Minska modellens komplexitet - * Använda någon [regulariseringsteknik](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), såsom [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), som vi kommer att överväga senare. + * Ongeza kiasi cha data ya mafunzo + * Punguza ugumu wa mfano + * Tumia baadhi ya [mbinu za kudhibiti](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md), kama [Dropout](../../4-ComputerVision/08-TransferLearning/TrainingTricks.md#Dropout), ambayo tutazingatia baadaye. -## Överanpassning och Bias-Varians Tradeoff +## Overfitting na Bias-Variance Tradeoff -Överanpassning är faktiskt ett fall av ett mer generellt problem inom statistik som kallas [Bias-Varians Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Om vi överväger de möjliga källorna till fel i vår modell kan vi se två typer av fel: +Overfitting kwa kweli ni hali ya tatizo la jumla zaidi katika takwimu linaloitwa [Bias-Variance Tradeoff](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff). Tukizingatia vyanzo vinavyowezekana vya makosa katika mfano wetu, tunaweza kuona aina mbili za makosa: -* **Biasfel** orsakas av att vår algoritm inte kan fånga relationen mellan träningsdata korrekt. Det kan bero på att vår modell inte är tillräckligt kraftfull (**underanpassning**). -* **Variansfel**, som orsakas av att modellen approximera brus i indata istället för meningsfulla relationer (**överanpassning**). +* **Makosa ya Bias** husababishwa na algorithimu yetu kushindwa kunasa uhusiano kati ya data ya mafunzo kwa usahihi. Inaweza kusababishwa na ukweli kwamba mfano wetu hauna nguvu ya kutosha (**underfitting**). +* **Makosa ya Variance**, ambayo husababishwa na mfano kukadiria kelele kwenye data ya ingizo badala ya uhusiano wa maana (**overfitting**). -Under träning minskar biasfelet (när vår modell lär sig att approximera datan), och variansfelet ökar. Det är viktigt att stoppa träningen - antingen manuellt (när vi upptäcker överanpassning) eller automatiskt (genom att införa regularisering) - för att förhindra överanpassning. +Wakati wa mafunzo, makosa ya bias hupungua (kama mfano wetu unavyojifunza kukadiria data), na makosa ya variance huongezeka. Ni muhimu kuacha mafunzo - ama kwa mikono (tunapogundua overfitting) au kiotomatiki (kwa kuanzisha udhibiti) - ili kuzuia overfitting. -## Slutsats +## Hitimisho -I den här lektionen lärde du dig om skillnaderna mellan de olika API:erna för de två mest populära AI-ramverken, TensorFlow och PyTorch. Dessutom lärde du dig om ett mycket viktigt ämne, överanpassning. +Katika somo hili, umejifunza tofauti kati ya APIs mbalimbali za mifumo miwili maarufu ya AI, TensorFlow na PyTorch. Zaidi ya hayo, umejifunza kuhusu mada muhimu sana, overfitting. -## 🚀 Utmaning +## 🚀 Changamoto -I de medföljande anteckningarna hittar du 'uppgifter' längst ner; arbeta igenom anteckningarna och slutför uppgifterna. +Katika daftari zinazofuatana, utapata 'kazi' chini; pitia daftari na ukamilishe kazi hizo. -## [Efter-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/205) -## Granskning & Självstudie +## Mapitio & Kujisomea -Gör lite forskning om följande ämnen: +Fanya utafiti kuhusu mada zifuatazo: -- TensorFlow -- PyTorch -- Överanpassning +- TensorFlow +- PyTorch +- Overfitting -Ställ dig själv följande frågor: +Jiulize maswali yafuatayo: -- Vad är skillnaden mellan TensorFlow och PyTorch? -- Vad är skillnaden mellan överanpassning och underanpassning? +- Tofauti kati ya TensorFlow na PyTorch ni ipi? +- Tofauti kati ya overfitting na underfitting ni ipi? -## [Uppgift](lab/README.md) +## [Kazi](lab/README.md) -I detta laboratorium ombeds du att lösa två klassificeringsproblem med hjälp av enkel- och flerlagerade fullt anslutna nätverk med PyTorch eller TensorFlow. +Katika maabara hii, unatakiwa kutatua matatizo mawili ya uainishaji kwa kutumia mitandao ya tabaka moja na tabaka nyingi kwa kutumia PyTorch au TensorFlow. -* [Instruktioner](lab/README.md) -* [Anteckning](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +* [Maelekezo](lab/README.md) +* [Daftari](../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md index a28f6422..0acc598d 100644 --- a/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md @@ -1,19 +1,28 @@ -# Klassificering med PyTorch/TensorFlow + +# Uainishaji kwa kutumia PyTorch/TensorFlow -Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Lös två klassificeringsproblem med hjälp av enkla och flerlagers fullt kopplade nätverk med PyTorch eller TensorFlow: +Tatua matatizo mawili ya uainishaji kwa kutumia mitandao ya tabaka moja na tabaka nyingi iliyo na muunganisho kamili kwa kutumia PyTorch au TensorFlow: -1. **[Iris klassificering](https://en.wikipedia.org/wiki/Iris_flower_data_set)** problem - ett exempel på ett problem med tabulär indata, som kan hanteras av klassisk maskininlärning. Ditt mål är att klassificera irisar i 3 klasser, baserat på 4 numeriska parametrar. -2. **MNIST** klassificering av handskrivna siffror som vi har sett tidigare. +1. **[Tatizo la uainishaji wa Iris](https://en.wikipedia.org/wiki/Iris_flower_data_set)** - mfano wa tatizo lenye data ya tabular kama pembejeo, ambalo linaweza kushughulikiwa na ujifunzaji wa mashine wa kawaida. Lengo lako litakuwa kuainisha maua ya iris katika madarasa 3, kulingana na vigezo 4 vya namba. +1. Tatizo la uainishaji wa namba zilizoandikwa kwa mkono la **MNIST** ambalo tumeliona hapo awali. -Försök med olika nätverksarkitekturer för att uppnå den bästa noggrannheten du kan få. +Jaribu usanifu tofauti wa mitandao ili kufanikisha usahihi bora zaidi unavyoweza. -## Starta Anteckningsbok +## Daftari la Kuanza -Börja laborationen genom att öppna [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) +Anza maabara kwa kufungua [LabFrameworks.ipynb](../../../../../../lessons/3-NeuralNetworks/05-Frameworks/lab/LabFrameworks.ipynb) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/3-NeuralNetworks/README.md b/translations/sw/lessons/3-NeuralNetworks/README.md index 6093bfc0..81c70f6c 100644 --- a/translations/sw/lessons/3-NeuralNetworks/README.md +++ b/translations/sw/lessons/3-NeuralNetworks/README.md @@ -1,51 +1,60 @@ -# Introduktion till Neurala Nätverk + +# Utangulizi wa Mitandao ya Neural -![Sammanfattning av innehållet i Introduktion till Neurala Nätverk i en doodle](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sw.png) +![Muhtasari wa maudhui ya Utangulizi wa Mitandao ya Neural katika mchoro](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.sw.png) -Som vi diskuterade i introduktionen är en av metoderna för att uppnå intelligens att träna en **datormodell** eller en **konstgjord hjärna**. Sedan mitten av 1900-talet har forskare prövat olika matematiska modeller, tills detta område i de senaste åren visat sig vara oerhört framgångsrikt. Sådana matematiska modeller av hjärnan kallas **neurala nätverk**. +Kama tulivyojadili katika utangulizi, mojawapo ya njia za kufanikisha akili ni kufundisha **mfano wa kompyuta** au **ubongo wa bandia**. Tangu katikati ya karne ya 20, watafiti walijaribu mifano mbalimbali ya kihesabu, hadi miaka ya hivi karibuni ambapo mwelekeo huu ulithibitishwa kuwa na mafanikio makubwa. Mifano hii ya kihesabu ya ubongo inaitwa **mitandao ya neural**. -> Ibland kallas neurala nätverk *Artificiella Neurala Nätverk*, ANNs, för att indikera att vi pratar om modeller, inte verkliga nätverk av neuroner. +> Wakati mwingine mitandao ya neural huitwa *Mitandao ya Neural ya Bandia*, ANNs, ili kuonyesha kwamba tunazungumzia mifano, si mitandao halisi ya neurons. -## Maskininlärning +## Kujifunza kwa Mashine -Neurala Nätverk är en del av en större disciplin som kallas **Maskininlärning**, vars mål är att använda data för att träna datormodeller som kan lösa problem. Maskininlärning utgör en stor del av Artificiell Intelligens, men vi täcker inte klassisk ML i denna läroplan. +Mitandao ya Neural ni sehemu ya taaluma kubwa inayoitwa **Kujifunza kwa Mashine**, ambayo lengo lake ni kutumia data kufundisha mifano ya kompyuta inayoweza kutatua matatizo. Kujifunza kwa Mashine ni sehemu kubwa ya Akili Bandia, hata hivyo, hatutashughulikia ML ya kawaida katika mtaala huu. -> Besök vår separata **[Maskininlärning för Nybörjare](http://github.com/microsoft/ml-for-beginners)** läroplan för att lära dig mer om klassisk Maskininlärning. +> Tembelea mtaala wetu tofauti wa **[Kujifunza kwa Mashine kwa Kompyuta za Kuanza](http://github.com/microsoft/ml-for-beginners)** ili kujifunza zaidi kuhusu Kujifunza kwa Mashine ya kawaida. -Inom Maskininlärning antar vi att vi har en dataset med exempel **X**, och motsvarande utdata **Y**. Exempel är ofta N-dimensionella vektorer som består av **funktioner**, och utdata kallas **etiketter**. +Katika Kujifunza kwa Mashine, tunadhani kwamba tuna seti ya data ya mifano **X**, na thamani za matokeo zinazolingana **Y**. Mifano mara nyingi ni vekta za N-dimensional zinazojumuisha **vipengele**, na matokeo huitwa **lebo**. -Vi kommer att överväga de två vanligaste problemen inom maskininlärning: +Tutazingatia matatizo mawili ya kawaida ya kujifunza kwa mashine: -* **Klassificering**, där vi behöver klassificera ett indataobjekt i två eller fler klasser. -* **Regression**, där vi behöver förutsäga ett numeriskt värde för varje indataexempel. +* **Uainishaji**, ambapo tunahitaji kuainisha kitu cha pembejeo katika darasa mbili au zaidi. +* **Urejeshaji**, ambapo tunahitaji kutabiri namba ya nambari kwa kila sampuli ya pembejeo. -> När vi representerar indata och utdata som tensorer, är indatauppsättningen en matris av storlek M×N, där M är antalet prover och N är antalet funktioner. Utdataetiketter Y är vektorn av storlek M. +> Wakati wa kuwakilisha pembejeo na matokeo kama tensors, seti ya data ya pembejeo ni matriki ya ukubwa M×N, ambapo M ni idadi ya sampuli na N ni idadi ya vipengele. Lebo za matokeo Y ni vekta ya ukubwa M. -I denna läroplan kommer vi endast att fokusera på modeller för neurala nätverk. +Katika mtaala huu, tutazingatia tu mifano ya mitandao ya neural. -## En Modell av en Neuron +## Mfano wa Neuron -Från biologin vet vi att vår hjärna består av nervceller, där varje cell har flera "ingångar" (axon) och en utgång (dendrit). Axon och dendriter kan leda elektriska signaler, och kopplingarna mellan axon och dendriter kan uppvisa olika grader av ledningsförmåga (styrt av neuromediatörer). +Kutoka kwa biolojia tunajua kwamba ubongo wetu unajumuisha seli za neural, kila moja ikiwa na "pembejeo" nyingi (axons), na matokeo (dendrite). Axons na dendrites zinaweza kusafirisha ishara za umeme, na miunganisho kati ya axons na dendrites inaweza kuonyesha viwango tofauti vya usafirishaji (inayodhibitiwa na neuromediators). -![Modell av en Neuron](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg) | ![Modell av en Neuron](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sw.png) +![Mfano wa Neuron](../../../../translated_images/synapse-wikipedia.ed20a9e4726ea1c6a3ce8fec51c0b9bec6181946dca0fe4e829bc12fa3bacf01.sw.jpg) | ![Mfano wa Neuron](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.sw.png) ----|---- -Verklig Neuron *([Bild](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) från Wikipedia)* | Konstgjord Neuron *(Bild av Författaren)* +Neuron Halisi *([Picha](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) kutoka Wikipedia)* | Neuron ya Bandia *(Picha na Mwandishi)* -Således innehåller den enklaste matematiska modellen av en neuron flera ingångar X1, ..., XN och en utgång Y, samt en serie vikter W1, ..., WN. En utgång beräknas som: +Kwa hivyo, mfano rahisi wa kihesabu wa neuron una pembejeo kadhaa X1, ..., XN na matokeo Y, na mfululizo wa uzito W1, ..., WN. Matokeo yanahesabiwa kama: Y = f\left(\sum_{i=1}^N X_iW_i\right) -där f är någon icke-linjär **aktiveringsfunktion**. +ambapo f ni **kazi ya uanzishaji** isiyo ya mstari. -> Tidiga modeller av neuroner beskrevs i den klassiska artikeln [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) av Warren McCullock och Walter Pitts år 1943. Donald Hebb föreslog i sin bok "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" hur dessa nätverk kan tränas. +> Mifano ya awali ya neuron ilielezewa katika karatasi ya kawaida [A logical calculus of the ideas immanent in nervous activity](https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf) na Warren McCullock na Walter Pitts mwaka 1943. Donald Hebb katika kitabu chake "[The Organization of Behavior: A Neuropsychological Theory](https://books.google.com/books?id=VNetYrB8EBoC)" alipendekeza njia ambazo mitandao hiyo inaweza kufundishwa. -## I denna Sektion +## Katika Sehemu Hii -I denna sektion kommer vi att lära oss om: -* [Perceptron](03-Perceptron/README.md), en av de tidigaste modellerna för neurala nätverk för tvåklassklassificering -* [Flerlagersnätverk](04-OwnFramework/README.md) med en kopplad anteckningsbok [hur man bygger vårt eget ramverk](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) -* [Ramverk för Neurala Nätverk](05-Frameworks/README.md), med dessa anteckningsböcker: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) och [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) -* [Överanpassning](../../../../lessons/3-NeuralNetworks/05-Frameworks) +Katika sehemu hii tutajifunza kuhusu: +* [Perceptron](03-Perceptron/README.md), mojawapo ya mifano ya awali ya mitandao ya neural kwa uainishaji wa darasa mbili +* [Mitandao ya Tabaka Nyingi](04-OwnFramework/README.md) na daftari lililoambatanishwa [jinsi ya kujenga mfumo wetu wenyewe](../../../../lessons/3-NeuralNetworks/04-OwnFramework/OwnFramework.ipynb) +* [Mifumo ya Mitandao ya Neural](05-Frameworks/README.md), na daftari hizi: [PyTorch](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroPyTorch.ipynb) na [Keras/Tensorflow](../../../../lessons/3-NeuralNetworks/05-Frameworks/IntroKerasTF.ipynb) +* [Overfitting](../../../../lessons/3-NeuralNetworks/05-Frameworks) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md index c276e4b6..4aaf3baf 100644 --- a/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md +++ b/translations/sw/lessons/4-ComputerVision/06-IntroCV/README.md @@ -1,31 +1,40 @@ -# Introduktion till Datorseende + +# Utangulizi wa Maono ya Kompyuta -[Datorseende](https://wikipedia.org/wiki/Computer_vision) är en disciplin vars syfte är att möjliggöra för datorer att få en hög nivå av förståelse av digitala bilder. Detta är en ganska bred definition, eftersom *förståelse* kan betyda många olika saker, inklusive att hitta ett objekt på en bild (**objektdetektering**), förstå vad som händer (**händelsedetektering**), beskriva en bild med text eller rekonstruera en scen i 3D. Det finns också särskilda uppgifter relaterade till mänskliga bilder: ålders- och känslomätningsuppskattning, ansiktsdetektering och identifiering, samt 3D-hållningsuppskattning, för att nämna några. +[Maono ya Kompyuta](https://wikipedia.org/wiki/Computer_vision) ni taaluma inayolenga kuwezesha kompyuta kuelewa kwa kiwango cha juu picha za kidijitali. Hii ni tafsiri pana, kwa sababu *kuelewa* kunaweza kumaanisha mambo mengi, ikiwa ni pamoja na kutambua kitu kwenye picha (**utambuzi wa kitu**), kuelewa kinachoendelea (**utambuzi wa tukio**), kuelezea picha kwa maandishi, au kujenga upya eneo kwa 3D. Pia kuna kazi maalum zinazohusiana na picha za binadamu: makadirio ya umri na hisia, utambuzi wa uso na utambulisho, na makadirio ya mkao wa 3D, kutaja chache. -## [För-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/106) -En av de enklaste uppgifterna inom datorseende är **bildklassificering**. +Moja ya kazi rahisi zaidi za maono ya kompyuta ni **uainishaji wa picha**. -Datorseende betraktas ofta som en gren av AI. Numera löses de flesta uppgifter inom datorseende med hjälp av neurala nätverk. Vi kommer att lära oss mer om den speciella typen av neurala nätverk som används för datorseende, [konvolutionella neurala nätverk](../07-ConvNets/README.md), under denna sektion. +Maono ya kompyuta mara nyingi huchukuliwa kuwa tawi la AI. Siku hizi, kazi nyingi za maono ya kompyuta zinatatuliwa kwa kutumia mitandao ya neva. Tutajifunza zaidi kuhusu aina maalum ya mitandao ya neva inayotumika kwa maono ya kompyuta, [mitandao ya neva ya convolutional](../07-ConvNets/README.md), katika sehemu hii. -Innan du skickar bilden till ett neuralt nätverk är det dock i många fall förnuftigt att använda några algoritmiska tekniker för att förbättra bilden. +Hata hivyo, kabla ya kupitisha picha kwenye mtandao wa neva, mara nyingi inafaa kutumia mbinu za kialgorithmu kuboresha picha. -Det finns flera Python-bibliotek tillgängliga för bildbehandling: +Kuna maktaba kadhaa za Python zinazopatikana kwa usindikaji wa picha: -* **[imageio](https://imageio.readthedocs.io/en/stable/)** kan användas för att läsa/skriva olika bildformat. Det stöder också ffmpeg, ett användbart verktyg för att konvertera videoramar till bilder. -* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (även känt som PIL) är något mer kraftfullt och stöder även viss bildmanipulation såsom morphing, palettjusteringar och mer. -* **[OpenCV](https://opencv.org/)** är ett kraftfullt bildbehandlingsbibliotek skrivet i C++, som har blivit den *de facto* standarden för bildbehandling. Det har ett praktiskt Python-gränssnitt. -* **[dlib](http://dlib.net/)** är ett C++-bibliotek som implementerar många maskininlärningsalgoritmer, inklusive några av datorseendets algoritmer. Det har också ett Python-gränssnitt och kan användas för utmanande uppgifter såsom ansikts- och ansiktslandmarksdetektering. +* **[imageio](https://imageio.readthedocs.io/en/stable/)** inaweza kutumika kusoma/kuandika miundo tofauti ya picha. Pia inaunga mkono ffmpeg, zana muhimu ya kubadilisha fremu za video kuwa picha. +* **[Pillow](https://pillow.readthedocs.io/en/stable/index.html)** (pia inajulikana kama PIL) ni yenye nguvu zaidi, na pia inaunga mkono baadhi ya urekebishaji wa picha kama vile kubadilisha maumbo, kurekebisha rangi, na zaidi. +* **[OpenCV](https://opencv.org/)** ni maktaba yenye nguvu ya usindikaji wa picha iliyoandikwa kwa C++, ambayo imekuwa kiwango cha *de facto* kwa usindikaji wa picha. Ina kiolesura cha Python kinachofaa. +* **[dlib](http://dlib.net/)** ni maktaba ya C++ inayotekeleza algorithimu nyingi za ujifunzaji wa mashine, ikiwa ni pamoja na baadhi ya algorithimu za Maono ya Kompyuta. Pia ina kiolesura cha Python, na inaweza kutumika kwa kazi ngumu kama vile utambuzi wa uso na alama za uso. ## OpenCV -[OpenCV](https://opencv.org/) anses vara den *de facto* standarden för bildbehandling. Det innehåller många användbara algoritmer, implementerade i C++. Du kan även anropa OpenCV från Python. +[OpenCV](https://opencv.org/) inachukuliwa kuwa kiwango cha *de facto* kwa usindikaji wa picha. Ina algorithimu nyingi muhimu, zilizotekelezwa kwa C++. Unaweza pia kuita OpenCV kutoka Python. -En bra plats att lära sig OpenCV är [denna Learn OpenCV-kurs](https://learnopencv.com/getting-started-with-opencv/). I vår läroplan är vårt mål inte att lära oss OpenCV, utan att visa dig några exempel på när det kan användas och hur. +Mahali pazuri pa kujifunza OpenCV ni [kozi hii ya Jifunze OpenCV](https://learnopencv.com/getting-started-with-opencv/). Katika mtaala wetu, lengo letu si kujifunza OpenCV, bali kukuonyesha baadhi ya mifano ya wakati inaweza kutumika, na jinsi. -### Ladda Bilder +### Kupakia Picha -Bilder i Python kan bekvämt representeras av NumPy-arrayer. Till exempel skulle gråskalebilder med storleken 320x200 pixlar lagras i en 200x320-array, och färgbilder av samma dimension skulle ha formen 200x320x3 (för 3 färgkanaler). För att ladda en bild kan du använda följande kod: +Picha katika Python zinaweza kuwakilishwa kwa urahisi na safu za NumPy. Kwa mfano, picha za kijivu zenye ukubwa wa pikseli 320x200 zingewekwa kwenye safu ya 200x320, na picha za rangi za vipimo hivyo hivyo zingekuwa na umbo la 200x320x3 (kwa njia 3 za rangi). Ili kupakia picha, unaweza kutumia msimbo ufuatao: ```python import cv2 @@ -35,78 +44,78 @@ im = cv2.imread('image.jpeg') plt.imshow(im) ``` -Traditionellt använder OpenCV BGR (Blå-Grön-Röd) kodning för färgbilder, medan resten av Python-verktygen använder den mer traditionella RGB (Röd-Grön-Blå). För att bilden ska se korrekt ut måste du konvertera den till RGB-färgrymden, antingen genom att byta dimensioner i NumPy-arrayen eller genom att anropa en OpenCV-funktion: +Kiasili, OpenCV hutumia usimbaji wa BGR (Blue-Green-Red) kwa picha za rangi, wakati zana zingine za Python hutumia RGB (Red-Green-Blue) ya jadi zaidi. Ili picha ionekane sawa, unahitaji kuibadilisha kuwa nafasi ya rangi ya RGB, ama kwa kubadilisha vipimo kwenye safu ya NumPy, au kwa kuita kazi ya OpenCV: ```python im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) ``` -De samma `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. +Kazi hiyo hiyo ya `cvtColor` inaweza kutumika kufanya mabadiliko mengine ya nafasi ya rangi kama vile kubadilisha picha kuwa kijivu au nafasi ya rangi ya HSV (Hue-Saturation-Value). -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). +Unaweza pia kutumia OpenCV kupakia fremu za video moja baada ya nyingine - mfano umetolewa kwenye zoezi [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb). -### Image Processing +### Usindikaji wa Picha -Before feeding an image to a neural network, you may want to apply several pre-processing steps. OpenCV can do many things, including: +Kabla ya kulisha picha kwenye mtandao wa neva, unaweza kutaka kutumia hatua kadhaa za usindikaji wa awali. OpenCV inaweza kufanya mambo mengi, ikiwa ni pamoja na: -* **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` funktionerna, som ofta är att föredra framför att justera ljusstyrka eller kontrast. -* Tillämpa olika [transformeringar](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) på bilden: - - **[Affina transformationer](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** kan vara användbara om du behöver kombinera rotation, ändring av storlek och snedvridning på bilden och du känner till käll- och destinationslägen för tre punkter i bilden. Affina transformationer håller parallella linjer parallella. - - **[Perspektivtransformationer](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** kan vara användbara när du känner till käll- och destinationspositionerna för 4 punkter i bilden. Till exempel, om du tar en bild av ett rektangulärt dokument via en smartphonekamera från en viss vinkel, och du vill göra en rektangulär bild av dokumentet självt. -* Förstå rörelse inuti bilden genom att använda **[optisk flöde](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. +* **Kubadilisha ukubwa** wa picha kwa kutumia `im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)` +* **Kufifisha** picha kwa kutumia `im = cv2.medianBlur(im,3)` au `im = cv2.GaussianBlur(im, (3,3), 0)` +* Kubadilisha **mwanga na utofauti** wa picha kunaweza kufanywa kwa kutumia manipulations za safu za NumPy, kama ilivyoelezwa [katika maelezo haya ya Stackoverflow](https://stackoverflow.com/questions/39308030/how-do-i-increase-the-contrast-of-an-image-in-python-opencv). +* Kutumia [thresholding](https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html) kwa kuita kazi za `cv2.threshold`/`cv2.adaptiveThreshold`, ambayo mara nyingi inapendelewa kuliko kurekebisha mwanga au utofauti. +* Kutumia [mabadiliko tofauti](https://docs.opencv.org/4.5.5/da/d6e/tutorial_py_geometric_transformations.html) kwenye picha: + - **[Mabadiliko ya Affine](https://docs.opencv.org/4.5.5/d4/d61/tutorial_warp_affine.html)** yanaweza kuwa muhimu ikiwa unahitaji kuchanganya mzunguko, kubadilisha ukubwa na kupinda picha na unajua eneo la chanzo na marudio la pointi tatu kwenye picha. Mabadiliko ya Affine huhifadhi mistari sambamba. + - **[Mabadiliko ya Mtazamo](https://medium.com/analytics-vidhya/opencv-perspective-transformation-9edffefb2143)** yanaweza kuwa muhimu unapojua nafasi za chanzo na marudio za pointi 4 kwenye picha. Kwa mfano, ukipiga picha ya hati ya mstatili kupitia kamera ya simu kutoka pembe fulani, na unataka kufanya picha ya mstatili ya hati yenyewe. +* Kuelewa harakati ndani ya picha kwa kutumia **[mtiririko wa macho](https://docs.opencv.org/4.5.5/d4/dee/tutorial_optical_flow.html)**. -## Exempel på att använda Datorseende +## Mifano ya Kutumia Maono ya Kompyuta -I vår [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) ger vi några exempel på när datorseende kan användas för att utföra specifika uppgifter: +Katika [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb), tunatoa mifano ya wakati maono ya kompyuta yanaweza kutumika kutekeleza kazi maalum: -* **Förbehandling av ett fotografi av en Braillebok**. Vi fokuserar på hur vi kan använda tröskelvärden, funktionsdetektering, perspektivtransformation och NumPy-manipulationer för att separera individuella Braille-symboler för vidare klassificering av ett neuralt nätverk. +* **Usindikaji wa awali wa picha ya kitabu cha Braille**. Tunazingatia jinsi tunavyoweza kutumia thresholding, utambuzi wa vipengele, mabadiliko ya mtazamo na manipulations za NumPy kutenganisha alama za Braille kwa uainishaji zaidi na mtandao wa neva. -![Braille Image](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sw.jpeg) | ![Braille Image Pre-processed](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sw.png) | ![Braille Symbols](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sw.png) +![Picha ya Braille](../../../../../translated_images/braille.341962ff76b1bd7044409371d3de09ced5028132aef97344ea4b7468c1208126.sw.jpeg) | ![Picha ya Braille Iliyosindikwa](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.sw.png) | ![Alama za Braille](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.sw.png) ----|-----|----- -> Bild från [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Picha kutoka [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detektera rörelse i video med hjälp av ramdiff**. Om kameran är fixerad, bör ramar från kameraflödet vara ganska lika varandra. Eftersom ramar representeras som arrayer, får vi genom att subtrahera dessa arrayer för två efterföljande ramar pixel-differensen, som bör vara låg för statiska ramar och bli högre när det finns betydande rörelse i bilden. +* **Kutambua harakati kwenye video kwa kutumia tofauti ya fremu**. Ikiwa kamera imetulia, basi fremu kutoka kwenye mlisho wa kamera zinapaswa kufanana sana. Kwa kuwa fremu zinawakilishwa kama safu, kwa kutoa tofauti ya safu hizo kwa fremu mbili mfululizo tutapata tofauti ya pikseli, ambayo inapaswa kuwa ndogo kwa fremu tuli, na kuwa kubwa zaidi mara kuna harakati kubwa kwenye picha. -![Image of video frames and frame differences](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png) +![Picha ya fremu za video na tofauti za fremu](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.sw.png) -> Bild från [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Picha kutoka [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -* **Detektera rörelse med hjälp av Optisk Flöde**. [Optisk flöde](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) gör att vi kan förstå hur individuella pixlar på videoramrörelser. Det finns två typer av optiskt flöde: +* **Kutambua harakati kwa kutumia Mtiririko wa Macho**. [Mtiririko wa macho](https://docs.opencv.org/3.4/d4/dee/tutorial_optical_flow.html) hutuwezesha kuelewa jinsi pikseli za kibinafsi kwenye fremu za video zinavyohama. Kuna aina mbili za mtiririko wa macho: - - **Tätt optiskt flöde** beräknar vektorfältet som visar för varje pixel var den rör sig. - - **Spars optiskt flöde** baseras på att ta några distinkta funktioner i bilden (t.ex. kanter) och bygga deras bana från ram till ram. + - **Mtiririko wa Macho wa Wingi** huhesabu uwanja wa vekta unaoonyesha kwa kila pikseli inakoelekea. + - **Mtiririko wa Macho wa Sehemu** unategemea kuchukua vipengele vya kipekee kwenye picha (mfano, kingo), na kujenga mwelekeo wake kutoka fremu hadi fremu. -![Image of Optical Flow](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png) +![Picha ya Mtiririko wa Macho](../../../../../translated_images/optical.1f4a94464579a83a10784f3c07fe7228514714b96782edf50e70ccd59d2d8c4f.sw.png) -> Bild från [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +> Picha kutoka [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## ✍️ Exempel Notebooks: OpenCV [prova OpenCV i praktiken](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +## ✍️ Notibuku za Mfano: OpenCV [jaribu OpenCV kwa Vitendo](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -Låt oss göra några experiment med OpenCV genom att utforska [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) +Tufanye majaribio na OpenCV kwa kuchunguza [OpenCV Notebook](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) -## Slutsats +## Hitimisho -Ibland kan relativt komplexa uppgifter som rörelsedetektering eller fingertoppsdetektering lösas enbart med datorseende. Därför är det mycket hjälpsamt att känna till de grundläggande teknikerna inom datorseende och vad bibliotek som OpenCV kan göra. +Wakati mwingine, kazi ngumu kama vile utambuzi wa harakati au utambuzi wa ncha za vidole zinaweza kutatuliwa kwa kutumia maono ya kompyuta pekee. Kwa hivyo, ni muhimu sana kujua mbinu za msingi za maono ya kompyuta, na kile maktaba kama OpenCV zinaweza kufanya. -## 🚀 Utmaning +## 🚀 Changamoto -Titta på [denna 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) från AI-showen för att lära dig om Cortic Tigers-projektet och hur de byggde en blockbaserad lösning för att demokratisera datorseendeuppgifter via en robot. Gör lite forskning om andra projekt som detta som hjälper nya inlärare att komma in i området. +Tazama [video hii](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) kutoka kipindi cha AI ili kujifunza kuhusu mradi wa Cortic Tigers na jinsi walivyojenga suluhisho la msingi wa vizuizi ili kurahisisha kazi za maono ya kompyuta kupitia roboti. Fanya utafiti juu ya miradi mingine kama hii inayosaidia wanafunzi wapya kuingia kwenye uwanja huu. -## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/206) -## Granskning & Självstudie +## Mapitio na Kujisomea -Läs mer om optiskt flöde [i denna fantastiska handledning](https://learnopencv.com/optical-flow-in-opencv/). +Soma zaidi kuhusu mtiririko wa macho [katika mafunzo haya mazuri](https://learnopencv.com/optical-flow-in-opencv/). -## [Uppgift](lab/README.md) +## [Kazi ya Nyumbani](lab/README.md) -I detta laboratorium kommer du att spela in en video med enkla gester, och ditt mål är att extrahera upp/ned/vänster/höger rörelser med hjälp av optiskt flöde. +Katika maabara hii, utachukua video yenye ishara rahisi, na lengo lako ni kutoa harakati za juu/chini/kushoto/kulia kwa kutumia mtiririko wa macho. -Palm Movement Frame +Fremu ya Harakati ya Kiganja -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md index 0ac030de..959eef58 100644 --- a/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md +++ b/translations/sw/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -1,23 +1,31 @@ -# Upptäckta rörelser med hjälp av optisk flöde + +# Kugundua Harakati kwa Kutumia Optical Flow -Laborationsuppgift från [AI for Beginners Curriculum](https://aka.ms/ai-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://aka.ms/ai-beginners). -## Uppgift +## Kazi -Tänk på [denna video](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), där en persons handflata rör sig vänster/höger/upp/ned mot en stabil bakgrund. -Du är tränad på data fram till oktober 2023. +Fikiria [video hii](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/palm-movement.mp4), ambapo kiganja cha mtu kinahama kushoto/kulia/juu/chini kwenye mandhari thabiti. -**Ditt mål** skulle vara att använda optiskt flöde för att avgöra vilka delar av videon som innehåller upp/ned/vänster/höger rörelser. +**Lengo lako** litakuwa kutumia Optical Flow kubaini ni sehemu zipi za video zinazoonyesha harakati za juu/chini/kushoto/kulia. -**Stretchmål** skulle vara att faktiskt spåra handflatan/fingerrörelsen med hjälp av hudton, som beskrivs [i detta blogginlägg](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) eller [här](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). +**Lengo la ziada** litakuwa kufuatilia harakati za kiganja/kidole kwa kutumia rangi ya ngozi, kama ilivyoelezwa [katika chapisho hili la blogu](https://dev.to/amarlearning/finger-detection-and-tracking-using-opencv-and-python-586m) au [hapa](http://www.benmeline.com/finger-tracking-with-opencv-and-python/). -## Startnotebook +## Daftari la Kuanza -Börja labben genom att öppna [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) +Anza maabara kwa kufungua [MovementDetection.ipynb](../../../../../../lessons/4-ComputerVision/06-IntroCV/lab/MovementDetection.ipynb) -## Sammanfattning +## Ujumbe wa Kujifunza -Ibland kan relativt komplexa uppgifter som rörelsedetektion eller fingertoppdetektering lösas enbart med hjälp av datorsyn. Därför är det mycket användbart att veta vad bibliotek som OpenCV kan göra. +Wakati mwingine, kazi ngumu kama kugundua harakati au kugundua ncha ya kidole zinaweza kutatuliwa kwa kutumia maono ya kompyuta pekee. Kwa hivyo, ni muhimu sana kujua kile maktaba kama OpenCV zinaweza kufanya. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för eventuella missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md index 77c2d3d5..0554176e 100644 --- a/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -1,64 +1,73 @@ -# Kända CNN-arkitekturer + +# Miundo Maarufu ya CNN ### VGG-16 -VGG-16 är ett nätverk som uppnådde 92,7% noggrannhet i ImageNet top-5 klassificering 2014. Det har följande lagerstruktur: +VGG-16 ni mtandao uliopata usahihi wa 92.7% katika uainishaji wa ImageNet top-5 mwaka 2014. Ina muundo wa tabaka zifuatazo: -![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg) +![Tabaka za ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg) -Som du kan se följer VGG en traditionell pyramidarkitektur, som är en sekvens av konvolution-poolingslager. +Kama unavyoona, VGG inafuata usanifu wa jadi wa piramidi, ambao ni mlolongo wa tabaka za convolution-pooling. -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg) +![Piramidi ya ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg) -> Bild från [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) +> Picha kutoka [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 är en familj av modeller som föreslogs av Microsoft Research 2015. Huvudidén med ResNet är att använda **residualblock**: +ResNet ni familia ya mifano iliyopendekezwa na Microsoft Research mwaka 2015. Wazo kuu la ResNet ni kutumia **residual blocks**: -> Bild från [denna artikel](https://arxiv.org/pdf/1512.03385.pdf) +> Picha kutoka [karatasi hii](https://arxiv.org/pdf/1512.03385.pdf) -Anledningen till att använda identitetspassering är att få vårt lager att förutsäga **skillnaden** mellan resultatet av ett tidigare lager och utgången av residualblocket - därav namnet *residual*. Dessa block är mycket lättare att träna, och man kan konstruera nätverk med flera hundra av dessa block (de vanligaste varianterna är ResNet-52, ResNet-101 och ResNet-152). +Sababu ya kutumia njia ya kupitisha utambulisho ni kuruhusu tabaka zetu kutabiri **tofauti** kati ya matokeo ya tabaka ya awali na matokeo ya residual block - hivyo jina *residual*. Vitalu hivi ni rahisi zaidi kufundisha, na mtu anaweza kujenga mitandao yenye mamia ya vitalu hivi (toleo maarufu zaidi ni ResNet-52, ResNet-101 na ResNet-152). -Du kan också tänka på detta nätverk som kapabelt att justera sin komplexitet efter datasetet. I början, när du börjar träna nätverket, är viktvärdena små, och mestadels av signalen går genom identitetslager. När träningen fortskrider och vikterna blir större, växer betydelsen av nätverksparametrarna, och nätverken justerar sig för att rymma den nödvändiga uttryckskraften för att korrekt klassificera träningsbilder. +Unaweza pia kufikiria mtandao huu kama unaoweza kurekebisha ugumu wake kulingana na seti ya data. Mwanzoni, unapokuwa unaanza kufundisha mtandao, thamani za uzito ni ndogo, na ishara nyingi hupitia tabaka za utambulisho. Kadri mafunzo yanavyoendelea na uzito unavyokuwa mkubwa, umuhimu wa vigezo vya mtandao huongezeka, na mtandao unarekebisha ili kufanikisha nguvu ya kueleza inayohitajika kwa uainishaji sahihi wa picha za mafunzo. ### Google Inception -Google Inception-arkitekturen tar denna idé ett steg längre och bygger varje nätverkslager som en kombination av flera olika vägar: +Usanifu wa Google Inception unachukua wazo hili hatua moja zaidi, na hujenga kila tabaka la mtandao kama mchanganyiko wa njia kadhaa tofauti: -> Bild från [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) +> Picha kutoka [Researchgate](https://www.researchgate.net/figure/Inception-module-with-dimension-reductions-left-and-schema-for-Inception-ResNet-v1_fig2_355547454) -Här behöver vi betona rollen av 1x1-konvolutioner, eftersom de i början inte verkar meningsfulla. Varför skulle vi behöva köra genom bilden med ett 1x1-filter? Men du måste komma ihåg att konvolutionsfilter också arbetar med flera djupkanaler (ursprungligen - RGB-färger, i efterföljande lager - kanaler för olika filter), och 1x1-konvolution används för att blanda dessa ingångskanaler tillsammans med hjälp av olika träningsbara vikter. Det kan också ses som nedsampling (pooling) över kanalens dimension. +Hapa, tunapaswa kusisitiza jukumu la convolution za 1x1, kwa sababu mwanzoni hazionekani kuwa na maana. Kwa nini tungehitaji kupitisha picha kwa kichujio cha 1x1? Hata hivyo, unahitaji kukumbuka kwamba vichujio vya convolution pia hufanya kazi na njia kadhaa za kina (awali - rangi za RGB, katika tabaka zinazofuata - njia za vichujio tofauti), na convolution ya 1x1 hutumika kuchanganya njia hizo za pembejeo kwa kutumia uzito tofauti wa mafunzo. Inaweza pia kuonekana kama kupunguza ukubwa (pooling) juu ya mwelekeo wa njia. -Här är [ett bra blogginlägg](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578) om ämnet, och [den ursprungliga artikeln](https://arxiv.org/pdf/1312.4400.pdf). +Hapa kuna [blogi nzuri kuhusu hili](https://medium.com/analytics-vidhya/talented-mr-1x1-comprehensive-look-at-1x1-convolution-in-deep-learning-f6b355825578), na [karatasi ya awali](https://arxiv.org/pdf/1312.4400.pdf). ### MobileNet -MobileNet är en familj av modeller med minskad storlek, lämpliga för mobila enheter. Använd dem om du har begränsade resurser och kan offra lite noggrannhet. Huvudidén bakom dem är den så kallade **djupseparerade konvolutionen**, som tillåter att representera konvolutionsfilter genom en sammansättning av rumsliga konvolutioner och 1x1-konvolution över djupkanaler. Detta minskar avsevärt antalet parametrar, vilket gör nätverket mindre i storlek och också lättare att träna med mindre data. +MobileNet ni familia ya mifano yenye ukubwa mdogo, inayofaa kwa vifaa vya rununu. Tumia ikiwa una rasilimali chache, na unaweza kukubali kupunguza usahihi kidogo. Wazo kuu nyuma yake ni kinachoitwa **depthwise separable convolution**, ambacho huruhusu kuwakilisha vichujio vya convolution kwa muundo wa convolution za anga na convolution za 1x1 juu ya njia za kina. Hii inapunguza sana idadi ya vigezo, na kufanya mtandao kuwa mdogo kwa ukubwa, na pia rahisi kufundisha kwa data kidogo. -Här är [ett bra blogginlägg om MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). +Hapa kuna [blogi nzuri kuhusu MobileNet](https://medium.com/analytics-vidhya/image-classification-with-mobilenet-cc6fbb2cd470). -## Slutsats +## Hitimisho -I denna enhet har du lärt dig det huvudsakliga konceptet bakom datorvisionsneuronätverk - konvolutionella nätverk. Verkliga arkitekturer som driver bildklassificering, objektdetektering och till och med bildgenereringsnätverk är alla baserade på CNN, bara med fler lager och några ytterligare träningsknep. +Katika somo hili, umejifunza dhana kuu nyuma ya mitandao ya neva ya maono ya kompyuta - mitandao ya convolution. Miundo halisi inayowezesha uainishaji wa picha, utambuzi wa vitu, na hata mitandao ya kizazi cha picha yote inategemea CNNs, lakini ikiwa na tabaka zaidi na mbinu za ziada za mafunzo. -## 🚀 Utmaning +## 🚀 Changamoto -I de medföljande anteckningarna finns det noteringar längst ner om hur man kan uppnå större noggrannhet. Gör några experiment för att se om du kan uppnå högre noggrannhet. +Katika daftari zinazofuatana, kuna maelezo chini kuhusu jinsi ya kupata usahihi mkubwa zaidi. Fanya majaribio ili kuona kama unaweza kufanikisha usahihi wa juu zaidi. -## [Efterföreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) +## [Jaribio baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) -## Granskning & Självstudie +## Mapitio na Kujisomea -Även om CNN oftast används för datorvisionsuppgifter, är de generellt bra för att extrahera mönster av fast storlek. Till exempel, om vi hanterar ljud, kan vi också vilja använda CNN för att leta efter specifika mönster i ljudsignalen - i vilket fall filter skulle vara 1-dimensionella (och detta CNN skulle kallas 1D-CNN). Dessutom används ibland 3D-CNN för att extrahera funktioner i flerdimensionellt utrymme, såsom vissa händelser som inträffar på video - CNN kan fånga vissa mönster av funktioner som förändras över tid. Gör en granskning och självstudie om andra uppgifter som kan göras med CNN. +Ingawa CNNs hutumika mara nyingi kwa kazi za Maono ya Kompyuta, kwa ujumla ni nzuri kwa kutoa mifumo ya ukubwa wa kudumu. Kwa mfano, ikiwa tunashughulika na sauti, tunaweza pia kutaka kutumia CNNs kutafuta mifumo maalum katika ishara ya sauti - ambapo vichujio vitakuwa vya mwelekeo mmoja (na CNN hii itaitwa 1D-CNN). Pia, wakati mwingine 3D-CNN hutumika kutoa sifa katika nafasi ya mwelekeo mwingi, kama vile matukio fulani yanayotokea kwenye video - CNN inaweza kunasa mifumo fulani ya mabadiliko ya sifa kwa muda. Fanya mapitio na kujisomea kuhusu kazi nyingine zinazoweza kufanywa na CNNs. -## [Uppgift](lab/README.md) +## [Kazi](lab/README.md) -I detta laboratorium är du ansvarig för att klassificera olika katt- och hundraser. Dessa bilder är mer komplexa än MNIST-datasetet och har högre dimensioner, och det finns mer än 10 klasser. +Katika maabara hii, unatakiwa kuainisha aina tofauti za paka na mbwa. Picha hizi ni changamano zaidi kuliko seti ya data ya MNIST na zina vipimo vya juu, na kuna zaidi ya madarasa 10. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md index 0a68d6d1..dbef5469 100644 --- a/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/README.md @@ -1,59 +1,67 @@ -# Konvolutionella Neurala Nätverk + +# Mitandao ya Neural ya Convolutional -Vi har tidigare sett att neurala nätverk är ganska bra på att hantera bilder, och till och med ett enkelskiktat perceptron kan känna igen handskrivna siffror från MNIST-datasetet med rimlig noggrannhet. Men MNIST-datasetet är mycket speciellt, och alla siffror är centrerade i bilden, vilket gör uppgiften enklare. +Tumeona hapo awali kwamba mitandao ya neural ni nzuri sana katika kushughulikia picha, na hata perceptron ya tabaka moja inaweza kutambua namba zilizoandikwa kwa mkono kutoka kwenye seti ya data ya MNIST kwa usahihi wa kuridhisha. Hata hivyo, seti ya data ya MNIST ni maalum sana, na namba zote ziko katikati ya picha, jambo ambalo hufanya kazi kuwa rahisi zaidi. -## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/107) -I verkliga livet vill vi kunna känna igen objekt på en bild oavsett deras exakta plats i bilden. Datorseende skiljer sig från generell klassificering, eftersom när vi försöker hitta ett visst objekt på bilden, skannar vi bilden för att leta efter specifika **mönster** och deras kombinationer. Till exempel, när vi letar efter en katt, kan vi först titta efter horisontella linjer, som kan bilda morrhår, och sedan kan en viss kombination av morrhår berätta för oss att det faktiskt är en bild av en katt. Relativ position och närvaro av vissa mönster är viktiga, och inte deras exakta position i bilden. +Katika maisha halisi, tunataka kuwa na uwezo wa kutambua vitu kwenye picha bila kujali eneo lao halisi ndani ya picha. Maono ya kompyuta ni tofauti na uainishaji wa kawaida, kwa sababu tunapojaribu kutafuta kitu fulani kwenye picha, tunachanganua picha tukitafuta **mifumo** fulani na mchanganyiko wake. Kwa mfano, tunapotafuta paka, tunaweza kwanza kutafuta mistari ya mlalo, ambayo inaweza kuunda sharubu, na kisha mchanganyiko fulani wa sharubu unaweza kutuambia kwamba ni picha ya paka. Nafasi ya jamaa na uwepo wa mifumo fulani ni muhimu, na si nafasi yao halisi kwenye picha. -För att extrahera mönster kommer vi att använda begreppet **konvolutionella filter**. Som du vet representeras en bild av en 2D-matris, eller en 3D-tensor med färgdjup. Att applicera ett filter innebär att vi tar en relativt liten **filterkärna**-matris, och för varje pixel i den ursprungliga bilden beräknar vi det vägda genomsnittet med grannpunkter. Vi kan se detta som ett litet fönster som glider över hela bilden och genomsnittar alla pixlar enligt vikterna i filterkärnan. +Ili kutoa mifumo, tutatumia dhana ya **vichujio vya convolutional**. Kama unavyojua, picha inawakilishwa na matriki ya 2D, au tensor ya 3D yenye kina cha rangi. Kutumia kichujio kunamaanisha kwamba tunachukua **kernel ya kichujio** ndogo, na kwa kila pikseli kwenye picha ya awali tunahesabu wastani wa uzito na pointi za jirani. Tunaweza kuona hili kama dirisha dogo linaloteleza juu ya picha nzima, na kujumlisha pikseli zote kulingana na uzito katika kernel ya kichujio. -![Vertikalt Kantfilter](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png) | ![Horisontellt Kantfilter](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png) +![Kichujio cha Mstari Wima](../../../../../translated_images/filter-vert.b7148390ca0bc356ddc7e55555d2481819c1e86ddde9dce4db5e71a69d6f887f.sw.png) | ![Kichujio cha Mstari Mlalo](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.sw.png) ----|---- -> Bild av Dmitry Soshnikov +> Picha na Dmitry Soshnikov -Till exempel, om vi applicerar 3x3 vertikala kant- och horisontella kantfilter på MNIST-siffrorna, kan vi få fram höjdpunkter (t.ex. höga värden) där det finns vertikala och horisontella kanter i vår ursprungliga bild. Så dessa två filter kan användas för att "leta efter" kanter. På samma sätt kan vi designa olika filter för att leta efter andra låg-nivå mönster: -Du är tränad på data fram till oktober 2023. +Kwa mfano, tukitumia vichujio vya mstari wima na mlalo vya 3x3 kwenye namba za MNIST, tunaweza kupata sehemu zilizojitokeza (mfano, thamani za juu) ambapo kuna mistari wima na mlalo kwenye picha yetu ya awali. Kwa hivyo, vichujio hivyo viwili vinaweza kutumika "kutafuta" mistari. Vilevile, tunaweza kubuni vichujio tofauti kutafuta mifumo mingine ya kiwango cha chini: -> Bild av [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) +> Picha ya [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) -Men medan vi kan designa filter för att manuellt extrahera vissa mönster, kan vi också designa nätverket på ett sätt så att det lär sig mönstren automatiskt. Det är en av huvudidéerna bakom CNN. +Hata hivyo, wakati tunaweza kubuni vichujio ili kutoa mifumo fulani kwa mikono, tunaweza pia kubuni mtandao kwa njia ambayo utajifunza mifumo hiyo kiotomatiki. Hii ni moja ya mawazo makuu nyuma ya CNN. -## Huvudidéer bakom CNN +## Mawazo Makuu Nyuma ya CNN -Sättet som CNN:er fungerar på baseras på följande viktiga idéer: +Njia ambayo CNN hufanya kazi inategemea mawazo haya muhimu: -* Konvolutionella filter kan extrahera mönster -* Vi kan designa nätverket på ett sätt så att filter tränas automatiskt -* Vi kan använda samma metod för att hitta mönster i hög-nivå egenskaper, inte bara i den ursprungliga bilden. Således fungerar CNN:s funktionsutvinning på en hierarki av funktioner, som börjar från låg-nivå pixelkombinationer, upp till högre nivå kombinationer av bilddelar. +* Vichujio vya convolutional vinaweza kutoa mifumo +* Tunaweza kubuni mtandao kwa njia ambayo vichujio vinajifunza kiotomatiki +* Tunaweza kutumia mbinu hiyo hiyo kutafuta mifumo kwenye vipengele vya kiwango cha juu, si tu kwenye picha ya awali. Kwa hivyo uchimbaji wa vipengele wa CNN hufanya kazi kwenye uongozi wa vipengele, kuanzia mchanganyiko wa pikseli za kiwango cha chini, hadi mchanganyiko wa kiwango cha juu wa sehemu za picha. -![Hierarkisk Funktionsutvinning](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sw.png) +![Uchimbaji wa Vipengele vya Kihierarkia](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.sw.png) -> Bild från [en artikel av Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), baserat på [deras forskning](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) +> Picha kutoka [karatasi ya Hislop-Lynch](https://www.semanticscholar.org/paper/Computer-vision-based-pedestrian-trajectory-Hislop-Lynch/26e6f74853fc9bbb7487b06dc2cf095d36c9021d), kulingana na [tafiti yao](https://dl.acm.org/doi/abs/10.1145/1553374.1553453) -## ✍️ Övningar: Konvolutionella Neurala Nätverk +## ✍️ Mazoezi: Mitandao ya Neural ya Convolutional -Låt oss fortsätta utforska hur konvolutionella neurala nätverk fungerar, och hur vi kan uppnå träningsbara filter, genom att arbeta igenom de motsvarande anteckningarna: +Tuendelee kuchunguza jinsi mitandao ya neural ya convolutional inavyofanya kazi, na jinsi tunavyoweza kufanikisha vichujio vinavyoweza kufundishwa, kwa kufanya kazi kupitia daftari husika: -* [Konvolutionella Neurala Nätverk - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) -* [Konvolutionella Neurala Nätverk - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) +* [Mitandao ya Neural ya Convolutional - PyTorch](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb) +* [Mitandao ya Neural ya Convolutional - TensorFlow](../../../../../lessons/4-ComputerVision/07-ConvNets/ConvNetsTF.ipynb) -## Pyramidarkitektur +## Muundo wa Piramidi -De flesta CNN:er som används för bildbehandling följer en så kallad pyramidarkitektur. Det första konvolutionella lagret som tillämpas på de ursprungliga bilderna har vanligtvis ett relativt lågt antal filter (8-16), som motsvarar olika pixelkombinationer, såsom horisontella/vertikala linjer av streck. På nästa nivå minskar vi det spatiala dimensionerna av nätverket och ökar antalet filter, vilket motsvarar fler möjliga kombinationer av enkla egenskaper. Med varje lager, när vi rör oss mot den slutliga klassificeraren, minskar de spatiala dimensionerna av bilden, och antalet filter ökar. +CNN nyingi zinazotumika kwa usindikaji wa picha hufuata kile kinachoitwa muundo wa piramidi. Tabaka la kwanza la convolutional linalotumika kwenye picha za awali kwa kawaida lina idadi ndogo ya vichujio (8-16), ambavyo vinahusiana na mchanganyiko tofauti wa pikseli, kama vile mistari ya mlalo/wima ya mistari. Katika kiwango kinachofuata, tunapunguza vipimo vya anga vya mtandao, na kuongeza idadi ya vichujio, ambavyo vinahusiana na mchanganyiko zaidi wa vipengele rahisi. Kwa kila tabaka, tunapokaribia mklasifaya wa mwisho, vipimo vya anga vya picha hupungua, na idadi ya vichujio huongezeka. -Som ett exempel, låt oss titta på arkitekturen av VGG-16, ett nätverk som uppnådde 92,7% noggrannhet i ImageNets top-5 klassificering 2014: +Kwa mfano, hebu tuangalie muundo wa VGG-16, mtandao uliopata usahihi wa 92.7% katika uainishaji wa juu-5 wa ImageNet mwaka 2014: -![ImageNet Lager](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg) +![Tabaka za ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.sw.jpg) -![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg) +![Piramidi ya ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.sw.jpg) -> Bild från [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) +> Picha kutoka [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) -## Bästa Kända CNN-arkitekturer +## Miundo Maarufu ya CNN -[Fortsätt din studie om de bäst kända CNN-arkitekturerna](CNN_Architectures.md) +[Endelea kujifunza kuhusu miundo maarufu ya CNN](CNN_Architectures.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oexaktheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md index 028c8765..9697f237 100644 --- a/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md +++ b/translations/sw/lessons/4-ComputerVision/07-ConvNets/lab/README.md @@ -1,20 +1,29 @@ -# Klassificering av Husdjurs Ansikten + +# Uainishaji wa Nyuso za Wanyama wa Kipenzi -Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Tänk dig att du behöver utveckla en applikation för en djurförskola för att katalogisera alla husdjur. En av de fantastiska funktionerna i en sådan applikation skulle vara att automatiskt upptäcka rasen från ett fotografi. Detta kan framgångsrikt göras med hjälp av neurala nätverk. +Fikiria unahitaji kuunda programu kwa ajili ya kitalu cha wanyama wa kipenzi ili kuorodhesha wanyama wote. Moja ya vipengele bora vya programu kama hiyo itakuwa kugundua moja kwa moja aina ya mnyama kutoka kwenye picha. Hili linaweza kufanikiwa kwa kutumia mitandao ya neva. -Du behöver träna ett konvolutionellt neuralt nätverk för att klassificera olika raser av katter och hundar med hjälp av **Pet Faces** datasetet. +Unahitaji kufundisha mtandao wa neva wa convolutional ili kuainisha aina tofauti za paka na mbwa kwa kutumia seti ya data ya **Pet Faces**. -## Datasetet +## Seti ya Data -Vi kommer att använda **Pet Faces** datasetet, som härstammar från [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) husdjursdatasetet. Det innehåller 35 olika raser av hundar och katter. +Tutatumia seti ya data ya **Pet Faces**, inayotokana na seti ya data ya wanyama wa kipenzi ya [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). Inayo aina 35 tofauti za mbwa na paka. -![Datasetet vi kommer att hantera](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png) +![Seti ya data tutakayoshughulikia](../../../../../../translated_images/data.50b2a9d5484bdbf0f52f5765b381cec9efe2bd296a98f007f90bedb6ac67f2a8.sw.png) -För att ladda ner datasetet, använd denna kodsnutt: +Ili kupakua seti ya data, tumia kipande hiki cha msimbo: ```python !wget https://mslearntensorflowlp.blob.core.windows.net/data/petfaces.tar.gz @@ -22,13 +31,13 @@ För att ladda ner datasetet, använd denna kodsnutt: !rm petfaces.tar.gz ``` -## Starta Anteckningsbok +## Kuanzisha Daftari -Börja laborationen med att öppna [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) +Anza maabara kwa kufungua [PetFaces.ipynb](../../../../../../lessons/4-ComputerVision/07-ConvNets/lab/PetFaces.ipynb) -## Sammanfattning +## Jambo la Kujifunza -Du har löst ett relativt komplext problem med bildklassificering från grunden! Det fanns ganska många klasser, och du lyckades fortfarande få en rimlig noggrannhet! Det är också meningsfullt att mäta top-k noggrannhet, eftersom det är lätt att förväxla vissa av klasserna som inte är tydligt olika ens för människor. +Umesuluhisha tatizo changamani la uainishaji wa picha kutoka mwanzo! Kulikuwa na madarasa mengi, na bado uliweza kupata usahihi wa kuridhisha! Pia inafaa kupima usahihi wa top-k, kwa sababu ni rahisi kuchanganya baadhi ya madarasa ambayo hata kwa wanadamu si rahisi kuyatofautisha wazi. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md index 4bf8f23a..b6b1284d 100644 --- a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/README.md @@ -1,81 +1,90 @@ -# Förtränade Nätverk och Överföringsinlärning + +# Mitandao Iliyojifunza Tayari na Uhamishaji wa Kujifunza -Att träna CNN:er kan ta mycket tid, och en stor mängd data krävs för den uppgiften. Mycket av tiden går åt till att lära sig de bästa lågnivåfiltrena som ett nätverk kan använda för att extrahera mönster från bilder. En naturlig fråga uppstår - kan vi använda ett neuralt nätverk som har tränats på en dataset och anpassa det för att klassificera olika bilder utan att behöva en fullständig träningsprocess? +Kufundisha CNNs kunaweza kuchukua muda mwingi, na data nyingi zinahitajika kwa kazi hiyo. Hata hivyo, muda mwingi hutumika kujifunza vichujio vya kiwango cha chini ambavyo mtandao unaweza kutumia kutoa mifumo kutoka kwenye picha. Swali la asili linajitokeza - je, tunaweza kutumia mtandao wa neva uliowekwa tayari kwenye seti moja ya data na kuubadilisha ili kuainisha picha tofauti bila kuhitaji mchakato kamili wa mafunzo? -## [För-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) +## [Jaribio la Kabla ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/108) -Denna metod kallas **överföringsinlärning**, eftersom vi överför viss kunskap från en neuralt nätverksmodell till en annan. Vid överföringsinlärning börjar vi vanligtvis med en förtränad modell, som har tränats på en stor bilddataset, såsom **ImageNet**. Dessa modeller kan redan göra ett bra jobb med att extrahera olika egenskaper från generiska bilder, och i många fall kan det att bara bygga en klassificerare ovanpå dessa extraherade egenskaper ge ett bra resultat. +Mbinu hii inaitwa **uhamishaji wa kujifunza**, kwa sababu tunahamisha maarifa fulani kutoka kwa mfano mmoja wa mtandao wa neva kwenda mwingine. Katika uhamishaji wa kujifunza, mara nyingi tunaanza na mfano uliowekwa tayari, ambao umefundishwa kwenye seti kubwa ya data ya picha, kama vile **ImageNet**. Mifano hiyo tayari inaweza kufanya kazi nzuri ya kutoa vipengele tofauti kutoka kwa picha za jumla, na mara nyingi kujenga kionainishaji juu ya vipengele hivyo vilivyotolewa kunaweza kutoa matokeo mazuri. -> ✅ Överföringsinlärning är ett begrepp som du hittar inom andra akademiska områden, såsom utbildning. Det hänvisar till processen att ta kunskap från ett område och tillämpa den på ett annat. +> ✅ Uhamishaji wa Kujifunza ni neno linalopatikana katika nyanja nyingine za kitaaluma, kama vile Elimu. Linahusu mchakato wa kuchukua maarifa kutoka uwanja mmoja na kuyatumia katika mwingine. -## Förtränade Modeller som Funktionsextraktorer +## Mifano Iliyojifunza Tayari kama Vitoa Vipengele -De konvolutionella nätverken som vi har pratat om i den föregående sektionen innehöll ett antal lager, där varje lager är avsett att extrahera vissa egenskaper från bilden, som börjar med lågnivåpixelkombinationer (såsom horisontella/vertikala linjer eller streck), upp till högre nivåkombinationer av egenskaper, motsvarande saker som ett öga på en låga. Om vi tränar CNN på en tillräckligt stor dataset av generiska och mångsidiga bilder, bör nätverket lära sig att extrahera dessa gemensamma egenskaper. +Mitandao ya convolutional tuliyozungumzia katika sehemu iliyopita ina tabaka kadhaa, kila moja ikiwa na jukumu la kutoa vipengele fulani kutoka kwenye picha, kuanzia mchanganyiko wa pikseli wa kiwango cha chini (kama vile mistari ya mlalo/wima au mistari ya mdundo), hadi mchanganyiko wa kiwango cha juu wa vipengele, vinavyohusiana na vitu kama jicho la moto. Ikiwa tutafundisha CNN kwenye seti kubwa ya data ya picha za jumla na tofauti, mtandao unapaswa kujifunza kutoa vipengele hivyo vya kawaida. -Både Keras och PyTorch innehåller funktioner för att enkelt ladda förtränade neurala nätverksvikter för vissa vanliga arkitekturer, de flesta av vilka har tränats på bilder från ImageNet. De mest använda beskrivs på sidan [CNN Arkitekturer](../07-ConvNets/CNN_Architectures.md) från den tidigare lektionen. Specifikt kan du överväga att använda en av följande: +Zote Keras na PyTorch zina kazi za kupakia kwa urahisi uzito wa mitandao ya neva iliyojifunza tayari kwa baadhi ya usanifu wa kawaida, nyingi zikiwa zimefundishwa kwenye picha za ImageNet. Zile zinazotumika mara nyingi zimeelezwa kwenye ukurasa wa [Usanifu wa CNN](../07-ConvNets/CNN_Architectures.md) kutoka somo lililopita. Hasa, unaweza kufikiria kutumia mojawapo ya zifuatazo: -* **VGG-16/VGG-19** som är relativt enkla modeller som fortfarande ger bra noggrannhet. Att ofta använda VGG som ett första försök är ett bra val för att se hur överföringsinlärning fungerar. -* **ResNet** är en familj av modeller som föreslagits av Microsoft Research 2015. De har fler lager och tar därför mer resurser. -* **MobileNet** är en familj av modeller med minskad storlek, lämpliga för mobila enheter. Använd dem om du har ont om resurser och kan offra lite noggrannhet. +* **VGG-16/VGG-19** ambazo ni mifano rahisi inayotoa usahihi mzuri. Mara nyingi kutumia VGG kama jaribio la kwanza ni chaguo zuri kuona jinsi uhamishaji wa kujifunza unavyofanya kazi. +* **ResNet** ni familia ya mifano iliyopendekezwa na Microsoft Research mwaka 2015. Ina tabaka nyingi zaidi, na hivyo inahitaji rasilimali zaidi. +* **MobileNet** ni familia ya mifano yenye ukubwa mdogo, inayofaa kwa vifaa vya rununu. Tumia ikiwa una rasilimali chache na unaweza kukubali kupoteza usahihi kidogo. -Här är exempel på egenskaper som extraherats från en bild av en katt av VGG-16-nätverket: +Hapa kuna sampuli za vipengele vilivyotolewa kutoka kwenye picha ya paka na mtandao wa VGG-16: -![Egenskaper extraherade av VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png) +![Vipengele vilivyotolewa na VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.sw.png) -## Katter vs. Hundar Dataset +## Seti ya Data ya Paka dhidi ya Mbwa -I det här exemplet kommer vi att använda en dataset av [Katter och Hundar](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), som ligger mycket nära ett verkligt bildklassificeringsscenario. +Katika mfano huu, tutatumia seti ya data ya [Paka na Mbwa](https://www.microsoft.com/download/details.aspx?id=54765&WT.mc_id=academic-77998-cacaste), ambayo inakaribia hali halisi ya uainishaji wa picha. -## ✍️ Övning: Överföringsinlärning +## ✍️ Zoezi: Uhamishaji wa Kujifunza -Låt oss se överföringsinlärning i praktiken i motsvarande anteckningsböcker: +Hebu tuone uhamishaji wa kujifunza ukiwa kazini katika daftari zinazohusiana: -* [Överföringsinlärning - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) -* [Överföringsinlärning - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) +* [Uhamishaji wa Kujifunza - PyTorch](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningPyTorch.ipynb) +* [Uhamishaji wa Kujifunza - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/TransferLearningTF.ipynb) -## Visualisering av Fiendens Katt +## Kuonyesha Picha ya Paka Adhimu -Det förtränade neurala nätverket innehåller olika mönster inuti sin *hjärna*, inklusive begrepp om **ideal katt** (liksom ideal hund, ideal zebra, etc.). Det skulle vara intressant att på något sätt **visualisera denna bild**. Det är dock inte enkelt, eftersom mönster är spridda över nätverksvikterna och också organiserade i en hierarkisk struktur. +Mtandao wa neva uliowekwa tayari una mifumo tofauti ndani ya *ubongo* wake, ikijumuisha dhana za **paka bora** (pamoja na mbwa bora, pundamilia bora, n.k.). Itakuwa ya kuvutia kujaribu **kuonyesha picha hii**. Hata hivyo, si rahisi, kwa sababu mifumo imeenea kwenye uzito wa mtandao, na pia imepangwa katika muundo wa kihierarkia. -En metod vi kan använda är att börja med en slumpmässig bild och sedan försöka använda **gradientnedstigningsoptimering** för att justera den bilden på ett sätt så att nätverket börjar tro att det är en katt. +Njia moja tunayoweza kutumia ni kuanza na picha ya nasibu, kisha kujaribu kutumia mbinu ya **optimizoni ya mteremko wa gradienti** kurekebisha picha hiyo kwa njia ambayo mtandao unaanza kufikiria kuwa ni paka. -![Bildoptimeringsloop](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sw.png) +![Mzunguko wa Optimizoni ya Picha](../../../../../translated_images/ideal-cat-loop.999fbb8ff306e044f997032f4eef9152b453e6a990e449bbfb107de2493cc37e.sw.png) -Men om vi gör detta, kommer vi att få något som liknar slumpmässigt brus. Detta beror på att *det finns många sätt att få nätverket att tro att inmatningsbilden är en katt*, inklusive vissa som inte ger visuell mening. Medan dessa bilder innehåller många mönster som är typiska för en katt, finns det inget som begränsar dem att vara visuellt distinkta. +Hata hivyo, tukifanya hivi, tutapata kitu kinachofanana sana na kelele ya nasibu. Hii ni kwa sababu *kuna njia nyingi za kufanya mtandao kufikiria picha ya ingizo ni paka*, ikijumuisha zile ambazo hazina maana kwa macho. Ingawa picha hizo zina mifumo mingi ya kawaida kwa paka, hakuna kinachozuia kuwa za kuvutia kwa macho. -För att förbättra resultatet kan vi lägga till en annan term i förlustfunktionen, som kallas **variationsförlust**. Det är en metrisk som visar hur lika angränsande pixlar i bilden är. Att minimera variationsförlust gör bilden jämnare och blir av med brus - vilket avslöjar mer visuellt tilltalande mönster. Här är ett exempel på sådana "ideala" bilder, som klassificeras som katt och zebra med hög sannolikhet: +Ili kuboresha matokeo, tunaweza kuongeza kipengele kingine kwenye kazi ya hasara, kinachoitwa **hasara ya tofauti**. Ni kipimo kinachoonyesha jinsi pikseli za jirani za picha zinavyofanana. Kupunguza hasara ya tofauti hufanya picha kuwa laini, na kuondoa kelele - hivyo kufichua mifumo ya kuvutia zaidi kwa macho. Hapa kuna mfano wa picha kama hizo "bora", zinazotambuliwa kama paka na kama pundamilia kwa uwezekano mkubwa: -![Ideal Katt](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png) | ![Ideal Zebra](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png) +![Paka Bora](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.sw.png) | ![Pundamilia Bora](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.sw.png) -----|----- - *Ideal Katt* | *Ideal Zebra* + *Paka Bora* | *Pundamilia Bora* -En liknande metod kan användas för att utföra så kallade **fiendens attacker** på ett neuralt nätverk. Anta att vi vill lura ett neuralt nätverk och få en hund att se ut som en katt. Om vi tar en bild av en hund, som nätverket känner igen som en hund, kan vi sedan justera den lite med hjälp av gradientnedstigningsoptimering, tills nätverket börjar klassificera den som en katt: +Njia kama hiyo inaweza kutumika kufanya kile kinachoitwa **mashambulizi ya hila** kwenye mtandao wa neva. Tuseme tunataka kuudanganya mtandao wa neva na kufanya mbwa aonekane kama paka. Ikiwa tutachukua picha ya mbwa, ambayo inatambuliwa na mtandao kama mbwa, tunaweza kuibadilisha kidogo kwa kutumia optimizoni ya mteremko wa gradienti, hadi mtandao uanze kuitambua kama paka: -![Bild av en Hund](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sw.png) | ![Bild av en hund klassificerad som en katt](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sw.png) +![Picha ya Mbwa](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.sw.png) | ![Picha ya mbwa inayotambuliwa kama paka](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.sw.png) -----|----- -*Originalbild av en hund* | *Bild av en hund klassificerad som en katt* +*Picha ya asili ya mbwa* | *Picha ya mbwa inayotambuliwa kama paka* -Se koden för att återskapa resultaten ovan i följande anteckningsbok: +Tazama msimbo wa kuzalisha matokeo hapo juu katika daftari ifuatayo: -* [Ideal och Fiendens Katt - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) +* [Paka Bora na wa Hila - TensorFlow](../../../../../lessons/4-ComputerVision/08-TransferLearning/AdversarialCat_TF.ipynb) -## Slutsats +## Hitimisho -Genom att använda överföringsinlärning kan du snabbt sätta ihop en klassificerare för en anpassad objektklassificeringsuppgift och uppnå hög noggrannhet. Du kan se att mer komplexa uppgifter som vi löser nu kräver högre beräkningskraft och inte enkelt kan lösas på CPU:n. I nästa enhet kommer vi att försöka använda en mer lättviktsimplementation för att träna samma modell med lägre beräkningsresurser, vilket resulterar i något lägre noggrannhet. +Kwa kutumia uhamishaji wa kujifunza, unaweza kuunda haraka kionainishaji kwa kazi ya uainishaji wa kitu maalum na kufanikisha usahihi wa juu. Unaweza kuona kwamba kazi ngumu zaidi tunazotatua sasa zinahitaji nguvu kubwa ya kompyuta, na haziwezi kutatuliwa kwa urahisi kwenye CPU. Katika kitengo kijacho, tutajaribu kutumia utekelezaji mwepesi zaidi kufundisha mfano huo kwa kutumia rasilimali za chini, ambayo husababisha kupungua kidogo kwa usahihi. -## 🚀 Utmaning +## 🚀 Changamoto -I de medföljande anteckningsböckerna finns det anteckningar i botten om hur överförd kunskap fungerar bäst med något liknande träningsdata (kanske en ny typ av djur). Gör några experiment med helt nya typer av bilder för att se hur bra eller dåligt dina överförda kunskapsmodeller presterar. +Katika daftari zinazohusiana, kuna maelezo chini kuhusu jinsi maarifa ya uhamishaji hufanya kazi vyema na data ya mafunzo inayofanana kiasi (aina mpya ya mnyama, labda). Fanya majaribio na aina mpya kabisa za picha ili kuona jinsi mifano yako ya maarifa ya uhamishaji inavyofanya kazi vizuri au vibaya. -## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) +## [Jaribio la Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Granskning & Självstudie +## Mapitio na Kujisomea -Läs igenom [TrainingTricks.md](TrainingTricks.md) för att fördjupa din kunskap om några andra sätt att träna dina modeller. +Soma [TrainingTricks.md](TrainingTricks.md) ili kuongeza maarifa yako kuhusu njia nyingine za kufundisha mifano yako. -## [Uppgift](lab/README.md) +## [Kazi](lab/README.md) -I detta labb kommer vi att använda verkliga [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) husdjursdataset med 35 raser av katter och hundar, och vi kommer att bygga en överföringsinlärningsklassificerare. +Katika maabara hii, tutatumia seti halisi ya data ya wanyama wa kipenzi ya [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) yenye aina 35 za paka na mbwa, na tutajenga kionainishaji cha uhamishaji wa kujifunza. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md index 360ba92d..335e0296 100644 --- a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md @@ -1,108 +1,117 @@ -# Djupinlärningstricks för träning + +# Mbinu za Mafunzo ya Kujifunza Kina -När neurala nätverk blir djupare blir träningsprocessen mer och mer utmanande. Ett stort problem är så kallade [försvinnande gradienter](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) eller [exploderande gradienter](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Detta inlägg](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) ger en bra introduktion till dessa problem. +Kadri mitandao ya neva inavyozidi kuwa na kina, mchakato wa mafunzo yake unazidi kuwa changamoto. Tatizo moja kubwa ni kinachojulikana kama [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem) au [exploding gradients](https://deepai.org/machine-learning-glossary-and-terms/exploding-gradient-problem#:~:text=Exploding%20gradients%20are%20a%20problem,updates%20are%20small%20and%20controlled.). [Chapisho hili](https://towardsdatascience.com/the-vanishing-exploding-gradient-problem-in-deep-neural-networks-191358470c11) linatoa utangulizi mzuri kuhusu matatizo haya. -För att göra träningen av djupa nätverk mer effektiv finns det några tekniker som kan användas. +Ili kufanya mafunzo ya mitandao yenye kina kuwa bora zaidi, kuna mbinu kadhaa zinazoweza kutumika. -## Hålla värden inom rimligt intervall +## Kuweka Thamani Kwenye Kipimo Kinachofaa -För att göra numeriska beräkningar mer stabila vill vi säkerställa att alla värden inom vårt neurala nätverk ligger inom ett rimligt intervall, typiskt [-1..1] eller [0..1]. Det är inte ett mycket strikt krav, men naturen av flyttalsberäkningar är sådan att värden av olika magnituder inte kan manipuleras tillsammans på ett exakt sätt. Till exempel, om vi lägger till 10-10 och 1010, är vi troligen att få 1010, eftersom det mindre värdet skulle "konverteras" till samma ordning som det större, och därmed skulle mantissan gå förlorad. +Ili kufanya hesabu za namba kuwa thabiti zaidi, tunataka kuhakikisha kuwa thamani zote ndani ya mtandao wetu wa neva ziko kwenye kipimo kinachofaa, kwa kawaida [-1..1] au [0..1]. Hili si hitaji kali sana, lakini asili ya hesabu za namba za kuelea ni kwamba thamani za ukubwa tofauti haziwezi kushughulikiwa kwa usahihi pamoja. Kwa mfano, tukijumlisha 10-10 na 1010, kuna uwezekano mkubwa tutapata 1010, kwa sababu thamani ndogo itabadilishwa kuwa kiwango sawa na ile kubwa, na hivyo mantissa itapotea. -De flesta aktiveringsfunktioner har icke-linjäriteter runt [-1..1], och därför är det rimligt att skala all indata till [-1..1] eller [0..1] intervall. +Kazi nyingi za uanzishaji zina hali zisizo za mstari karibu na [-1..1], na kwa hivyo inafaa kupima data yote ya ingizo kwenye kipimo cha [-1..1] au [0..1]. -## Initial Viktinitialisering +## Uanzishaji wa Awali wa Uzito -Idealiskt vill vi att värdena ska ligga inom samma intervall efter att ha passerat genom nätverkslager. Därför är det viktigt att initiera vikterna på ett sätt som bevarar värdesfördelningen. +Kwa hali bora, tunataka thamani ziwe kwenye kipimo sawa baada ya kupita kwenye tabaka za mtandao. Kwa hivyo ni muhimu kuanzisha uzito kwa njia ambayo inahifadhi usambazaji wa thamani. -Normalfördelning **N(0,1)** är inte en bra idé, eftersom om vi har *n* ingångar, skulle standardavvikelsen av utdata vara *n*, och värden är troligen att hoppa utanför [0..1] intervallet. +Usambazaji wa kawaida **N(0,1)** si wazo zuri, kwa sababu ikiwa tuna *n* ingizo, upotofu wa kawaida wa matokeo utakuwa *n*, na thamani zinaweza kuruka nje ya kipimo cha [0..1]. -Följande initialiseringar används ofta: +Uanzishaji ufuatao mara nyingi hutumika: - * Uniform fördelning -- `uniform` - * **N(0,1/n)** -- `gaussian` - * **N(0,1/√n_in)** garanterar att för ingångar med noll medelvärde och standardavvikelse 1, skulle samma medelvärde/standardavvikelse förbli - * **N(0,√2/(n_in+n_out))** -- så kallad **Xavier-initialisering** (`glorot`), det hjälper till att hålla signalerna inom intervallet under både framåt- och bakåtspridning +- Usambazaji wa sare -- `uniform` +- **N(0,1/n)** -- `gaussian` +- **N(0,1/√n_in)** inahakikisha kuwa kwa ingizo lenye wastani wa sifuri na upotofu wa kawaida wa 1, wastani/upotofu wa kawaida utabaki sawa +- **N(0,√2/(n_in+n_out))** -- kinachojulikana kama **Xavier initialization** (`glorot`), husaidia kuweka ishara kwenye kipimo wakati wa upitishaji wa mbele na nyuma -## Batchnormalisering +## Kawaida ya Kundi -Även med korrekt viktinitialisering kan vikterna bli godtyckligt stora eller små under träningen, och de kommer att föra signaler utanför rätt intervall. Vi kan föra tillbaka signalerna genom att använda en av **normaliseringsteknikerna**. Medan det finns flera av dem (Viktnormalisering, Lagernormalisering), är den mest använda Batchnormalisering. +Hata kwa uanzishaji sahihi wa uzito, uzito unaweza kuwa mkubwa au mdogo kiholela wakati wa mafunzo, na wataondoa ishara nje ya kipimo kinachofaa. Tunaweza kurudisha ishara kwa kutumia mojawapo ya mbinu za **kawaida**. Ingawa kuna kadhaa (Kawaida ya Uzito, Kawaida ya Tabaka), inayotumika zaidi ni Kawaida ya Kundi. -Idén med **batchnormalisering** är att ta hänsyn till alla värden över minibatchen och utföra normalisering (dvs. subtrahera medelvärde och dela med standardavvikelse) baserat på dessa värden. Det implementeras som ett nätverkslager som gör denna normalisering efter att vikterna har tillämpats, men före aktiveringsfunktionen. Som ett resultat är vi troligen att se högre slutlig noggrannhet och snabbare träning. +Wazo la **kawaida ya kundi** ni kuzingatia thamani zote kwenye kundi dogo, na kufanya kawaida (yaani, kutoa wastani na kugawanya kwa upotofu wa kawaida) kulingana na thamani hizo. Inatekelezwa kama tabaka la mtandao ambalo hufanya kawaida hii baada ya kutumia uzito, lakini kabla ya kazi ya uanzishaji. Matokeo yake, kuna uwezekano wa kuona usahihi wa mwisho wa juu na mafunzo ya haraka. -Här är den [ursprungliga artikeln](https://arxiv.org/pdf/1502.03167.pdf) om batchnormalisering, [förklaringen på Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), och [ett bra introducerande blogginlägg](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (och den [på ryska](https://habrahabr.ru/post/309302/)). +Hapa kuna [karatasi ya asili](https://arxiv.org/pdf/1502.03167.pdf) kuhusu kawaida ya kundi, [maelezo kwenye Wikipedia](https://en.wikipedia.org/wiki/Batch_normalization), na [chapisho la blogu la utangulizi mzuri](https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338) (na moja [kwa Kirusi](https://habrahabr.ru/post/309302/)). ## Dropout -**Dropout** är en intressant teknik som tar bort en viss procentandel av slumpmässiga neuroner under träningen. Det implementeras också som ett lager med en parameter (procentandel av neuroner att ta bort, typiskt 10%-50%), och under träningen nollställer det slumpmässiga element av ingångsvektorn innan den skickas till nästa lager. +**Dropout** ni mbinu ya kuvutia inayotoa asilimia fulani ya neurons kwa nasibu wakati wa mafunzo. Pia inatekelezwa kama tabaka lenye kigezo kimoja (asilimia ya neurons za kuondoa, kwa kawaida 10%-50%), na wakati wa mafunzo inafuta vipengele vya nasibu vya vector ya ingizo, kabla ya kuipitisha kwenye tabaka inayofuata. -Även om detta kan låta som en konstig idé, kan du se effekten av dropout på träningen av MNIST-sifferklassificeraren i [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb) anteckningen. Det påskyndar träningen och gör att vi kan uppnå högre noggrannhet på färre träningsomgångar. +Ingawa hii inaweza kuonekana kama wazo la ajabu, unaweza kuona athari ya dropout kwenye mafunzo ya classifier ya tarakimu ya MNIST katika daftari [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Inaharakisha mafunzo na inatuwezesha kufikia usahihi wa juu katika vipindi vichache vya mafunzo. -Denna effekt kan förklaras på flera sätt: +Athari hii inaweza kuelezewa kwa njia kadhaa: - * Det kan ses som en slumpmässig chockerande faktor för modellen, som tar optimering ut ur lokala minimum - * Det kan ses som *implicit modellgenomsnitt*, eftersom vi kan säga att under dropout tränar vi en något annan modell +- Inaweza kuchukuliwa kuwa ni mshtuko wa nasibu kwa modeli, ambao unatoa uboreshaji nje ya kiwango cha chini cha ndani +- Inaweza kuchukuliwa kama *kawaida ya modeli isiyo ya moja kwa moja*, kwa sababu tunaweza kusema kwamba wakati wa dropout tunafundisha modeli tofauti kidogo -> *Vissa människor säger att när en berusad person försöker lära sig något, kommer han att minnas detta bättre nästa morgon, jämfört med en nykter person, eftersom en hjärna med vissa defekta neuroner försöker anpassa sig bättre för att förstå betydelsen. Vi har aldrig testat oss själva om detta är sant eller inte* +> *Watu wengine wanasema kwamba mtu mlevi anapojaribu kujifunza kitu, atakumbuka vizuri zaidi asubuhi inayofuata, ikilinganishwa na mtu asiye mlevi, kwa sababu ubongo wenye neurons zinazofanya kazi vibaya unajaribu kujifunza vizuri zaidi. Hatujawahi kujaribu wenyewe kama hili ni kweli au la.* -## Förhindra överanpassning +## Kuzuia Overfitting -En av de mycket viktiga aspekterna av djupinlärning är att kunna förhindra [överanpassning](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Även om det kan vara frestande att använda en mycket kraftfull neurala nätverksmodell, bör vi alltid balansera antalet modellparametrar med antalet träningsprover. +Moja ya vipengele muhimu sana vya kujifunza kina ni kuweza kuzuia [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Ingawa inaweza kuwa ya kuvutia kutumia modeli yenye nguvu sana ya mtandao wa neva, tunapaswa kila wakati kusawazisha idadi ya vigezo vya modeli na idadi ya sampuli za mafunzo. -> Se till att du förstår konceptet [överanpassning](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) som vi har introducerat tidigare! +> Hakikisha unaelewa dhana ya [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) tuliyoanzisha awali! -Det finns flera sätt att förhindra överanpassning: +Kuna njia kadhaa za kuzuia overfitting: - * Tidig stoppning -- kontinuerligt övervaka fel på valideringsuppsättningen och stoppa träningen när valideringsfelet börjar öka. - * Explicit Viktavklingning / Regularisering -- lägga till en extra straffavgift till förlustfunktionen för höga absoluta värden av vikterna, vilket förhindrar att modellen får mycket instabila resultat - * Modellgenomsnitt -- träna flera modeller och sedan genomsnitt resultatet. Detta hjälper till att minimera variansen. - * Dropout (Implicit Modellgenomsnitt) +- Kusimamisha mapema -- kufuatilia makosa kwenye seti ya uthibitishaji na kusimamisha mafunzo wakati makosa ya uthibitishaji yanaanza kuongezeka. +- Kupungua kwa Uzito wa Wazi / Kawaida -- kuongeza adhabu ya ziada kwenye kazi ya hasara kwa thamani kubwa za uzito, ambayo huzuia modeli kupata matokeo yasiyo thabiti sana +- Kawaida ya Modeli -- kufundisha modeli kadhaa na kisha kujumlisha matokeo. Hii husaidia kupunguza tofauti. +- Dropout (Kawaida ya Modeli Isiyo ya Moja kwa Moja) -## Optimerare / Träningsalgoritmer +## Optimizers / Algorithms za Mafunzo -En annan viktig aspekt av träning är att välja en bra träningsalgoritm. Medan klassisk **gradientnedstigning** är ett rimligt val, kan det ibland vara för långsamt eller resultera i andra problem. +Jambo lingine muhimu la mafunzo ni kuchagua algorithm nzuri ya mafunzo. Ingawa **gradient descent** ya kawaida ni chaguo la busara, wakati mwingine inaweza kuwa polepole sana, au kusababisha matatizo mengine. -Inom djupinlärning använder vi **Stokastisk Gradientnedstigning** (SGD), som är en gradientnedstigning tillämpad på minibatcher, slumpmässigt valda från träningsuppsättningen. Vikterna justeras med hjälp av denna formel: +Katika kujifunza kina, tunatumia **Stochastic Gradient Descent** (SGD), ambayo ni gradient descent inayotumika kwa minibatches, zilizochaguliwa kwa nasibu kutoka kwenye seti ya mafunzo. Uzito hubadilishwa kwa kutumia fomula hii: wt+1 = wt - η∇ℒ ### Momentum -I **momentum SGD**, behåller vi en del av en gradient från tidigare steg. Det är liknande som när vi rör oss någonstans med tröghet, och vi får ett slag i en annan riktning, vår bana ändras inte omedelbart, utan behåller en del av den ursprungliga rörelsen. Här introducerar vi en annan vektor v för att representera *hastighet*: +Katika **momentum SGD**, tunahifadhi sehemu ya gradient kutoka hatua za awali. Ni sawa na tunaposonga mahali fulani kwa kasi, na tunapokea mshtuko katika mwelekeo tofauti, mwelekeo wetu hauwezi kubadilika mara moja, lakini unahifadhi sehemu ya mwendo wa awali. Hapa tunaanzisha vector nyingine v kuwakilisha *kasi*: -* vt+1 = γ vt - η∇ℒ -* wt+1 = wt+vt+1 +- vt+1 = γ vt - η∇ℒ +- wt+1 = wt+vt+1 -Här indikerar parametern γ i vilken utsträckning vi tar hänsyn till tröghet: γ=0 motsvarar klassisk SGD; γ=1 är en ren rörelseekvation. +Hapa kigezo γ kinaonyesha kiwango ambacho tunazingatia kasi: γ=0 inalingana na SGD ya kawaida; γ=1 ni equation ya mwendo safi. -### Adam, Adagrad, etc. +### Adam, Adagrad, nk. -Eftersom vi i varje lager multiplicerar signaler med en viss matris Wi, beroende på ||Wi||, kan gradienten antingen minska och vara nära 0, eller stiga oändligt. Det är essensen av problemet med Exploderande/Försvinnande Gradienter. +Kwa kuwa katika kila tabaka tunazidisha ishara kwa matrix Wi, kulingana na ||Wi||, gradient inaweza kupungua na kuwa karibu na 0, au kupanda bila kikomo. Hii ndiyo kiini cha tatizo la Exploding/Vanishing Gradients. -En av lösningarna på detta problem är att endast använda riktningen av gradienten i ekvationen och ignorera det absoluta värdet, dvs. +Moja ya suluhisho la tatizo hili ni kutumia mwelekeo tu wa gradient katika equation, na kupuuza thamani halisi, yaani -wt+1 = wt - η(∇ℒ/||∇ℒ||), där ||∇ℒ|| = √∑(∇ℒ)2 +wt+1 = wt - η(∇ℒ/||∇ℒ||), ambapo ||∇ℒ|| = √∑(∇ℒ)2 -Denna algoritm kallas **Adagrad**. Andra algoritmer som använder samma idé: **RMSProp**, **Adam** +Algorithm hii inaitwa **Adagrad**. Algorithm nyingine zinazotumia wazo hili: **RMSProp**, **Adam** -> **Adam** anses vara en mycket effektiv algoritm för många tillämpningar, så om du är osäker på vilken du ska använda - använd Adam. +> **Adam** inachukuliwa kuwa algorithm yenye ufanisi sana kwa matumizi mengi, kwa hivyo ikiwa huna uhakika ni ipi ya kutumia - tumia Adam. -### Gradientklippning +### Gradient clipping -Gradientklippning är en förlängning av idén ovan. När ||∇ℒ|| ≤ θ, beaktar vi den ursprungliga gradienten i viktoptimeringen, och när ||∇ℒ|| > θ - delar vi gradienten med sin norm. Här är θ en parameter, i de flesta fall kan vi ta θ=1 eller θ=10. +Gradient clipping ni upanuzi wa wazo hapo juu. Wakati ||∇ℒ|| ≤ θ, tunazingatia gradient ya awali katika uboreshaji wa uzito, na wakati ||∇ℒ|| > θ - tunagawanya gradient kwa norm yake. Hapa θ ni kigezo, katika hali nyingi tunaweza kuchukua θ=1 au θ=10. -### Inlärningshastighetsavtagning +### Kupungua kwa Kiwango cha Kujifunza -Träningsframgång beror ofta på inlärningshastighetsparametern η. Det är logiskt att anta att större värden av η resulterar i snabbare träning, vilket är något vi typiskt vill i början av träningen, och sedan mindre värde av η gör att vi kan finjustera nätverket. Därför vill vi i de flesta fall minska η under träningsprocessen. +Mafanikio ya mafunzo mara nyingi hutegemea kigezo cha kiwango cha kujifunza η. Ni mantiki kudhani kwamba thamani kubwa za η husababisha mafunzo ya haraka, ambayo ni kitu tunachotaka kwa kawaida mwanzoni mwa mafunzo, na kisha thamani ndogo za η zinaturuhusu kurekebisha mtandao. Kwa hivyo, katika hali nyingi tunataka kupunguza η katika mchakato wa mafunzo. -Detta kan göras genom att multiplicera η med något nummer (t.ex. 0.98) efter varje träningsomgång, eller genom att använda en mer komplicerad **inlärningshastighetsplan**. +Hii inaweza kufanywa kwa kuzidisha η kwa nambari fulani (mfano 0.98) baada ya kila kipindi cha mafunzo, au kwa kutumia ratiba ya kiwango cha kujifunza iliyo ngumu zaidi. -## Olika nätverksarkitekturer +## Miundo Tofauti ya Mitandao -Att välja rätt nätverksarkitektur för ditt problem kan vara knepigt. Normalt skulle vi ta en arkitektur som har visat sig fungera för vår specifika uppgift (eller en liknande). Här är en [bra översikt](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) av neurala nätverksarkitekturer för datorvision. +Kuchagua muundo sahihi wa mtandao kwa tatizo lako inaweza kuwa changamoto. Kwa kawaida, tungechukua muundo ambao umethibitishwa kufanya kazi kwa kazi yetu maalum (au inayofanana). Hapa kuna [muhtasari mzuri](https://www.topbots.com/a-brief-history-of-neural-network-architectures/) wa miundo ya mitandao ya neva kwa maono ya kompyuta. -> Det är viktigt att välja en arkitektur som är tillräckligt kraftfull för det antal träningsprover vi har. Att välja en för kraftfull modell kan resultera i [överanpassning](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) +> Ni muhimu kuchagua muundo ambao utakuwa na nguvu ya kutosha kwa idadi ya sampuli za mafunzo tulizo nazo. Kuchagua modeli yenye nguvu sana kunaweza kusababisha [overfitting](../../3-NeuralNetworks/05-Frameworks/Overfitting.md) -Ett annat bra sätt skulle vara att använda en arkitektur som automatiskt justerar sig till den erforderliga komplexiteten. I viss utsträckning är **ResNet**-arkitekturen och **Inception** självjusterande. [Mer om datorvisionsarkitekturer](../07-ConvNets/CNN_Architectures.md) +Njia nyingine nzuri inaweza kuwa kutumia muundo ambao utajirekebisha kiotomatiki kwa ugumu unaohitajika. Kwa kiwango fulani, muundo wa **ResNet** na **Inception** unajirekebisha. [Zaidi kuhusu miundo ya maono ya kompyuta](../07-ConvNets/CNN_Architectures.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md index 897f9620..0d098ad3 100644 --- a/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md +++ b/translations/sw/lessons/4-ComputerVision/08-TransferLearning/lab/README.md @@ -1,16 +1,25 @@ -# Klassificering av Oxford-djur med Transfer Learning + +# Uainishaji wa Wanyama wa Oxford kwa Kutumia Kujifunza kwa Uhamisho -Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Föreställ dig att du behöver utveckla en applikation för djurdagis för att katalogisera alla husdjur. En av de fantastiska funktionerna i en sådan applikation skulle vara att automatiskt upptäcka rasen från ett fotografi. I denna uppgift kommer vi att använda transfer learning för att klassificera verkliga djurbilder från datasetet [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). +Fikiria unahitaji kuunda programu kwa ajili ya malezi ya wanyama ili kuorodhesha wanyama wote. Mojawapo ya vipengele bora vya programu kama hiyo itakuwa kugundua moja kwa moja aina ya mnyama kutoka kwenye picha. Katika kazi hii, tutatumia kujifunza kwa uhamisho kuainisha picha halisi za wanyama kutoka kwenye hifadhidata ya wanyama ya [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/). -## Datasetet +## Hifadhidata -Vi kommer att använda det ursprungliga datasetet [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), som innehåller 35 olika raser av hundar och katter. +Tutatumia hifadhidata ya awali ya [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/), ambayo ina aina 35 tofauti za mbwa na paka. -För att ladda ner datasetet, använd denna kodsnutt: +Ili kupakua hifadhidata, tumia kipande hiki cha msimbo: ```python !wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz @@ -18,13 +27,13 @@ För att ladda ner datasetet, använd denna kodsnutt: !rm images.tar.gz ``` -## Starta Notebook +## Kuanzisha Daftari -Börja laborationen med att öppna [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) +Anza maabara kwa kufungua [OxfordPets.ipynb](../../../../../../lessons/4-ComputerVision/08-TransferLearning/lab/OxfordPets.ipynb) -## Sammanfattning +## Ujumbe wa Kujifunza -Transfer learning och förtränade nätverk gör det möjligt för oss att lösa verkliga problem med bildklassificering relativt enkelt. Dock fungerar förtränade nätverk bra på bilder av liknande slag, och om vi börjar klassificera mycket olika bilder (t.ex. medicinska bilder) är det troligt att vi får mycket sämre resultat. +Kujifunza kwa uhamisho na mitandao iliyokwisha kufundishwa hutuwezesha kutatua matatizo halisi ya uainishaji wa picha kwa urahisi. Hata hivyo, mitandao iliyokwisha kufundishwa hufanya kazi vizuri kwenye picha za aina zinazofanana, na tukianza kuainisha picha tofauti sana (mfano, picha za matibabu), kuna uwezekano mkubwa wa kupata matokeo mabaya zaidi. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md index 3a5abfb6..9c5a0f81 100644 --- a/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md +++ b/translations/sw/lessons/4-ComputerVision/09-Autoencoders/README.md @@ -1,100 +1,109 @@ + # Autoencoders -När vi tränar CNN:er är ett av problemen att vi behöver mycket märkt data. När det gäller bildklassificering behöver vi separera bilder i olika klasser, vilket är en manuell insats. +Wakati wa kufundisha CNNs, mojawapo ya changamoto ni kwamba tunahitaji data nyingi iliyo na lebo. Katika hali ya uainishaji wa picha, tunahitaji kutenganisha picha katika madarasa tofauti, jambo ambalo linahitaji juhudi za mikono. ## [Pre-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/109) -Vi kan dock vilja använda rå (omärkt) data för att träna CNN-funktionsextraktorer, vilket kallas **självövervakad inlärning**. Istället för etiketter kommer vi att använda träningsbilder som både nätverksinmatning och utdata. Huvudidén med **autoencoder** är att vi kommer att ha ett **encoder-nätverk** som konverterar inmatad bild till ett visst **latent rum** (normalt är det bara en vektor av mindre storlek), och sedan **decoder-nätverket**, vars mål är att rekonstruera den ursprungliga bilden. +Hata hivyo, tunaweza kutaka kutumia data ghafi (isiyo na lebo) kwa mafunzo ya CNN feature extractors, ambayo inaitwa **kujifunza kwa kujisimamia**. Badala ya lebo, tutatumia picha za mafunzo kama pembejeo na matokeo ya mtandao. Wazo kuu la **autoencoder** ni kwamba tutakuwa na **encoder network** inayobadilisha picha ya pembejeo kuwa **latent space** fulani (kawaida ni vector ya ukubwa mdogo), kisha **decoder network**, ambayo lengo lake litakuwa kurejesha picha ya asili. -> ✅ En [autoencoder](https://wikipedia.org/wiki/Autoencoder) är "en typ av artificiellt neuralt nätverk som används för att lära sig effektiva kodningar av omärkt data." +> ✅ [Autoencoder](https://wikipedia.org/wiki/Autoencoder) ni "aina ya mtandao wa neva wa bandia unaotumika kujifunza njia bora za kuweka data isiyo na lebo." -Eftersom vi tränar en autoencoder för att fånga så mycket information som möjligt från den ursprungliga bilden för noggrann rekonstruktion, försöker nätverket hitta den bästa **inbäddningen** av inmatade bilder för att fånga betydelsen. +Kwa kuwa tunafundisha autoencoder ili kunasa taarifa nyingi kutoka kwenye picha ya asili iwezekanavyo kwa ajili ya ujenzi sahihi, mtandao unajaribu kupata **embedding** bora ya picha za pembejeo ili kunasa maana yake. ![AutoEncoder Diagram](../../../../../translated_images/autoencoder_schema.5e6fc9ad98a5eb6197f3513cf3baf4dfbe1389a6ae74daebda64de9f1c99f142.sw.jpg) -> Bild från [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) +> Picha kutoka [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html) -## Scenarier för användning av Autoencoders +## Matumizi ya Autoencoders -Även om rekonstruktion av ursprungliga bilder inte verkar användbart i sig, finns det några scenarier där autoencoders är särskilt användbara: +Ingawa kurejesha picha za asili hakuonekani kuwa na manufaa peke yake, kuna hali kadhaa ambapo autoencoders ni muhimu sana: -* **Minska dimensionen av bilder för visualisering** eller **träning av bildeinbäddningar**. Vanligtvis ger autoencoders bättre resultat än PCA, eftersom de tar hänsyn till den spatiala naturen hos bilder och hierarkiska funktioner. -* **Denoising**, dvs. ta bort brus från bilden. Eftersom brus bär med sig mycket oanvändbar information kan autoencodern inte passa in allt i det relativt lilla latenta rummet, och fångar därför endast den viktiga delen av bilden. När vi tränar avbrusare börjar vi med ursprungliga bilder och använder bilder med artificiellt tillagt brus som indata för autoencodern. -* **Super-upplösning**, öka bildens upplösning. Vi börjar med högupplösta bilder och använder bilder med lägre upplösning som autoencoder-inmatning. -* **Generativa modeller**. När vi har tränat autoencodern kan decoder-delen användas för att skapa nya objekt utifrån slumpmässiga latenta vektorer. +* **Kupunguza vipimo vya picha kwa ajili ya kuona** au **kufundisha embeddings za picha**. Kawaida autoencoders hutoa matokeo bora kuliko PCA, kwa sababu inazingatia asili ya anga ya picha na vipengele vya kihierarkia. +* **Kuondoa kelele**, yaani kuondoa kelele kutoka kwenye picha. Kwa sababu kelele hubeba taarifa nyingi zisizo na maana, autoencoder haiwezi kuingiza zote kwenye latent space ndogo, na hivyo hunasa sehemu muhimu tu ya picha. Wakati wa kufundisha denoisers, tunaanza na picha za asili, na kutumia picha zilizo na kelele iliyoongezwa kwa makusudi kama pembejeo kwa autoencoder. +* **Super-resolution**, kuongeza azimio la picha. Tunaanza na picha zenye azimio la juu, na kutumia picha yenye azimio la chini kama pembejeo ya autoencoder. +* **Generative models**. Mara tu tunapofundisha autoencoder, sehemu ya decoder inaweza kutumika kuunda vitu vipya kuanzia latent vectors za nasibu. ## Variational Autoencoders (VAE) -Traditionella autoencoders minskar dimensionen av indata på något sätt, genom att identifiera de viktiga funktionerna i inmatade bilder. Latenta vektorer ger dock ofta inte mycket mening. Med andra ord, med MNIST-datasetet som exempel, är det inte en lätt uppgift att ta reda på vilka siffror som motsvarar olika latenta vektorer, eftersom nära latenta vektorer inte nödvändigtvis motsvarar samma siffror. +Autoencoders za jadi hupunguza vipimo vya data ya pembejeo kwa namna fulani, ikigundua vipengele muhimu vya picha za pembejeo. Hata hivyo, latent vectors mara nyingi hazina maana kubwa. Kwa maneno mengine, tukichukua dataset ya MNIST kama mfano, kugundua ni namba gani zinazolingana na latent vectors tofauti si kazi rahisi, kwa sababu latent vectors zilizo karibu hazihusiani lazima na namba sawa. -Å andra sidan, för att träna *generativa* modeller är det bättre att ha en viss förståelse för det latenta rummet. Denna idé leder oss till **variational autoencoder** (VAE). +Kwa upande mwingine, ili kufundisha *generative* models ni bora kuwa na uelewa fulani wa latent space. Wazo hili linatupeleka kwenye **variational auto-encoder** (VAE). -VAE är autoencodern som lär sig att förutsäga *statistisk fördelning* av de latenta parametrarna, så kallad **latent fördelning**. Till exempel kan vi vilja att latenta vektorer ska fördelas normalt med ett visst medelvärde zmean och standardavvikelse zsigma (både medelvärde och standardavvikelse är vektorer av viss dimension d). Encodern i VAE lär sig att förutsäga dessa parametrar, och sedan tar decodern en slumpmässig vektor från denna fördelning för att rekonstruera objektet. +VAE ni autoencoder inayojifunza kutabiri *statistical distribution* ya vigezo vya latent, inayoitwa **latent distribution**. Kwa mfano, tunaweza kutaka latent vectors zisambazwe kawaida na wastani fulani zmean na mkengeuko wa kawaida zsigma (wote wastani na mkengeuko wa kawaida ni vectors za vipimo fulani d). Encoder katika VAE hujifunza kutabiri vigezo hivyo, kisha decoder huchukua vector ya nasibu kutoka kwenye usambazaji huu ili kurejesha kitu. -Sammanfattningsvis: +Kwa muhtasari: - * Från inmatad vektor förutspår vi `z_mean` och `z_log_sigma` (istället för att förutsäga standardavvikelsen själv, förutspår vi dess logaritm) - * Vi sampel en vektor `sample` från fördelningen N(zmean,exp(zlog\_sigma)) - * Decodern försöker avkoda den ursprungliga bilden med `sample` som inmatad vektor + * Kutoka vector ya pembejeo, tunatabiri `z_mean` na `z_log_sigma` (badala ya kutabiri mkengeuko wa kawaida yenyewe, tunatabiri logarithm yake) + * Tunachukua vector `sample` kutoka kwenye usambazaji N(zmean,exp(zlog\_sigma)) + * Decoder inajaribu kurejesha picha ya asili kwa kutumia `sample` kama vector ya pembejeo -> Bild från [denna blogginlägg](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) av Isaak Dykeman +> Picha kutoka [blog post hii](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) na Isaak Dykeman -Variational autoencoders använder en komplex förlustfunktion som består av två delar: +Variational auto-encoders hutumia loss function ngumu inayojumuisha sehemu mbili: -* **Rekonstruktionsförlust** är förlustfunktionen som visar hur nära en rekonstruerad bild är målet (det kan vara Mean Squared Error, eller MSE). Det är samma förlustfunktion som i vanliga autoencoders. -* **KL-förlust**, som säkerställer att de latenta variabelns fördelningar förblir nära normalfördelningen. Den baseras på begreppet [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - en metrik för att uppskatta hur lika två statistiska fördelningar är. +* **Reconstruction loss** ni loss function inayonyesha jinsi picha iliyojengwa upya ilivyo karibu na lengo (inaweza kuwa Mean Squared Error, au MSE). Ni loss function sawa na ile ya autoencoders za kawaida. +* **KL loss**, ambayo inahakikisha kwamba usambazaji wa latent variable unakaribia usambazaji wa kawaida. Inategemea dhana ya [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - kipimo cha kutathmini jinsi usambazaji wa takwimu mbili unavyofanana. -En viktig fördel med VAEs är att de gör det möjligt för oss att generera nya bilder relativt enkelt, eftersom vi vet vilken fördelning vi ska sampela latenta vektorer från. Om vi till exempel tränar en VAE med 2D latent vektor på MNIST kan vi sedan variera komponenterna i den latenta vektorn för att få olika siffror: +Faida moja muhimu ya VAEs ni kwamba zinaturuhusu kuunda picha mpya kwa urahisi, kwa sababu tunajua usambazaji kutoka ambapo tunachukua latent vectors. Kwa mfano, tukifundisha VAE na latent vector ya 2D kwenye MNIST, tunaweza kubadilisha vipengele vya latent vector ili kupata namba tofauti: vaemnist -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -Observera hur bilderna blandar sig med varandra, när vi börjar få latenta vektorer från olika delar av det latenta parameterrummet. Vi kan också visualisera detta rum i 2D: +Angalia jinsi picha zinavyoungana, tunapoanza kupata latent vectors kutoka sehemu tofauti za latent parameter space. Tunaweza pia kuona anga hii kwa 2D: vaemnist cluster -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -## ✍️ Övningar: Autoencoders +## ✍️ Mazoezi: Autoencoders -Lär dig mer om autoencoders i dessa motsvarande anteckningar: +Jifunze zaidi kuhusu autoencoders katika daftari hizi zinazohusiana: -* [Autoencoders i TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) -* [Autoencoders i PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) +* [Autoencoders katika TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) +* [Autoencoders katika PyTorch](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb) -## Egenskaper hos Autoencoders +## Sifa za Autoencoders -* **Dataspecifika** - de fungerar bara bra med den typ av bilder de har tränats på. Om vi till exempel tränar ett super-upplösningsnätverk på blommor kommer det inte att fungera bra på porträtt. Detta beror på att nätverket kan producera högupplösta bilder genom att ta fina detaljer från funktioner som lärts från träningsdatasetet. -* **Förlustiga** - den rekonstruerade bilden är inte densamma som den ursprungliga bilden. Förlustens natur definieras av *förlustfunktionen* som används under träning. -* Fungerar på **omärkt data**. +* **Data Specific** - zinafanya kazi vizuri tu na aina ya picha ambazo zimefundishwa nazo. Kwa mfano, tukifundisha mtandao wa super-resolution kwenye maua, hautafanya kazi vizuri kwenye picha za watu. Hii ni kwa sababu mtandao unaweza kutoa picha ya azimio la juu kwa kuchukua maelezo mazuri kutoka vipengele vilivyojifunzwa kutoka dataset ya mafunzo. +* **Lossy** - picha iliyojengwa upya si sawa na picha ya asili. Asili ya hasara inafafanuliwa na *loss function* iliyotumika wakati wa mafunzo. +* Inafanya kazi na **data isiyo na lebo** ## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/209) -## Slutsats +## Hitimisho -I denna lektion lärde du dig om de olika typerna av autoencoders som finns tillgängliga för AI-forskaren. Du lärde dig hur man bygger dem och hur man använder dem för att rekonstruera bilder. Du lärde dig också om VAE och hur man använder den för att generera nya bilder. +Katika somo hili, umejifunza kuhusu aina mbalimbali za autoencoders zinazopatikana kwa mwanasayansi wa AI. Umejifunza jinsi ya kuzijenga, na jinsi ya kuzitumia kurejesha picha. Pia umejifunza kuhusu VAE na jinsi ya kuitumia kuunda picha mpya. -## 🚀 Utmaning +## 🚀 Changamoto -I denna lektion lärde du dig om att använda autoencoders för bilder. Men de kan också användas för musik! Kolla in Magenta-projektets [MusicVAE](https://magenta.tensorflow.org/music-vae) projekt, som använder autoencoders för att lära sig rekonstruera musik. Gör några [experiment](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) med detta bibliotek för att se vad du kan skapa. +Katika somo hili, umejifunza kuhusu kutumia autoencoders kwa picha. Lakini zinaweza pia kutumika kwa muziki! Angalia mradi wa Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae), ambao hutumia autoencoders kujifunza kurejesha muziki. Fanya [majaribio](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) na maktaba hii ili kuona unachoweza kuunda. ## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/208) -## Granskning & Självstudie +## Mapitio & Kujisomea -För referens, läs mer om autoencoders i dessa resurser: +Kwa marejeleo, soma zaidi kuhusu autoencoders katika rasilimali hizi: -* [Bygga Autoencoders i Keras](https://blog.keras.io/building-autoencoders-in-keras.html) -* [Blogginlägg om NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) -* [Förklarade Variational Autoencoders](https://kvfrans.com/variational-autoencoders-explained/) -* [Villkorliga Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) +* [Kujenga Autoencoders katika Keras](https://blog.keras.io/building-autoencoders-in-keras.html) +* [Blog post kwenye NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/) +* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/) +* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) -## Uppgift +## Kazi -I slutet av [denna anteckning som använder TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb) hittar du en 'uppgift' - använd detta som din uppgift. +Mwisho wa [daftari hili linalotumia TensorFlow](../../../../../lessons/4-ComputerVision/09-Autoencoders/AutoencodersTF.ipynb), utapata 'kazi' - tumia hii kama jukumu lako. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/10-GANs/README.md b/translations/sw/lessons/4-ComputerVision/10-GANs/README.md index f48858ca..e75ea02e 100644 --- a/translations/sw/lessons/4-ComputerVision/10-GANs/README.md +++ b/translations/sw/lessons/4-ComputerVision/10-GANs/README.md @@ -1,101 +1,110 @@ -# Generativa Motståndsnätverk + +# Mitandao ya Kizazi ya Kifedhuli (Generative Adversarial Networks) -I den föregående sektionen lärde vi oss om **generativa modeller**: modeller som kan skapa nya bilder som liknar de i träningsdatasetet. VAE var ett bra exempel på en generativ modell. +Katika sehemu iliyopita, tulijifunza kuhusu **miundo ya kizazi**: miundo inayoweza kuzalisha picha mpya zinazofanana na zile zilizopo kwenye seti ya mafunzo. VAE ilikuwa mfano mzuri wa muundo wa kizazi. -## [Förläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/110) -Men om vi försöker skapa något verkligt meningsfullt, som en målning med rimlig upplösning, med VAE, kommer vi att se att träningen inte konvergerar bra. För detta användningsfall bör vi lära oss om en annan arkitektur som är specifikt inriktad på generativa modeller - **Generativa Motståndsnätverk**, eller GANs. +Hata hivyo, tukijaribu kuzalisha kitu chenye maana zaidi, kama mchoro wa kiwango cha azimio la kuridhisha, kwa kutumia VAE, tutaona kuwa mafunzo hayafikii lengo vizuri. Kwa matumizi haya, tunapaswa kujifunza kuhusu usanifu mwingine unaolenga hasa miundo ya kizazi - **Mitandao ya Kizazi ya Kifedhuli**, au GANs. -Huvudidén med en GAN är att ha två neurala nätverk som kommer att tränas mot varandra: +Wazo kuu la GAN ni kuwa na mitandao miwili ya neva ambayo itafundishwa dhidi ya kila mmoja: -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -> ✅ Lite vokabulär: -> * **Generator** är ett nätverk som tar en slumpmässig vektor och producerar en bild som resultat -> * **Diskriminator** är ett nätverk som tar en bild och ska avgöra om det är en verklig bild (från träningsdatasetet) eller om den har genererats av en generator. Det är i grunden en bildklassificerare. +> ✅ Msamiati mdogo: +> * **Generator** ni mtandao unaochukua vekta ya nasibu na kuzalisha picha kama matokeo. +> * **Discriminator** ni mtandao unaochukua picha na unatakiwa kusema kama ni picha halisi (kutoka kwenye seti ya mafunzo) au imezalishwa na generator. Kimsingi ni mklasifaya wa picha. -### Diskriminator +### Discriminator -Arkitekturen för diskriminatorn skiljer sig inte från ett vanligt bildklassificeringsnätverk. I det enklaste fallet kan det vara en fullt ansluten klassificerare, men mest sannolikt kommer det att vara ett [konvolutionellt nätverk](../07-ConvNets/README.md). +Usanifu wa discriminator hauna tofauti na mtandao wa kawaida wa uainishaji wa picha. Katika hali rahisi inaweza kuwa mklasifaya wa tabaka zilizounganishwa kikamilifu, lakini mara nyingi zaidi itakuwa [mtandao wa convolutional](../07-ConvNets/README.md). -> ✅ En GAN baserad på konvolutionella nätverk kallas en [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) +> ✅ GAN inayotegemea mitandao ya convolutional inaitwa [DCGAN](https://arxiv.org/pdf/1511.06434.pdf) -En CNN-diskriminator består av följande lager: flera konvolutioner+pooling (med minskande spatial storlek) och ett eller flera fullt anslutna lager för att få "funktionsvektor", slutlig binär klassificerare. +Discriminator ya CNN inajumuisha tabaka zifuatazo: convolution+pooling kadhaa (zikiwa na ukubwa wa anga unaopungua) na, tabaka moja au zaidi zilizounganishwa kikamilifu ili kupata "veka ya sifa", na mklasifaya wa mwisho wa binary. -> ✅ En 'pooling' i detta sammanhang är en teknik som minskar storleken på bilden. "Pooling-lager minskar dimensionerna av data genom att kombinera utgångarna från neuronkluster i ett lager till en enda neuron i nästa lager." - [källa](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) +> ✅ 'Pooling' katika muktadha huu ni mbinu inayopunguza ukubwa wa picha. "Tabaka za pooling hupunguza vipimo vya data kwa kuchanganya matokeo ya vikundi vya neva katika tabaka moja kuwa neva moja kwenye tabaka inayofuata." - [chanzo](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers) ### Generator -En generator är något mer komplicerad. Du kan betrakta den som en omvänd diskriminator. Med utgångspunkt från en latent vektor (i stället för en funktionsvektor), har den ett fullt anslutet lager för att omvandla det till den erforderliga storleken/formen, följt av dekonvolutioner+uppskalning. Detta liknar *avkodar* delen av [autoencoder](../09-Autoencoders/README.md). +Generator ni ngumu kidogo. Unaweza kuiona kama discriminator iliyogeuzwa. Kuanzia na vekta ya siri (badala ya veka ya sifa), ina tabaka lililounganishwa kikamilifu ili kuibadilisha kuwa ukubwa/umbo linalohitajika, ikifuatiwa na deconvolution+upscaling. Hii ni sawa na sehemu ya *decoder* ya [autoencoder](../09-Autoencoders/README.md). -> ✅ Eftersom konvolutionslagret implementeras som ett linjärt filter som rör sig över bilden, är dekonvolution i grunden liknande konvolution och kan implementeras med samma lagerlogik. +> ✅ Kwa sababu tabaka la convolution linatekelezwa kama kichujio cha mstari kinachopita kwenye picha, deconvolution kimsingi ni sawa na convolution, na inaweza kutekelezwa kwa kutumia mantiki sawa ya tabaka. -> Bild av [Dmitry Soshnikov](http://soshnikov.com) +> Picha na [Dmitry Soshnikov](http://soshnikov.com) -### Träning av GAN +### Mafunzo ya GAN -GANs kallas **motståndsnätverk** eftersom det finns en konstant tävling mellan generatorn och diskriminatorn. Under denna tävling förbättras både generatorn och diskriminatorn, vilket gör att nätverket lär sig att producera bättre och bättre bilder. +GANs zinaitwa **kifedhuli** kwa sababu kuna mashindano ya mara kwa mara kati ya generator na discriminator. Wakati wa mashindano haya, generator na discriminator zote mbili huboresha, hivyo mtandao hujifunza kuzalisha picha bora zaidi. -Träningen sker i två steg: +Mafunzo hufanyika katika hatua mbili: -* **Träning av diskriminatorn**. Denna uppgift är ganska rak på sak: vi genererar en batch av bilder med generatorn, märker dem med 0, som står för falsk bild, och tar en batch av bilder från inmatningsdatasetet (med etikett 1, verklig bild). Vi får en viss *diskriminatorförlust* och utför backprop. -* **Träning av generatorn**. Detta är något mer komplicerat, eftersom vi inte vet det förväntade resultatet för generatorn direkt. Vi tar hela GAN-nätverket bestående av en generator följd av en diskriminator, matar in den med några slumpmässiga vektorer och förväntar oss att resultatet ska vara 1 (som motsvarar verkliga bilder). Vi fryser sedan parametrarna för diskriminatorn (vi vill inte att den ska tränas i detta steg) och utför backprop. +* **Mafunzo ya discriminator**. Kazi hii ni rahisi: tunazalisha kundi la picha kwa kutumia generator, tukiziwekea lebo 0, ambayo inamaanisha picha bandia, na kuchukua kundi la picha kutoka kwenye seti ya mafunzo (zikiwa na lebo 1, picha halisi). Tunapata *hasara ya discriminator*, na kufanya backprop. +* **Mafunzo ya generator**. Hii ni ngumu kidogo, kwa sababu hatujui matokeo yanayotarajiwa moja kwa moja kwa generator. Tunachukua mtandao mzima wa GAN unaojumuisha generator ikifuatiwa na discriminator, tunaupa vekta za nasibu, na tunatarajia matokeo yawe 1 (yanayolingana na picha halisi). Kisha tunagandisha vigezo vya discriminator (hatutaki ifundishwe katika hatua hii), na kufanya backprop. -Under denna process minskar varken generatorns eller diskriminatorns förluster signifikant. I den ideala situationen bör de oscillera, vilket motsvarar att båda nätverken förbättrar sin prestanda. +Wakati wa mchakato huu, hasara za generator na discriminator hazishuki sana. Katika hali bora, zinapaswa kutetereka, zikionyesha mitandao yote miwili inavyoboresha utendaji wake. -## ✍️ Övningar: GANs +## ✍️ Mazoezi: GANs -* [GAN Notebook i TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) -* [GAN Notebook i PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) +* [Notebook ya GAN katika TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Notebook ya GAN katika PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) -### Problem med GAN-träning +### Changamoto za Mafunzo ya GAN -GANs är kända för att vara särskilt svåra att träna. Här är några problem: +GANs zinajulikana kuwa ngumu sana kufundisha. Hapa kuna changamoto chache: -* **Mode Collapse**. Med denna term menar vi att generatorn lär sig att producera en framgångsrik bild som lurar diskriminatorn, och inte en variation av olika bilder. -* **Känslighet för hyperparametrar**. Ofta kan du se att en GAN inte konvergerar alls, och plötsligt minskar inlärningshastigheten vilket leder till konvergens. -* Att hålla en **balans** mellan generatorn och diskriminatorn. I många fall kan diskriminatorförlusten snabbt sjunka till noll, vilket resulterar i att generatorn inte kan tränas vidare. För att övervinna detta kan vi försöka sätta olika inlärningshastigheter för generatorn och diskriminatorn, eller hoppa över träningen av diskriminatorn om förlusten redan är för låg. -* Träning för **hög upplösning**. Detta problem speglar samma problem som med autoencoders, och utlöses eftersom rekonstruktionen av för många lager i det konvolutionella nätverket leder till artefakter. Detta problem löses vanligtvis med så kallad **progressiv tillväxt**, där först några lager tränas på låguppskattade bilder, och sedan lager "avblockeras" eller läggs till. En annan lösning skulle vara att lägga till extra kopplingar mellan lager och träna flera upplösningar samtidigt - se detta [Multi-Scale Gradient GANs-papper](https://arxiv.org/abs/1903.06048) för detaljer. +* **Mode Collapse**. Kwa neno hili tunamaanisha kuwa generator inajifunza kuzalisha picha moja yenye mafanikio inayomdanganya discriminator, badala ya aina mbalimbali za picha tofauti. +* **Unyeti kwa hyperparameters**. Mara nyingi unaweza kuona kuwa GAN haifiki lengo kabisa, na kisha ghafla inapungua kiwango cha kujifunza na kufikia lengo. +* Kuweka **usawa** kati ya generator na discriminator. Katika hali nyingi hasara ya discriminator inaweza kushuka hadi sifuri haraka, jambo linalosababisha generator kushindwa kufundishwa zaidi. Ili kushinda hili, tunaweza kujaribu kuweka viwango tofauti vya kujifunza kwa generator na discriminator, au kuruka mafunzo ya discriminator ikiwa hasara tayari ni ndogo sana. +* Mafunzo kwa **azimio la juu**. Hii inahusiana na tatizo sawa na autoencoders, ambapo kujenga upya tabaka nyingi za mtandao wa convolutional husababisha kasoro. Tatizo hili kwa kawaida hutatuliwa kwa kutumia **ukuaji wa hatua kwa hatua**, ambapo tabaka chache za kwanza hufundishwa kwenye picha za azimio la chini, kisha tabaka zinafunguliwa au kuongezwa. Suluhisho jingine ni kuongeza miunganisho ya ziada kati ya tabaka na kufundisha maazimio kadhaa kwa wakati mmoja - angalia karatasi hii ya [Multi-Scale Gradient GANs](https://arxiv.org/abs/1903.06048) kwa maelezo zaidi. -## Stilöverföring +## Uhamishaji wa Mtindo -GANs är ett utmärkt sätt att generera konstnärliga bilder. En annan intressant teknik är så kallad **stilöverföring**, som tar en **innehållsbild** och återtecknar den i en annan stil, genom att applicera filter från **stilbilden**. +GANs ni njia nzuri ya kuzalisha picha za kisanii. Mbinu nyingine ya kuvutia ni ile inayoitwa **uhamishaji wa mtindo**, ambayo huchukua **picha ya maudhui**, na kuichora upya kwa mtindo tofauti, ikitumia vichujio kutoka kwa **picha ya mtindo**. -Så här fungerar det: -* Vi börjar med en slumpmässig brusbild (eller med en innehållsbild, men för att förstå det är det lättare att börja med slumpmässigt brus) -* Vårt mål är att skapa en bild som ligger nära både innehållsbilden och stilbilden. Detta skulle bestämmas av två förlustfunktioner: - - **Innehållsförlust** beräknas baserat på de funktioner som extraherats av CNN vid vissa lager från den aktuella bilden och innehållsbilden - - **Stilförlust** beräknas mellan den aktuella bilden och stilbilden på ett smart sätt med hjälp av Gram-matriser (mer detaljer i [exempelnotebooken](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)) -* För att göra bilden jämnare och ta bort brus introducerar vi också **Variationsförlust**, som beräknar det genomsnittliga avståndet mellan närliggande pixlar -* Den huvudsakliga optimeringsloopen justerar den aktuella bilden med hjälp av gradientnedstigning (eller något annat optimeringsalgoritm) för att minimera den totala förlusten, som är en viktad summa av alla tre förluster. +Jinsi inavyofanya kazi ni kama ifuatavyo: +* Tunaanza na picha ya kelele ya nasibu (au na picha ya maudhui, lakini kwa urahisi wa kuelewa ni bora kuanza na kelele ya nasibu) +* Lengo letu litakuwa kuunda picha ambayo itakuwa karibu na picha ya maudhui na picha ya mtindo. Hii itaamuliwa na hasara mbili: + - **Hasara ya maudhui** inahesabiwa kulingana na sifa zilizotolewa na CNN katika tabaka fulani kutoka picha ya sasa na picha ya maudhui. + - **Hasara ya mtindo** inahesabiwa kati ya picha ya sasa na picha ya mtindo kwa njia ya busara kwa kutumia matriki za Gram (maelezo zaidi katika [notebook ya mfano](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Ili kufanya picha iwe laini na kuondoa kelele, tunaongeza pia **Hasara ya Mabadiliko**, ambayo huhesabu umbali wa wastani kati ya pikseli zilizo jirani. +* Mzunguko mkuu wa uboreshaji hubadilisha picha ya sasa kwa kutumia gradient descent (au algorithm nyingine ya uboreshaji) ili kupunguza jumla ya hasara, ambayo ni jumla ya uzito wa hasara zote tatu. -## ✍️ Exempel: [Stilöverföring](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) +## ✍️ Mfano: [Uhamishaji wa Mtindo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) -## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) -## Slutsats +## Hitimisho -I den här lektionen lärde du dig om GANs och hur man tränar dem. Du lärde dig också om de speciella utmaningar som denna typ av neuralt nätverk kan möta, och några strategier för hur man kan övervinna dem. +Katika somo hili, umejifunza kuhusu GANs na jinsi ya kuzifundisha. Pia umejifunza kuhusu changamoto maalum ambazo aina hii ya Mtandao wa Neva inaweza kukutana nazo, na mikakati ya jinsi ya kuzitatua. -## 🚀 Utmaning +## 🚀 Changamoto -Gå igenom [Stilöverföringsnotebooken](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) med dina egna bilder. +Pitia [notebook ya Uhamishaji wa Mtindo](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) ukitumia picha zako mwenyewe. -## Granskning & Självstudier +## Mapitio na Kujisomea -För referens, läs mer om GANs i dessa resurser: +Kwa marejeleo, soma zaidi kuhusu GANs katika rasilimali hizi: -* Marco Pasini, [10 Lektioner Jag Lärde Mig När Jag Tränade GANs i Ett År](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) -* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), en *de facto* GAN-arkitektur att överväga -* [Skapa Generativ Konst med GANs på Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) +* Marco Pasini, [Masomo 10 Niliyojifunza Nikifundisha GANs kwa Mwaka Mmoja](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628) +* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), usanifu wa GAN wa *de facto* wa kuzingatia +* [Kuzalisha Sanaa ya Kizazi kwa kutumia GANs kwenye Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/) -## Uppgift +## Kazi -Återbesök en av de två notebookar som är kopplade till denna lektion och träna GAN på dina egna bilder. Vad kan du skapa? +Rudia moja ya notebook mbili zinazohusiana na somo hili na fundisha tena GAN kwa kutumia picha zako mwenyewe. Unaweza kuunda nini? -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md index 38d4f5c3..dc3ffbb1 100644 --- a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md +++ b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/README.md @@ -1,51 +1,188 @@ -### YOLO - Du Tittar Endast En Gång + +# Utambuzi wa Vitu -YOLO är en realtids algoritm som körs i ett enda steg. Huvudidén är följande: +Mifano ya uainishaji wa picha tuliyoshughulikia hadi sasa ilichukua picha na kutoa matokeo ya kategoria, kama darasa 'nambari' katika tatizo la MNIST. Hata hivyo, katika hali nyingi hatutaki tu kujua kwamba picha inaonyesha vitu - tunataka kuweza kubaini eneo lao halisi. Hili ndilo hasa lengo la **utambuzi wa vitu**. -* Bilden delas upp i $S\times S$ regioner -* För varje region, **CNN** förutser $n$ möjliga objekt, *bounding box* koordinater och *confidence*=*sannolikhet* * IoU. +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/111) -![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png) -> Bild från [officiellt papper](https://arxiv.org/abs/1506.02640) +![Utambuzi wa Vitu](../../../../../translated_images/Screen_Shot_2016-11-17_at_11.14.54_AM.b4bb3769353287be1b905373ed9c858102c054b16e4595c76ec3f7bba0feb549.sw.png) -### Andra Algoritmer +> Picha kutoka [tovuti ya YOLO v2](https://pjreddie.com/darknet/yolov2/) -* RetinaNet: [officiellt papper](https://arxiv.org/abs/1708.02002) - - [PyTorch-implementation i Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) - - [Keras-implementation](https://github.com/fizyr/keras-retinanet) - - [Objektdetektering med RetinaNet](https://keras.io/examples/vision/retinanet/) i Keras-exempel -* SSD (Single Shot Detector): [officiellt papper](https://arxiv.org/abs/1512.02325) +## Njia Rahisi ya Utambuzi wa Vitu -## ✍️ Övningar: Objektdetektering +Tukichukulia tunataka kutafuta paka kwenye picha, njia rahisi ya utambuzi wa vitu inaweza kuwa kama ifuatavyo: -Fortsätt din inlärning i följande anteckningsbok: +1. Gawanya picha katika vigae kadhaa. +2. Endesha uainishaji wa picha kwenye kila kigae. +3. Vigae vile vinavyotoa matokeo ya juu vya kutosha vinaweza kuchukuliwa kuwa na kitu kinachotafutwa. + +![Utambuzi Rahisi wa Vitu](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.sw.png) + +> *Picha kutoka [Exercise Notebook](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection-TF.ipynb)* + +Hata hivyo, njia hii si bora, kwa sababu inaruhusu tu algoriti kubaini kisanduku cha mipaka ya kitu kwa usahihi mdogo. Kwa usahihi zaidi wa eneo, tunahitaji kuendesha aina fulani ya **urekebishaji** ili kutabiri viwianishi vya visanduku vya mipaka - na kwa hilo, tunahitaji seti maalum za data. + +## Urekebishaji kwa Utambuzi wa Vitu + +[Chapisho hili la blogu](https://towardsdatascience.com/object-detection-with-neural-networks-a4e2c46b4491) lina utangulizi mzuri wa kutambua maumbo. + +## Seti za Data kwa Utambuzi wa Vitu + +Unaweza kukutana na seti zifuatazo za data kwa kazi hii: + +* [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/) - Darasa 20 +* [COCO](http://cocodataset.org/#home) - Vitu vya Kawaida katika Muktadha. Darasa 80, visanduku vya mipaka na maski za kugawanya. + +![COCO](../../../../../translated_images/coco-examples.71bc60380fa6cceb7caad48bd09e35b6028caabd363aa04fee89c414e0870e86.sw.jpg) + +## Vipimo vya Utambuzi wa Vitu + +### Muingiliano juu ya Muungano + +Wakati wa uainishaji wa picha ni rahisi kupima jinsi algoriti inavyofanya kazi, kwa utambuzi wa vitu tunahitaji kupima usahihi wa darasa, pamoja na usahihi wa eneo la kisanduku cha mipaka kilichotabiriwa. Kwa hili la mwisho, tunatumia kipimo kinachoitwa **Muingiliano juu ya Muungano** (IoU), ambacho hupima jinsi visanduku viwili (au maeneo mawili ya kiholela) vinavyofanana. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.sw.png) + +> *Kielelezo cha 2 kutoka [blogu bora kuhusu IoU](https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)* + +Wazo ni rahisi - tunagawanya eneo la muingiliano kati ya maumbo mawili kwa eneo la muungano wao. Kwa maeneo mawili yanayofanana kabisa, IoU itakuwa 1, wakati kwa maeneo yasiyogusana kabisa itakuwa 0. Vinginevyo, itatofautiana kutoka 0 hadi 1. Kwa kawaida tunazingatia tu visanduku vya mipaka ambavyo IoU yake iko juu ya thamani fulani. + +### Usahihi wa Wastani + +Tukichukulia tunataka kupima jinsi darasa fulani la vitu $C$ linavyotambuliwa. Ili kupima hili, tunatumia kipimo cha **Usahihi wa Wastani**, ambacho huhesabiwa kama ifuatavyo: + +1. Fikiria Mchoro wa Usahihi-Kumbukumbu unaonyesha usahihi kulingana na thamani ya kizingiti cha utambuzi (kutoka 0 hadi 1). +2. Kulingana na kizingiti, tutapata vitu vingi au vichache vilivyotambuliwa kwenye picha, na thamani tofauti za usahihi na kumbukumbu. +3. Mchoro utaonekana kama huu: + + + +> *Picha kutoka [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +Usahihi wa Wastani kwa darasa fulani $C$ ni eneo chini ya mchoro huu. Kwa usahihi zaidi, mhimili wa Kumbukumbu kwa kawaida hugawanywa katika sehemu 10, na Usahihi huhesabiwa wastani kwa alama zote hizo: + +$$ +AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) +$$ + +### AP na IoU + +Tutazingatia tu utambuzi ule, ambao IoU yake iko juu ya thamani fulani. Kwa mfano, katika seti ya data ya PASCAL VOC kwa kawaida $\mbox{IoU Threshold} = 0.5$ inachukuliwa, wakati katika COCO AP hupimwa kwa thamani tofauti za $\mbox{IoU Threshold}$. + + + +> *Picha kutoka [NeuroWorkshop](http://github.com/shwars/NeuroWorkshop)* + +### Usahihi wa Wastani wa Kawaida - mAP + +Kipimo kikuu cha Utambuzi wa Vitu kinaitwa **Usahihi wa Wastani wa Kawaida**, au **mAP**. Ni thamani ya Usahihi wa Wastani, wastani kwa darasa zote za vitu, na wakati mwingine pia kwa $\mbox{IoU Threshold}$. Kwa undani zaidi, mchakato wa kuhesabu **mAP** umeelezewa +[katika blogu hii](https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-for-object-detection-a07fe6962cf3)), na pia [hapa na sampuli za msimbo](https://gist.github.com/tarlen5/008809c3decf19313de216b9208f3734). + +## Njia Tofauti za Utambuzi wa Vitu + +Kuna makundi mawili makuu ya algoriti za utambuzi wa vitu: + +* **Mitandao ya Mapendekezo ya Eneo** (R-CNN, Fast R-CNN, Faster R-CNN). Wazo kuu ni kuunda **Maeneo ya Maslahi** (ROI) na kuendesha CNN juu yao, kutafuta uamsho wa juu zaidi. Ni kidogo kama njia rahisi, isipokuwa kwamba ROI zinatengenezwa kwa njia ya busara zaidi. Mojawapo ya mapungufu makubwa ya mbinu hizi ni kwamba ni polepole, kwa sababu tunahitaji kupitisha mara nyingi kipanga darasa cha CNN juu ya picha. +* **Njia ya kupita moja** (YOLO, SSD, RetinaNet). Katika usanifu huu tunabuni mtandao kutabiri darasa na ROI kwa kupita moja. + +### R-CNN: CNN Inayotegemea Eneo + +[R-CNN](http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf) hutumia [Utafutaji wa Kuchagua](http://www.huppelen.nl/publications/selectiveSearchDraft.pdf) kuunda muundo wa kihierarkia wa maeneo ya ROI, ambayo kisha hupitishwa kupitia vipanga sifa vya CNN na vipanga darasa vya SVM ili kubaini darasa la kitu, na urekebishaji wa mstari ili kubaini viwianishi vya *kisanduku cha mipaka*. [Karatasi Rasmi](https://arxiv.org/pdf/1506.01497v1.pdf) + +![RCNN](../../../../../translated_images/rcnn1.cae407020dfb1d1fb572656e44f75cd6c512cc220591c116c506652c10e47f26.sw.png) + +> *Picha kutoka van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.sw.png) + +> *Picha kutoka [blogu hii](https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e) + +### F-RCNN - R-CNN ya Haraka + +Mbinu hii ni sawa na R-CNN, lakini maeneo yanabainishwa baada ya tabaka za convolution kutumika. + +![FRCNN](../../../../../translated_images/f-rcnn.3cda6d9bb41888754037d2d9763e2298a96de5d9bc2a21db3147357aa5da9b1a.sw.png) + +> Picha kutoka [Karatasi Rasmi](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 + +Wazo kuu la mbinu hii ni kutumia mtandao wa neva kutabiri ROI - kinachoitwa *Mtandao wa Mapendekezo ya Eneo*. [Karatasi](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.sw.png) + +> Picha kutoka [karatasi rasmi](https://arxiv.org/pdf/1506.01497.pdf) + +### R-FCN: Mtandao wa Kikamilifu wa Convolutional Inayotegemea Eneo + +Algoriti hii ni ya haraka zaidi kuliko Faster R-CNN. Wazo kuu ni kama ifuatavyo: + +1. Tunatoa sifa kwa kutumia ResNet-101. +2. Sifa zinachakatwa na **Ramani ya Alama ya Kifaa cha Nafasi**. Kila kitu kutoka darasa $C$ hugawanywa na $k\times k$ maeneo, na tunafundisha kutabiri sehemu za vitu. +3. Kwa kila sehemu kutoka $k\times k$ maeneo mitandao yote hupiga kura kwa darasa la vitu, na darasa la kitu lenye kura nyingi zaidi huchaguliwa. + +![r-fcn image](../../../../../translated_images/r-fcn.13eb88158b99a3da50fa2787a6be5cb310d47f0e9655cc93a1090dc7aab338d1.sw.png) + +> Picha kutoka [karatasi rasmi](https://arxiv.org/abs/1605.06409) + +### YOLO - Unatazama Mara Moja Tu + +YOLO ni algoriti ya wakati halisi ya kupita moja. Wazo kuu ni kama ifuatavyo: + + * Picha inagawanywa katika $S\times S$ maeneo. + * Kwa kila eneo, **CNN** inatabiri $n$ vitu vinavyowezekana, viwianishi vya *kisanduku cha mipaka* na *uhakika*=*uwezekano* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.sw.png) + +> Picha kutoka [karatasi rasmi](https://arxiv.org/abs/1506.02640) + +### Algoriti Nyingine + +* RetinaNet: [karatasi rasmi](https://arxiv.org/abs/1708.02002) + - [Utekelezaji wa PyTorch katika Torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) + - [Utekelezaji wa Keras](https://github.com/fizyr/keras-retinanet) + - [Utambuzi wa Vitu na RetinaNet](https://keras.io/examples/vision/retinanet/) katika Sampuli za Keras +* SSD (Single Shot Detector): [karatasi rasmi](https://arxiv.org/abs/1512.02325) + +## ✍️ Mazoezi: Utambuzi wa Vitu + +Endelea kujifunza katika daftari lifuatalo: [ObjectDetection.ipynb](../../../../../lessons/4-ComputerVision/11-ObjectDetection/ObjectDetection.ipynb) -## Slutsats +## Hitimisho -I den här lektionen fick du en snabb genomgång av alla olika sätt som objektdetektering kan utföras på! +Katika somo hili umechukua ziara ya haraka ya njia mbalimbali za kutekeleza utambuzi wa vitu! -## 🚀 Utmaning +## 🚀 Changamoto -Läs igenom dessa artiklar och anteckningsböcker om YOLO och prova dem själv +Soma makala na daftari hizi kuhusu YOLO na ujaribu mwenyewe: -* [Bra blogginlägg](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) som beskriver YOLO - * [Officiell webbplats](https://pjreddie.com/darknet/yolo/) - * Yolo: [Keras-implementation](https://github.com/experiencor/keras-yolo2), [steg-för-steg anteckningsbok](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) - * Yolo v2: [Keras-implementation](https://github.com/experiencor/keras-yolo2), [steg-för-steg anteckningsbok](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) +* [Blogu nzuri](https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python/) inayofafanua YOLO. + * [Tovuti rasmi](https://pjreddie.com/darknet/yolo/) + * Yolo: [Utekelezaji wa Keras](https://github.com/experiencor/keras-yolo2), [daftari la hatua kwa hatua](https://github.com/experiencor/basic-yolo-keras/blob/master/Yolo%20Step-by-Step.ipynb) + * Yolo v2: [Utekelezaji wa Keras](https://github.com/experiencor/keras-yolo2), [daftari la hatua kwa hatua](https://github.com/experiencor/keras-yolo2/blob/master/Yolo%20Step-by-Step.ipynb) -## [Efterföreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) +## [Maswali ya baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/211) -## Granskning & Självstudier +## Mapitio na Kujisomea -* [Objektdetektering](https://tjmachinelearning.com/lectures/1718/obj/) av Nikhil Sardana -* [En bra jämförelse av algoritmer för objektdetektering](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) -* [Översyn av djupinlärningsalgoritmer för objektdetektering](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) -* [En steg-för-steg introduktion till de grundläggande algoritmerna för objektdetektering](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) -* [Implementering av Faster R-CNN i Python för objektdetektering](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) +* [Utambuzi wa Vitu](https://tjmachinelearning.com/lectures/1718/obj/) na Nikhil Sardana +* [Ulinganisho mzuri wa algoriti za utambuzi wa vitu](https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html) +* [Mapitio ya Algoriti za Kujifunza Kina kwa Utambuzi wa Vitu](https://medium.com/comet-app/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852) +* [Utangulizi wa Hatua kwa Hatua wa Algoriti za Msingi za Utambuzi wa Vitu](https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/) +* [Utekelezaji wa Faster R-CNN katika Python kwa Utambuzi wa Vitu](https://www.analyticsvidhya.com/blog/2018/11/implementation-faster-r-cnn-python-object-detection/) -## [Uppgift: Objektdetektering](lab/README.md) +## [Kazi: Utambuzi wa Vitu](lab/README.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md index fc984217..fb9d308e 100644 --- a/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md +++ b/translations/sw/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md @@ -1,14 +1,23 @@ -# Huvuddetektering med Hollywood Heads Dataset + +# Utambuzi wa Vichwa kwa Kutumia Hollywood Heads Dataset -Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Att räkna antalet personer på en videoövervakningskamerastream är en viktig uppgift som gör att vi kan uppskatta antalet besökare i butiker, hektiska timmar på en restaurang, osv. För att lösa denna uppgift behöver vi kunna detektera mänskliga huvuden från olika vinklar. För att träna en objektdetekteringsmodell för att upptäcka mänskliga huvuden kan vi använda [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). +Kuhesabu idadi ya watu kwenye mkondo wa kamera ya ufuatiliaji ni kazi muhimu ambayo itatuwezesha kukadiria idadi ya wageni katika maduka, saa za shughuli nyingi kwenye mgahawa, n.k. Ili kutatua kazi hii, tunahitaji uwezo wa kutambua vichwa vya binadamu kutoka pembe tofauti. Ili kufundisha modeli ya utambuzi wa vitu kutambua vichwa vya binadamu, tunaweza kutumia [Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/). -## Datasetet +## Dataset -[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) innehåller 369,846 mänskliga huvuden annoterade i 224,740 filmrutor från Hollywood-filmer. Det tillhandahålls i [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC) format, där det för varje bild också finns en XML-beskrivningsfil som ser ut så här: +[Hollywood Heads Dataset](https://www.di.ens.fr/willow/research/headdetection/release/HollywoodHeads.zip) ina vichwa vya binadamu 369,846 vilivyotolewa maelezo katika fremu za filamu 224,740 kutoka filamu za Hollywood. Dataset hii inatolewa katika muundo wa [https://host.robots.ox.ac.uk/pascal/VOC/](../../../../../../lessons/4-ComputerVision/11-ObjectDetection/lab/PASCAL VOC), ambapo kwa kila picha kuna faili ya maelezo ya XML inayofanana na hii: ```xml @@ -48,19 +57,19 @@ Att räkna antalet personer på en videoövervakningskamerastream är en viktig ``` -I detta dataset finns det endast en klass av objekt `head`, och för varje huvud får du koordinaterna för bounding box. Du kan analysera XML med hjälp av Python-bibliotek, eller använda [detta bibliotek](https://pypi.org/project/pascal-voc/) för att hantera PASCAL VOC-formatet direkt. +Katika dataset hii, kuna darasa moja tu la vitu `head`, na kwa kila kichwa, unapata maelezo ya mipaka ya kisanduku. Unaweza kuchambua XML kwa kutumia maktaba za Python, au kutumia [maktaba hii](https://pypi.org/project/pascal-voc/) kushughulikia moja kwa moja muundo wa PASCAL VOC. -## Träning av Objektdetektion +## Mafunzo ya Utambuzi wa Vitu -Du kan träna en objektdetekteringsmodell på följande sätt: +Unaweza kufundisha modeli ya utambuzi wa vitu kwa kutumia mojawapo ya njia zifuatazo: -* Använda [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) och dess Python-API för att programmera träningen av modellen i molnet. Custom Vision kommer inte att kunna använda mer än några hundra bilder för att träna modellen, så du kan behöva begränsa datasetet. -* Använda exemplet från [Keras tutorial](https://keras.io/examples/vision/retinanet/) för att träna RetunaNet-modellen. -* Använda [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) inbyggda modul i torchvision. +* Kutumia [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) na API yake ya Python kufundisha modeli kwa njia ya programu kwenye wingu. Custom Vision haitakuwa na uwezo wa kutumia zaidi ya picha chache kwa mafunzo ya modeli, kwa hivyo unaweza kuhitaji kupunguza dataset. +* Kutumia mfano kutoka [Keras tutorial](https://keras.io/examples/vision/retinanet/) kufundisha modeli ya RetunaNet. +* Kutumia [torchvision.models.detection.RetinaNet](https://pytorch.org/vision/stable/_modules/torchvision/models/detection/retinanet.html) moduli iliyojengwa ndani ya torchvision. -## Sammanfattning +## Muhimu -Objektdetektion är en uppgift som ofta krävs inom industrin. Även om det finns vissa tjänster som kan användas för att utföra objektdetektion (såsom [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)), är det viktigt att förstå hur objektdetektion fungerar och att kunna träna sina egna modeller. +Utambuzi wa vitu ni kazi ambayo mara nyingi inahitajika katika sekta. Ingawa kuna huduma ambazo zinaweza kutumika kufanya utambuzi wa vitu (kama [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)), ni muhimu kuelewa jinsi utambuzi wa vitu unavyofanya kazi na kuwa na uwezo wa kufundisha modeli zako mwenyewe. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md index 5fef0ec0..03a2388a 100644 --- a/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md +++ b/translations/sw/lessons/4-ComputerVision/12-Segmentation/README.md @@ -1,69 +1,78 @@ -# Segmentering + +# Ugawaji -Vi har tidigare lärt oss om Objektigenkänning, som gör det möjligt för oss att lokalisera objekt i bilden genom att förutsäga deras *ramar*. Men för vissa uppgifter behöver vi inte bara ramar, utan också mer exakt lokalisering av objekt. Denna uppgift kallas för **segmentering**. +Tumejifunza awali kuhusu Utambuzi wa Vitu, ambao hutuwezesha kutambua vitu kwenye picha kwa kutabiri *mipaka ya vitu* yao. Hata hivyo, kwa baadhi ya kazi hatuhitaji tu mipaka ya vitu, bali pia utambuzi wa vitu kwa usahihi zaidi. Kazi hii inaitwa **ugawaji**. -## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112) -Segmentering kan ses som **pixelkategorisering**, där vi för **varje** pixel i bilden måste förutsäga dess klass (*bakgrund* är en av klasserna). Det finns två huvudalgoritmer för segmentering: +Ugawaji unaweza kuonekana kama **utambuzi wa pikseli**, ambapo kwa **kila** pikseli ya picha tunapaswa kutabiri darasa lake (*mandharinyuma* ikiwa mojawapo ya madarasa). Kuna mbinu kuu mbili za ugawaji: -* **Semantisk segmentering** berättar endast pixelns klass och gör ingen åtskillnad mellan olika objekt av samma klass. -* **Instanssegmentering** delar klasser i olika instanser. +* **Ugawaji wa kisemantiki** huonyesha tu darasa la pikseli, bila kutofautisha kati ya vitu tofauti vya darasa moja. +* **Ugawaji wa kielelezo** hugawanya madarasa katika vielelezo tofauti. -För instanssegmentering är dessa får olika objekt, men för semantisk segmentering representeras alla får av en klass. +Kwa ugawaji wa kielelezo, kondoo hawa ni vitu tofauti, lakini kwa ugawaji wa kisemantiki kondoo wote wanawakilishwa na darasa moja. -> Bild från [detta blogginlägg](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) +> Picha kutoka [makala hii ya blogu](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) -Det finns olika neurala arkitekturer för segmentering, men de har alla samma struktur. På ett sätt liknar det autoencodern du lärde dig om tidigare, men istället för att dekonstruera den ursprungliga bilden, är vårt mål att dekonstruera en **mask**. Således har ett segmenteringsnätverk följande delar: +Kuna usanifu tofauti wa neva kwa ugawaji, lakini yote yana muundo sawa. Kwa namna fulani, ni sawa na autoencoder uliyojifunza awali, lakini badala ya kuvunja picha ya asili, lengo letu ni kuvunja **maski**. Hivyo, mtandao wa ugawaji una sehemu zifuatazo: -* **Encoder** extraherar funktioner från inmatningsbilden. -* **Decoder** omvandlar dessa funktioner till **maskbilden**, med samma storlek och antal kanaler motsvarande antalet klasser. +* **Encoder** huchukua vipengele kutoka kwenye picha ya ingizo. +* **Decoder** hubadilisha vipengele hivyo kuwa **picha ya maski**, yenye ukubwa sawa na idadi ya njia zinazolingana na idadi ya madarasa. -> Bild från [denna publikation](https://arxiv.org/pdf/2001.05566.pdf) +> Picha kutoka [chapisho hili](https://arxiv.org/pdf/2001.05566.pdf) -Vi bör särskilt nämna förlustfunktionen som används för segmentering. När vi använder klassiska autoencoders behöver vi mäta likheten mellan två bilder, och vi kan använda medelkvadratfel (MSE) för att göra det. Vid segmentering representerar varje pixel i målmaskbilden klassnumret (one-hot-kodad längs den tredje dimensionen), så vi behöver använda förlustfunktioner specifika för klassificering - korsentropiförlust, genomsnittlig över alla pixlar. Om masken är binär - används **binär korsentropiförlust** (BCE). +Tunapaswa kutaja hasa kazi ya hasara inayotumika kwa ugawaji. Tunapotumia autoencoders za kawaida, tunahitaji kupima ufanano kati ya picha mbili, na tunaweza kutumia mean square error (MSE) kufanya hivyo. Katika ugawaji, kila pikseli kwenye picha ya maski ya lengo inawakilisha namba ya darasa (imekodwa kwa njia ya one-hot kwenye kipimo cha tatu), hivyo tunahitaji kutumia kazi za hasara maalum kwa utambuzi - hasara ya msalaba-entropy, iliyopimwa wastani kwa pikseli zote. Ikiwa maski ni ya binary - **binary cross-entropy loss** (BCE) hutumika. -> ✅ One-hot-kodning är ett sätt att koda en klassetikett till en vektor av längd som är lika med antalet klasser. Ta en titt på [denna artikel](https://datagy.io/sklearn-one-hot-encode/) om denna teknik. +> ✅ One-hot encoding ni njia ya kuweka lebo ya darasa katika vekta yenye urefu sawa na idadi ya madarasa. Angalia [makala hii](https://datagy.io/sklearn-one-hot-encode/) kuhusu mbinu hii. -## Segmentering för Medicinsk Avbildning +## Ugawaji kwa Picha za Matibabu -I denna lektion kommer vi att se segmentering i praktiken genom att träna nätverket att känna igen mänskliga nevi (även kända som födelsemärken) på medicinska bilder. Vi kommer att använda PH2 Databas av dermatoskopibilder som bildkälla. Denna dataset innehåller 200 bilder av tre klasser: typiskt nevus, atypiskt nevus och melanom. Alla bilder innehåller också en motsvarande **mask** som omger nevuset. +Katika somo hili, tutaona ugawaji ukifanya kazi kwa kufundisha mtandao kutambua nevi za binadamu (pia zinajulikana kama moles) kwenye picha za matibabu. Tutatumia Hifadhidata ya PH2 ya picha za dermoscopy kama chanzo cha picha. Hifadhidata hii ina picha 200 za madarasa matatu: nevus ya kawaida, nevus isiyo ya kawaida, na melanoma. Picha zote pia zina **maski** inayotambulisha nevus. -> ✅ Denna teknik är särskilt lämplig för denna typ av medicinsk avbildning, men vilka andra verkliga tillämpningar kan du föreställa dig? +> ✅ Mbinu hii ni maalum kwa aina hii ya picha za matibabu, lakini ni matumizi gani mengine ya ulimwengu halisi unayoweza kufikiria? navi -> Bild från PH2 Databas +> Picha kutoka Hifadhidata ya PH2 -Vi kommer att träna en modell för att segmentera vilket nevus som helst från dess bakgrund. +Tutafundisha modeli kugawa nevus yoyote kutoka mandharinyuma yake. -## ✍️ Övningar: Semantisk Segmentering +## ✍️ Mazoezi: Ugawaji wa Kisemantiki -Öppna anteckningarna nedan för att lära dig mer om olika arkitekturer för semantisk segmentering, öva på att arbeta med dem och se dem i aktion. +Fungua daftari zilizo hapa chini ili kujifunza zaidi kuhusu usanifu tofauti wa ugawaji wa kisemantiki, fanya mazoezi ya kufanya kazi nao, na uone jinsi wanavyofanya kazi. -* [Semantisk Segmentering Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) -* [Semantisk Segmentering TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) +* [Ugawaji wa Kisemantiki Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb) +* [Ugawaji wa Kisemantiki TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb) -## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) +## [Maswali ya baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212) -## Slutsats +## Hitimisho -Segmentering är en mycket kraftfull teknik för bildklassificering, som går bortom ramar till klassificering på pixelnivå. Det är en teknik som används inom medicinsk avbildning, bland andra tillämpningar. +Ugawaji ni mbinu yenye nguvu sana kwa utambuzi wa picha, ikihama kutoka mipaka ya vitu hadi utambuzi wa kiwango cha pikseli. Ni mbinu inayotumika katika picha za matibabu, miongoni mwa matumizi mengine. -## 🚀 Utmaning +## 🚀 Changamoto -Kroppsegmentering är bara en av de vanliga uppgifterna vi kan utföra med bilder av människor. Andra viktiga uppgifter inkluderar **skelettdetektion** och **ställningsdetektion**. Prova [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) biblioteket för att se hur ställningsdetektion kan användas. +Ugawaji wa mwili ni mojawapo ya kazi za kawaida tunazoweza kufanya na picha za watu. Kazi nyingine muhimu ni pamoja na **utambuzi wa mifupa** na **utambuzi wa mkao**. Jaribu maktaba ya [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) ili kuona jinsi utambuzi wa mkao unavyoweza kutumika. -## Granskning & Självstudie +## Mapitio na Kujifunza Binafsi -Denna [wikipediaartikel](https://wikipedia.org/wiki/Image_segmentation) erbjuder en bra översikt över de olika tillämpningarna av denna teknik. Lär dig mer på egen hand om underområdena för instanssegmentering och panoptisk segmentering inom detta forskningsområde. +Makala hii ya [Wikipedia](https://wikipedia.org/wiki/Image_segmentation) inatoa muhtasari mzuri wa matumizi mbalimbali ya mbinu hii. Jifunze zaidi peke yako kuhusu sehemu ndogo za Ugawaji wa Kielelezo na Ugawaji wa Panoptic katika uwanja huu wa uchunguzi. -## [Uppgift](lab/README.md) +## [Kazi ya nyumbani](lab/README.md) -I detta laboratorium, prova **segmentering av människokroppen** med [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) från Kaggle. +Katika maabara hii, jaribu **ugawaji wa mwili wa binadamu** kwa kutumia [Hifadhidata ya Segmentation Full Body MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) kutoka Kaggle. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md index 8c88e57b..ee65176f 100644 --- a/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md +++ b/translations/sw/lessons/4-ComputerVision/12-Segmentation/lab/README.md @@ -1,22 +1,31 @@ -# Segmentering av den mänskliga kroppen + +# Usegaji wa Mwili wa Binadamu -Laborationsuppgift från [AI för nybörjare-kursen](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Vid videoproduktion, till exempel i väderprognoser, behöver vi ofta klippa ut en mänsklig bild från kameran och placera den ovanpå annat material. Detta görs vanligtvis med hjälp av **chroma key**-tekniker, där en människa filmas framför en enhetlig färgbakgrund som sedan tas bort. I denna laboration kommer vi att träna en neuralt nätverksmodell för att klippa ut människans silhuett. +Katika uzalishaji wa video, kwa mfano, katika utabiri wa hali ya hewa, mara nyingi tunahitaji kukata picha ya binadamu kutoka kwa kamera na kuiweka juu ya video nyingine. Hii kwa kawaida hufanyika kwa kutumia mbinu za **chroma key**, ambapo binadamu anarekodiwa mbele ya mandhari yenye rangi moja, ambayo kisha huondolewa. Katika maabara hii, tutafundisha mtandao wa neva ili kukata umbo la binadamu. -## Datasetet +## Seti ya Data -Vi kommer att använda [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) från Kaggle. Ladda ner datasetet manuellt från Kaggle. +Tutatumia [Seti ya Data ya Usegaji Mwili Kamili wa MADS](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) kutoka Kaggle. Pakua seti ya data kwa mkono kutoka Kaggle. -## Starta anteckningsboken +## Daftari la Kuanza -Börja laborationen genom att öppna [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) +Anza maabara kwa kufungua [BodySegmentation.ipynb](../../../../../../lessons/4-ComputerVision/12-Segmentation/lab/BodySegmentation.ipynb) -## Sammanfattning +## Mambo ya Kujifunza -Segmentering av kroppen är bara en av de vanliga uppgifterna som vi kan utföra med bilder på människor. Andra viktiga uppgifter inkluderar **skelettdetektering** och **ställningsdetektering**. Kolla in [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) biblioteket för att se hur dessa uppgifter kan implementeras. +Usegaji wa mwili ni mojawapo ya kazi za kawaida tunazoweza kufanya na picha za watu. Kazi nyingine muhimu ni pamoja na **utambuzi wa mifupa** na **utambuzi wa mkao**. Angalia maktaba ya [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) ili kuona jinsi kazi hizo zinaweza kutekelezwa. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för missförstånd eller felaktiga tolkningar som kan uppstå genom användning av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/4-ComputerVision/README.md b/translations/sw/lessons/4-ComputerVision/README.md index 171d4dfd..8df3007d 100644 --- a/translations/sw/lessons/4-ComputerVision/README.md +++ b/translations/sw/lessons/4-ComputerVision/README.md @@ -1,16 +1,25 @@ -# Datorseende + +# Maono ya Kompyuta -![Sammanfattning av innehållet inom datorseende i en doodle](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png) +![Muhtasari wa maudhui ya Maono ya Kompyuta katika mchoro](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.sw.png) -I denna sektion kommer vi att lära oss om: +Katika sehemu hii tutajifunza kuhusu: -* [Introduktion till Datorseende och OpenCV](06-IntroCV/README.md) -* [Konvolutionella Neurala Nätverk](07-ConvNets/README.md) -* [Förtränade Nätverk och Överföringsinlärning](08-TransferLearning/README.md) -* [Autoenkodare](09-Autoencoders/README.md) -* [Generativa Motståndarnätverk](10-GANs/README.md) -* [Objektdetektering](11-ObjectDetection/README.md) -* [Semantisk Segmentering](12-Segmentation/README.md) +* [Utangulizi wa Maono ya Kompyuta na OpenCV](06-IntroCV/README.md) +* [Mitandao ya Neural ya Convolutional](07-ConvNets/README.md) +* [Mitandao Iliyojifunza Tayari na Uhamishaji wa Kujifunza](08-TransferLearning/README.md) +* [Autoencoders](09-Autoencoders/README.md) +* [Mitandao ya Kizazi ya Kinyume](10-GANs/README.md) +* [Utambuzi wa Vitu](11-ObjectDetection/README.md) +* [Ugawaji wa Kisemantiki](12-Segmentation/README.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/13-TextRep/README.md b/translations/sw/lessons/5-NLP/13-TextRep/README.md index f2040f42..e233134c 100644 --- a/translations/sw/lessons/5-NLP/13-TextRep/README.md +++ b/translations/sw/lessons/5-NLP/13-TextRep/README.md @@ -1,76 +1,85 @@ -# Att Representera Text som Tensors + +# Kuwakilisha Maandishi kama Tensors -## [För-lektionens quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) +## [Jaribio la Kabla ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/113) -## Textklassificering +## Uainishaji wa Maandishi -Under den första delen av denna sektion kommer vi att fokusera på uppgiften **textklassificering**. Vi kommer att använda [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset) dataset, som innehåller nyhetsartiklar som följande: +Katika sehemu ya kwanza ya somo hili, tutazingatia kazi ya **uainishaji wa maandishi**. Tutatumia Dataset ya [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-dataset), ambayo ina makala za habari kama ifuatavyo: -* Kategori: Sci/Tech -* Titel: Ky. Företag Vinner Bidrag för att Studera Peptider (AP) -* Innehåll: AP - Ett företag grundat av en kemiforskare vid University of Louisville vann ett bidrag för att utveckla... +* Kategoria: Sayansi/Teknolojia +* Kichwa: Kampuni ya Ky. Yashinda Ruzuku ya Kuchunguza Peptidi (AP) +* Mwili: AP - Kampuni iliyoanzishwa na mtafiti wa kemia katika Chuo Kikuu cha Louisville ilishinda ruzuku ya kuendeleza... -Vårt mål kommer att vara att klassificera nyhetsartikeln i en av kategorierna baserat på texten. +Lengo letu litakuwa kuainisha kipengele cha habari katika moja ya kategoria kulingana na maandishi. -## Representera text +## Kuwakilisha Maandishi -Om vi vill lösa uppgifter inom Natural Language Processing (NLP) med neurala nätverk, behöver vi ett sätt att representera text som tensors. Datorer representerar redan texttecken som siffror som mappas till typsnitt på din skärm med hjälp av kodningar som ASCII eller UTF-8. +Ili kutatua kazi za Usindikaji wa Lugha Asilia (NLP) kwa kutumia mitandao ya neva, tunahitaji njia ya kuwakilisha maandishi kama tensors. Kompyuta tayari zinawakilisha herufi za maandishi kama namba zinazolingana na fonti kwenye skrini yako kwa kutumia encodings kama ASCII au UTF-8. -Bild som visar diagram som mappar ett tecken till en ASCII- och binär representation +Picha inayoonyesha mchoro wa kuonyesha ramani ya herufi kwa uwakilishi wa ASCII na binary -> [Bildkälla](https://www.seobility.net/en/wiki/ASCII) +> [Chanzo cha Picha](https://www.seobility.net/en/wiki/ASCII) -Som människor förstår vi vad varje bokstav **representerar**, och hur alla tecken samverkar för att bilda orden i en mening. Datorer har dock inte en sådan förståelse av sig själva, och det neurala nätverket måste lära sig betydelsen under träningen. +Kwa wanadamu, tunaelewa kile kila herufi **inawakilisha**, na jinsi herufi zote zinavyoungana kuunda maneno ya sentensi. Hata hivyo, kompyuta zenyewe hazina uelewa huo, na mtandao wa neva lazima ujifunze maana wakati wa mafunzo. -Därför kan vi använda olika metoder när vi representerar text: +Kwa hivyo, tunaweza kutumia mbinu tofauti wakati wa kuwakilisha maandishi: -* **Tecken-nivå representation**, när vi representerar text genom att behandla varje tecken som en siffra. Givet att vi har *C* olika tecken i vår textkorpus, skulle ordet *Hello* representeras av en 5x*C* tensor. Varje bokstav skulle motsvara en tensor kolumn i one-hot encoding. -* **Ord-nivå representation**, där vi skapar ett **ordförråd** av alla ord i vår text, och sedan representerar orden med one-hot encoding. Denna metod är på något sätt bättre, eftersom varje bokstav i sig själv inte har mycket mening, och genom att använda högre semantiska begrepp - ord - förenklar vi uppgiften för det neurala nätverket. Men givet den stora storleken på ordförrådet måste vi hantera högdimensionella glesa tensors. +* **Uwakilishi wa kiwango cha herufi**, ambapo tunawakilisha maandishi kwa kuchukulia kila herufi kama namba. Kwa kuwa tuna *C* herufi tofauti katika korpasi yetu ya maandishi, neno *Hello* litaakilishwa na tensor ya 5x*C*. Kila herufi italingana na safu ya tensor katika one-hot encoding. +* **Uwakilishi wa kiwango cha neno**, ambapo tunaunda **msamiati** wa maneno yote katika maandishi yetu, kisha tunawakilisha maneno kwa kutumia one-hot encoding. Mbinu hii ni bora zaidi kwa kiasi fulani, kwa sababu kila herufi peke yake haina maana kubwa, na kwa hivyo kwa kutumia dhana za juu zaidi za kisemantiki - maneno - tunarahisisha kazi kwa mtandao wa neva. Hata hivyo, kutokana na ukubwa wa kamusi, tunahitaji kushughulikia tensors kubwa na zilizo na nafasi nyingi tupu. -Oavsett representationen måste vi först konvertera texten till en sekvens av **tokens**, där en token kan vara antingen ett tecken, ett ord eller ibland till och med en del av ett ord. Sedan konverterar vi token till en siffra, vanligtvis med hjälp av **ordförråd**, och denna siffra kan matas in i ett neuralt nätverk med one-hot encoding. +Bila kujali uwakilishi, tunahitaji kwanza kubadilisha maandishi kuwa mlolongo wa **tokeni**, tokeni moja ikiwa herufi, neno, au wakati mwingine hata sehemu ya neno. Kisha, tunabadilisha tokeni kuwa namba, kwa kawaida kwa kutumia **msamiati**, na namba hii inaweza kulishwa kwenye mtandao wa neva kwa kutumia one-hot encoding. ## N-Grams -I naturligt språk kan den exakta betydelsen av ord endast bestämmas i kontext. Till exempel är betydelserna av *neural network* och *fishing network* helt olika. Ett av sätten att ta hänsyn till detta är att bygga vår modell på ordpar och betrakta ordpar som separata ordförrådstokens. På så sätt kommer meningen *I like to go fishing* att representeras av följande sekvens av tokens: *I like*, *like to*, *to go*, *go fishing*. Problemet med detta tillvägagångssätt är att ordförrådets storlek växer betydligt, och kombinationer som *go fishing* och *go shopping* representeras av olika tokens, som inte delar någon semantisk likhet trots att de har samma verb. +Katika lugha asilia, maana halisi ya maneno inaweza tu kuamuliwa katika muktadha. Kwa mfano, maana za *neural network* na *fishing network* ni tofauti kabisa. Njia moja ya kuzingatia hili ni kujenga mfano wetu kwa jozi za maneno, na kuzingatia jozi za maneno kama tokeni tofauti za msamiati. Kwa njia hii, sentensi *I like to go fishing* itawakilishwa na mlolongo wa tokeni zifuatazo: *I like*, *like to*, *to go*, *go fishing*. Tatizo la mbinu hii ni kwamba ukubwa wa kamusi unakua kwa kiasi kikubwa, na mchanganyiko kama *go fishing* na *go shopping* huwakilishwa na tokeni tofauti, ambazo hazishiriki uhusiano wowote wa kisemantiki licha ya kitenzi sawa. -I vissa fall kan vi överväga att använda tri-grams -- kombinationer av tre ord -- också. Således kallas denna metod ofta för **n-grams**. Det är också meningsfullt att använda n-grams med tecken-nivå representation, i vilket fall n-grams ungefär motsvarar olika stavelser. +Katika baadhi ya matukio, tunaweza kuzingatia kutumia tri-grams -- mchanganyiko wa maneno matatu -- pia. Kwa hivyo mbinu hii mara nyingi huitwa **n-grams**. Pia, inafaa kutumia n-grams na uwakilishi wa kiwango cha herufi, ambapo n-grams zitakaribia kuwakilisha silabi tofauti. -## Bag-of-Words och TF/IDF +## Mfuko wa Maneno na TF/IDF -När vi löser uppgifter som textklassificering, behöver vi kunna representera text med en fast storlek vektor, som vi kommer att använda som ingång till den slutliga täta klassificeraren. Ett av de enklaste sätten att göra detta är att kombinera alla individuella ordrepresentationer, t.ex. genom att addera dem. Om vi lägger till one-hot encodings av varje ord, kommer vi att få en frekvensvektor som visar hur många gånger varje ord förekommer i texten. En sådan representation av text kallas **bag of words** (BoW). +Wakati wa kutatua kazi kama uainishaji wa maandishi, tunahitaji kuwakilisha maandishi kwa vector moja ya ukubwa wa kudumu, ambayo tutatumia kama pembejeo kwa classifier ya mwisho yenye msongamano. Njia rahisi zaidi ya kufanya hivyo ni kuunganisha uwakilishi wa kila neno, kwa mfano kwa kuyaongeza. Tukiongeza one-hot encodings za kila neno, tutapata vector ya marudio, inayoonyesha mara ngapi kila neno linatokea ndani ya maandishi. Uwakilishi wa maandishi wa aina hii unaitwa **mfuko wa maneno** (BoW). -> Bild av författaren +> Picha na mwandishi -En BoW representerar i grunden vilka ord som förekommer i texten och i vilka mängder, vilket faktiskt kan vara en bra indikation på vad texten handlar om. Till exempel är en nyhetsartikel om politik sannolikt att innehålla ord som *president* och *land*, medan en vetenskaplig publikation skulle ha något som *collider*, *discovered*, etc. Således kan ordens frekvenser i många fall vara en bra indikator på textens innehåll. +BoW kimsingi huwakilisha maneno yanayotokea katika maandishi na kwa wingi gani, ambayo inaweza kuwa kiashiria kizuri cha kile maandishi yanahusu. Kwa mfano, makala ya habari kuhusu siasa huenda ikawa na maneno kama *rais* na *nchi*, wakati chapisho la kisayansi linaweza kuwa na maneno kama *collider*, *discovered*, n.k. Kwa hivyo, marudio ya maneno yanaweza mara nyingi kuwa kiashiria kizuri cha maudhui ya maandishi. -Problemet med BoW är att vissa vanliga ord, som *and*, *is*, etc. förekommer i de flesta texter och har de högsta frekvenserna, vilket döljer de ord som verkligen är viktiga. Vi kan sänka vikten av dessa ord genom att ta hänsyn till frekvensen med vilken ord förekommer i hela dokumentkollektionen. Detta är den huvudsakliga idén bakom TF/IDF-metoden, som täcks mer detaljerat i anteckningarna kopplade till denna lektion. +Tatizo na BoW ni kwamba maneno fulani ya kawaida, kama *na*, *ni*, n.k. yanatokea katika maandishi mengi, na yana marudio ya juu zaidi, yakifunika maneno ambayo ni muhimu kweli. Tunaweza kupunguza umuhimu wa maneno hayo kwa kuzingatia marudio ambayo maneno yanatokea katika mkusanyiko mzima wa nyaraka. Hii ndiyo wazo kuu nyuma ya mbinu ya TF/IDF, ambayo imeelezewa kwa undani zaidi katika daftari zilizoshikamana na somo hili. -Men ingen av dessa metoder kan helt ta hänsyn till **semantiken** i texten. Vi behöver mer kraftfulla modeller av neurala nätverk för att göra detta, vilket vi kommer att diskutera senare i denna sektion. +Hata hivyo, hakuna mojawapo ya mbinu hizi zinazoweza kuzingatia kikamilifu **semantiki** ya maandishi. Tunahitaji mifano yenye nguvu zaidi ya mitandao ya neva kufanya hivyo, ambayo tutajadili baadaye katika sehemu hii. -## ✍️ Övningar: Textrepresentation +## ✍️ Mazoezi: Uwakilishi wa Maandishi -Fortsätt din inlärning i följande anteckningar: +Endelea kujifunza katika daftari zifuatazo: -* [Textrepresentation med PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) -* [Textrepresentation med TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) +* [Uwakilishi wa Maandishi na PyTorch](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationPyTorch.ipynb) +* [Uwakilishi wa Maandishi na TensorFlow](../../../../../lessons/5-NLP/13-TextRep/TextRepresentationTF.ipynb) -## Slutsats +## Hitimisho -Hittills har vi studerat tekniker som kan tilldela frekvensvikt till olika ord. De kan dock inte representera mening eller ordning. Som den berömda lingvisten J. R. Firth sa 1935, "Den fullständiga betydelsen av ett ord är alltid kontextuell, och ingen studie av betydelse bortom kontext kan tas på allvar." Vi kommer senare i kursen att lära oss hur man fångar kontextuell information från text genom språkmodellering. +Hadi sasa, tumejifunza mbinu zinazoweza kuongeza uzito wa marudio kwa maneno tofauti. Hata hivyo, haziwezi kuwakilisha maana au mpangilio. Kama mwanaisimu maarufu J. R. Firth alivyosema mwaka 1935, "Maana kamili ya neno daima ni ya muktadha, na hakuna utafiti wa maana bila muktadha unaoweza kuchukuliwa kwa uzito." Tutajifunza baadaye katika kozi jinsi ya kunasa taarifa za muktadha kutoka kwa maandishi kwa kutumia uundaji wa lugha. -## 🚀 Utmaning +## 🚀 Changamoto -Försök med några andra övningar som använder bag-of-words och olika datamodeller. Du kanske inspireras av denna [tävling på Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) +Jaribu mazoezi mengine kwa kutumia mfuko wa maneno na mifano tofauti ya data. Unaweza kupata msukumo kutoka kwa [shindano hili kwenye Kaggle](https://www.kaggle.com/competitions/word2vec-nlp-tutorial/overview/part-1-for-beginners-bag-of-words) -## [Efter-lektionens quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) +## [Jaribio la Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/213) -## Granskning & Självstudie +## Mapitio na Kujisomea -Öva dina färdigheter med textembedding och bag-of-words tekniker på [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) +Fanya mazoezi ya ujuzi wako kwa kutumia embeddings za maandishi na mbinu za mfuko wa maneno kwenye [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) -## [Uppgift: Anteckningar](assignment.md) +## [Kazi: Daftari](assignment.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/13-TextRep/assignment.md b/translations/sw/lessons/5-NLP/13-TextRep/assignment.md index 71eb641b..6af53006 100644 --- a/translations/sw/lessons/5-NLP/13-TextRep/assignment.md +++ b/translations/sw/lessons/5-NLP/13-TextRep/assignment.md @@ -1,6 +1,15 @@ -# Uppgift: Anteckningsböcker + +# Kazi: Daftari -Använd anteckningsböckerna kopplade till denna lektion (antingen PyTorch- eller TensorFlow-versionen), kör dem igen med din egen dataset, kanske en från Kaggle, med korrekt attribuering. Skriv om anteckningsboken för att betona dina egna upptäckter. Testa några innovativa dataset som kan visa sig överraskande, som [denna om UFO-observationer](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) från NUFORC. +Kutumia daftari zinazohusiana na somo hili (iwe ni toleo la PyTorch au TensorFlow), ziendeshe tena ukitumia seti yako ya data, labda moja kutoka Kaggle, ukitumia kwa kutaja chanzo. Andika upya daftari ili kuonyesha matokeo yako mwenyewe. Jaribu seti za data za ubunifu ambazo zinaweza kushangaza, kama [hii kuhusu matukio ya UFO](https://www.kaggle.com/datasets/NUFORC/ufo-sightings) kutoka NUFORC. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/14-Embeddings/README.md b/translations/sw/lessons/5-NLP/14-Embeddings/README.md index 5529cd33..84ffb645 100644 --- a/translations/sw/lessons/5-NLP/14-Embeddings/README.md +++ b/translations/sw/lessons/5-NLP/14-Embeddings/README.md @@ -1,68 +1,77 @@ -# Inbäddningar + +# Uwekaji wa Neno -## [För-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/114) -När vi tränade klassificerare baserade på BoW eller TF/IDF, arbetade vi med högdimensionella bag-of-words-vektorer med längd `vocab_size`, och vi konverterade uttryckligen från lågdimensionella positionsrepresentationsvektorer till glesa en-hot-representationer. Denna en-hot-representation är dock inte minneseffektiv. Dessutom behandlas varje ord oberoende av varandra, dvs. en-hot-kodade vektorer uttrycker ingen semantisk likhet mellan orden. +Wakati wa kufundisha vionyeshi vya kuainisha kwa kutumia BoW au TF/IDF, tulikuwa tunatumia vekta za maneno zenye vipimo vingi zenye urefu `vocab_size`, na tulikuwa tunabadilisha vekta za uwakilishi wa nafasi zenye vipimo vichache kuwa uwakilishi wa sparse one-hot. Hata hivyo, uwakilishi huu wa one-hot si wa ufanisi wa kumbukumbu. Zaidi ya hayo, kila neno linachukuliwa kuwa huru kutoka kwa mengine, yaani, vekta za one-hot hazionyeshi uhusiano wa kisemantiki kati ya maneno. -Idén med **inbäddning** är att representera ord med lägre dimensionella täta vektorer, som på något sätt återspeglar det semantiska betydelsen av ett ord. Vi kommer senare att diskutera hur man bygger meningsfulla ordinbäddningar, men för nu kan vi tänka på inbäddningar som ett sätt att sänka dimensionaliteten av en ordvektor. +Wazo la **uwekaji wa neno** ni kuwakilisha maneno kwa vekta zenye vipimo vichache, ambazo kwa namna fulani zinaonyesha maana ya kisemantiki ya neno. Tutajadili baadaye jinsi ya kujenga uwekaji wa maneno wenye maana, lakini kwa sasa wacha tuwaze uwekaji wa neno kama njia ya kupunguza vipimo vya vekta ya neno. -Så inbäddningslagret skulle ta ett ord som indata och producera en utdata-vektor av specificerad `embedding_size`. På ett sätt är det mycket likt ett `Linear`-lager, men istället för att ta en en-hot-kodad vektor, kan det ta ett ordnummer som indata, vilket gör att vi kan undvika att skapa stora en-hot-kodade vektorer. +Kwa hivyo, safu ya uwekaji itachukua neno kama ingizo, na kutoa vekta ya matokeo yenye ukubwa wa `embedding_size`. Kwa namna fulani, ni sawa na safu ya `Linear`, lakini badala ya kuchukua vekta ya one-hot, itakuwa na uwezo wa kuchukua namba ya neno kama ingizo, ikituwezesha kuepuka kuunda vekta kubwa za one-hot. -Genom att använda ett inbäddningslager som det första lagret i vårt klassificeringsnätverk kan vi växla från en bag-of-words till **inbäddningsbag**-modell, där vi först konverterar varje ord i vår text till motsvarande inbäddning och sedan beräknar en viss aggregatfunktion över alla dessa inbäddningar, såsom `sum`, `average` eller `max`. +Kwa kutumia safu ya uwekaji kama safu ya kwanza katika mtandao wetu wa kuainisha, tunaweza kubadilisha kutoka mfuko wa maneno hadi **mfuko wa uwekaji**, ambapo tunabadilisha kila neno katika maandishi yetu kuwa uwekaji unaolingana, na kisha tunahesabu kazi ya jumla juu ya uwekaji wote, kama vile `sum`, `average` au `max`. -![Bild som visar en inbäddningsklassificerare för fem sekvensord.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png) +![Picha inayoonyesha kionyeshi cha uwekaji kwa maneno matano ya mfululizo.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.sw.png) -> Bild av författaren +> Picha na mwandishi -## ✍️ Övningar: Inbäddningar +## ✍️ Mazoezi: Uwekaji wa Neno -Fortsätt ditt lärande i följande anteckningsblock: -* [Inbäddningar med PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) -* [Inbäddningar TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) +Endelea kujifunza katika daftari zifuatazo: +* [Uwekaji wa Neno na PyTorch](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsPyTorch.ipynb) +* [Uwekaji wa Neno na TensorFlow](../../../../../lessons/5-NLP/14-Embeddings/EmbeddingsTF.ipynb) -## Semantiska Inbäddningar: Word2Vec +## Uwekaji wa Kisemantiki: Word2Vec -Medan inbäddningslagret lärde sig att kartlägga ord till vektorrepresentation, hade denna representation dock inte nödvändigtvis mycket semantisk betydelse. Det skulle vara bra att lära sig en vektorrepresentation så att liknande ord eller synonymer motsvarar vektorer som ligger nära varandra i termer av viss vektordistans (t.ex. euklidisk distans). +Ingawa safu ya uwekaji ilijifunza kuwakilisha maneno kwa vekta, uwakilishi huu haukuwa na maana ya kisemantiki sana. Ingekuwa vizuri kujifunza uwakilishi wa vekta ambapo maneno yanayofanana au visawe vinahusiana kwa vekta zilizo karibu kwa umbali fulani wa vekta (mfano, umbali wa Euclidean). -För att göra detta behöver vi förtränar vår inbäddningsmodell på en stor samling text på ett specifikt sätt. Ett sätt att träna semantiska inbäddningar kallas [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Det baseras på två huvudarkitekturer som används för att producera en distribuerad representation av ord: +Ili kufanya hivyo, tunahitaji kufundisha mtindo wetu wa uwekaji kwenye mkusanyiko mkubwa wa maandishi kwa njia maalum. Njia moja ya kufundisha uwekaji wa kisemantiki inaitwa [Word2Vec](https://en.wikipedia.org/wiki/Word2vec). Inategemea usanifu mbili kuu zinazotumika kutoa uwakilishi wa maneno uliosambazwa: - - **Kontinuerlig bag-of-words** (CBoW) — i denna arkitektur tränar vi modellen för att förutsäga ett ord från omgivande kontext. Givet ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, är målet för modellen att förutsäga $W_0$ från $(W_{-2},W_{-1},W_1,W_2)$. - - **Kontinuerlig skip-gram** är motsatsen till CBoW. Modellen använder omgivande fönster av kontextord för att förutsäga det aktuella ordet. + - **Mfuko endelevu wa maneno** (CBoW) — katika usanifu huu, tunafundisha mtindo kutabiri neno kutoka muktadha wa karibu. Kwa ngram $(W_{-2},W_{-1},W_0,W_1,W_2)$, lengo la mtindo ni kutabiri $W_0$ kutoka $(W_{-2},W_{-1},W_1,W_2)$. + - **Skip-gram endelevu** ni kinyume cha CBoW. Mtindo hutumia dirisha la muktadha wa maneno ya karibu kutabiri neno la sasa. -CBoW är snabbare, medan skip-gram är långsammare, men gör ett bättre jobb med att representera sällsynta ord. +CBoW ni ya haraka, wakati skip-gram ni polepole, lakini inafanya kazi bora ya kuwakilisha maneno yasiyo ya kawaida. -![Bild som visar både CBoW och Skip-Gram-algoritmer för att konvertera ord till vektorer.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png) +![Picha inayoonyesha CBoW na Skip-Gram algorithms za kubadilisha maneno kuwa vekta.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png) -> Bild från [denna artikel](https://arxiv.org/pdf/1301.3781.pdf) +> Picha kutoka [karatasi hii](https://arxiv.org/pdf/1301.3781.pdf) -Word2Vec förtränade inbäddningar (såväl som andra liknande modeller, såsom GloVe) kan också användas istället för inbäddningslagret i neurala nätverk. Men vi behöver hantera vokabulär, eftersom vokabulären som används för att förträna Word2Vec/GloVe sannolikt skiljer sig från vokabulären i vår textkorpus. Titta på ovanstående anteckningsblock för att se hur detta problem kan lösas. +Uwekaji wa Word2Vec uliotangulia kufundishwa (pamoja na mifano mingine kama GloVe) unaweza pia kutumika badala ya safu ya uwekaji katika mitandao ya neva. Hata hivyo, tunahitaji kushughulikia misamiati, kwa sababu msamiati uliotumika kufundisha Word2Vec/GloVe huenda ukatofautiana na msamiati katika mkusanyiko wetu wa maandishi. Angalia daftari zilizo juu ili kuona jinsi tatizo hili linaweza kutatuliwa. -## Kontextuella Inbäddningar +## Uwekaji wa Muktadha -En viktig begränsning av traditionella förtränade inbäddningsrepresentationer som Word2Vec är problemet med ordsensdisambiguering. Medan förtränade inbäddningar kan fånga en del av betydelsen av ord i kontext, kodas varje möjlig betydelse av ett ord in i samma inbäddning. Detta kan orsaka problem i nedströmsmodeller, eftersom många ord, såsom ordet 'play', har olika betydelser beroende på den kontext de används i. +Kikwazo kimoja kikuu cha uwakilishi wa uwekaji uliotangulia kufundishwa kama Word2Vec ni tatizo la kutofautisha maana ya neno. Ingawa uwekaji uliotangulia kufundishwa unaweza kunasa baadhi ya maana ya maneno katika muktadha, kila maana inayowezekana ya neno huwakilishwa katika uwekaji mmoja. Hii inaweza kusababisha matatizo katika mifano ya baadaye, kwa sababu maneno mengi kama neno 'play' yana maana tofauti kulingana na muktadha yanayotumika. -Till exempel har ordet 'play' i dessa två olika meningar ganska olika betydelser: +Kwa mfano, neno 'play' katika sentensi hizi mbili lina maana tofauti kabisa: -- Jag gick på en **teater**. -- John vill **leka** med sina vänner. +- Nilikwenda kwenye **play** katika ukumbi wa michezo. +- John anataka **play** na marafiki zake. -De förtränade inbäddningarna ovan representerar båda dessa betydelser av ordet 'play' i samma inbäddning. För att övervinna denna begränsning behöver vi bygga inbäddningar baserade på **språkmodellen**, som tränas på en stor textkorpus och *vet* hur ord kan sättas ihop i olika kontexter. Att diskutera kontextuella inbäddningar ligger utanför ramen för denna handledning, men vi kommer att återkomma till dem när vi pratar om språkmodeller senare i kursen. +Uwekaji uliotangulia kufundishwa hapo juu unawakilisha maana zote mbili za neno 'play' katika uwekaji mmoja. Ili kushinda kikwazo hiki, tunahitaji kujenga uwekaji kulingana na **mtindo wa lugha**, ambao umefundishwa kwenye mkusanyiko mkubwa wa maandishi, na *unajua* jinsi maneno yanavyoweza kuwekwa pamoja katika muktadha tofauti. Kujadili uwekaji wa muktadha ni nje ya mada ya mafunzo haya, lakini tutarudi kwao wakati wa kuzungumzia mitindo ya lugha baadaye katika kozi. -## Slutsats +## Hitimisho -I denna lektion upptäckte du hur man bygger och använder inbäddningslager i TensorFlow och Pytorch för att bättre återspegla de semantiska betydelserna av ord. +Katika somo hili, umejifunza jinsi ya kujenga na kutumia safu za uwekaji katika TensorFlow na Pytorch ili kuonyesha vyema maana za kisemantiki za maneno. -## 🚀 Utmaning +## 🚀 Changamoto -Word2Vec har använts för några intressanta tillämpningar, inklusive att generera låttexter och poesi. Ta en titt på [denna artikel](https://www.politetype.com/blog/word2vec-color-poems) som går igenom hur författaren använde Word2Vec för att generera poesi. Titta också på [denna video av Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) för att upptäcka en annan förklaring av denna teknik. Försök sedan att tillämpa dessa tekniker på din egen textkorpus, kanske hämtad från Kaggle. +Word2Vec imetumika kwa matumizi ya kuvutia, ikiwa ni pamoja na kuunda mashairi na nyimbo. Angalia [makala hii](https://www.politetype.com/blog/word2vec-color-poems) ambayo inaelezea jinsi mwandishi alitumia Word2Vec kuunda mashairi. Tazama [video hii na Dan Shiffmann](https://www.youtube.com/watch?v=LSS_bos_TPI&ab_channel=TheCodingTrain) pia ili kugundua maelezo tofauti ya mbinu hii. Kisha jaribu kutumia mbinu hizi kwenye mkusanyiko wako wa maandishi, labda kutoka Kaggle. -## [Efter-lektion quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) +## [Maswali ya baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/214) -## Granskning & Självstudie +## Mapitio na Kujifunza Binafsi -Läs igenom denna artikel om Word2Vec: [Effektiv uppskattning av ordrepresentationer i vektorutrymme](https://arxiv.org/pdf/1301.3781.pdf) +Soma karatasi hii kuhusu Word2Vec: [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf) -## [Uppgift: Anteckningsblock](assignment.md) +## [Kazi: Daftari](assignment.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md b/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md index ea25fd1b..28c45891 100644 --- a/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md +++ b/translations/sw/lessons/5-NLP/14-Embeddings/assignment.md @@ -1,6 +1,15 @@ -# Uppgift: Anteckningsböcker + +# Kazi: Notebooks -Använd anteckningsböckerna kopplade till denna lektion (antingen PyTorch- eller TensorFlow-versionen), kör dem igen med din egen dataset, kanske en från Kaggle, med korrekt hänvisning. Skriv om anteckningsboken för att betona dina egna fynd. Prova en annan typ av dataset och dokumentera dina fynd, med text som [dessa Beatles-texter](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). +Kutumia notebooks zinazohusiana na somo hili (iwe ni toleo la PyTorch au TensorFlow), ziendeshe tena ukitumia seti yako ya data, labda moja kutoka Kaggle, ukitumia kwa kutambua chanzo. Andika upya notebook ili kuonyesha matokeo yako mwenyewe. Jaribu aina tofauti ya seti ya data na uandike matokeo yako, ukitumia maandishi kama [maneno ya nyimbo za Beatles](https://www.kaggle.com/datasets/jenlooper/beatles-lyrics). -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md b/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md index a51d6948..b0c019f6 100644 --- a/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md +++ b/translations/sw/lessons/5-NLP/15-LanguageModeling/README.md @@ -1,45 +1,54 @@ -# Språkmodellering + +# Uundaji wa Lugha -Semantiska inbäddningar, såsom Word2Vec och GloVe, är faktiskt ett första steg mot **språkmodellering** - att skapa modeller som på något sätt *förstår* (eller *representerar*) språkets natur. +Uwakilishi wa semantiki, kama Word2Vec na GloVe, kwa kweli ni hatua ya kwanza kuelekea **uundaji wa lugha** - kuunda mifano inayoweza *kuelewa* (au *kuwakilisha*) asili ya lugha. -## [För-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) -Den huvudsakliga idén bakom språkmodellering är att träna dem på oetiketterade dataset på ett icke övervakat sätt. Detta är viktigt eftersom vi har stora mängder oetiketterad text tillgänglig, medan mängden etiketterad text alltid skulle vara begränsad av den insats vi kan lägga på att märka. Oftast kan vi bygga språkmodeller som kan **förutsäga saknade ord** i texten, eftersom det är enkelt att maskera ett slumpmässigt ord i texten och använda det som ett träningsprov. +Wazo kuu nyuma ya uundaji wa lugha ni kuifundisha kwenye seti za data zisizo na lebo kwa njia isiyo ya kusimamiwa. Hili ni muhimu kwa sababu tuna kiasi kikubwa cha maandishi yasiyo na lebo yanayopatikana, wakati kiasi cha maandishi yaliyo na lebo daima kitakuwa kidogo kutokana na juhudi tunazoweza kutumia katika kuweka lebo. Mara nyingi, tunaweza kujenga mifano ya lugha inayoweza **kutabiri maneno yanayokosekana** katika maandishi, kwa sababu ni rahisi kuficha neno la bahati nasibu katika maandishi na kulitumia kama sampuli ya mafunzo. -## Träning av inbäddningar +## Mafunzo ya Uwakilishi -I våra tidigare exempel använde vi förtränade semantiska inbäddningar, men det är intressant att se hur dessa inbäddningar kan tränas. Det finns flera möjliga idéer som kan användas: +Katika mifano yetu ya awali, tulitumia uwakilishi wa semantiki uliokwisha kufundishwa, lakini ni jambo la kuvutia kuona jinsi uwakilishi huo unavyoweza kufundishwa. Kuna mawazo kadhaa yanayoweza kutumika: -* **N-Gram** språkmodellering, när vi förutsäger en token genom att titta på N föregående tokens (N-gram) -* **Kontinuerlig Bag-of-Words** (CBoW), när vi förutsäger den mittersta token $W_0$ i en tokensekvens $W_{-N}$, ..., $W_N$. -* **Skip-gram**, där vi förutsäger en uppsättning granntokens {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} från den mittersta token $W_0$. +* **Uundaji wa lugha wa N-Gram**, ambapo tunatabiri tokeni kwa kuangalia tokeni N za awali (N-gram). +* **Mfuko Endelevu wa Maneno** (CBoW), ambapo tunatabiri tokeni ya katikati $W_0$ katika mlolongo wa tokeni $W_{-N}$, ..., $W_N$. +* **Skip-gram**, ambapo tunatabiri seti ya tokeni za jirani {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} kutoka tokeni ya katikati $W_0$. -![bild från artikel om att omvandla ord till vektorer](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png) +![picha kutoka karatasi kuhusu kubadilisha maneno kuwa vekta](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.sw.png) -> Bild från [denna artikel](https://arxiv.org/pdf/1301.3781.pdf) +> Picha kutoka [karatasi hii](https://arxiv.org/pdf/1301.3781.pdf) -## ✍️ Exempel Notebooks: Träning av CBoW-modell +## ✍️ Noti za Mfano: Mafunzo ya Mfano wa CBoW -Fortsätt din inlärning i följande notebooks: +Endelea kujifunza katika noti zifuatazo: -* [Träning av CBoW Word2Vec med TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) -* [Träning av CBoW Word2Vec med PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) +* [Mafunzo ya CBoW Word2Vec kwa kutumia TensorFlow](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) +* [Mafunzo ya CBoW Word2Vec kwa kutumia PyTorch](../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-PyTorch.ipynb) -## Slutsats +## Hitimisho -I den föregående lektionen har vi sett att ordinbäddningar fungerar som magi! Nu vet vi att träning av ordinbäddningar inte är en särskilt komplex uppgift, och vi borde kunna träna våra egna ordinbäddningar för domänspecifik text om det behövs. +Katika somo la awali tuliona kwamba uwakilishi wa maneno hufanya kazi kama uchawi! Sasa tunajua kwamba kufundisha uwakilishi wa maneno si kazi ngumu sana, na tunapaswa kuwa na uwezo wa kufundisha uwakilishi wetu wa maneno kwa maandishi maalum ya kikoa ikiwa inahitajika. -## [Efter-lärare quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) +## [Maswali ya baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/215) -## Översyn & Självstudie +## Mapitio na Kujifunza Binafsi -* [Officiell PyTorch-handledning om språkmodellering](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -* [Officiell TensorFlow-handledning om träning av Word2Vec-modell](https://www.TensorFlow.org/tutorials/text/word2vec). -* Att använda **gensim**-ramverket för att träna de mest använda inbäddningarna på några få rader kod beskrivs [i denna dokumentation](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Mafunzo rasmi ya PyTorch kuhusu Uundaji wa Lugha](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). +* [Mafunzo rasmi ya TensorFlow kuhusu kufundisha mfano wa Word2Vec](https://www.TensorFlow.org/tutorials/text/word2vec). +* Kutumia mfumo wa **gensim** kufundisha uwakilishi unaotumika sana kwa mistari michache ya msimbo imeelezwa [katika nyaraka hizi](https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html). -## 🚀 [Uppgift: Träna Skip-Gram-modell](lab/README.md) +## 🚀 [Kazi: Fundisha Mfano wa Skip-Gram](lab/README.md) -I labbet utmanar vi dig att modifiera koden från denna lektion för att träna skip-gram-modellen istället för CBoW. [Läs detaljerna](lab/README.md) +Katika maabara, tunakupa changamoto ya kurekebisha msimbo kutoka somo hili ili kufundisha mfano wa skip-gram badala ya CBoW. [Soma maelezo](lab/README.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md index b557b6bd..b27bcb00 100644 --- a/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md +++ b/translations/sw/lessons/5-NLP/15-LanguageModeling/lab/README.md @@ -1,14 +1,23 @@ -# Träning av Skip-Gram Modell + +# Kufundisha Mfano wa Skip-Gram -Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -I den här laborationen utmanar vi dig att träna en Word2Vec-modell med hjälp av Skip-Gram-tekniken. Träna ett nätverk med inbäddningar för att förutsäga närliggande ord i ett $N$-tokens-bred Skip-Gram-fönster. Du kan använda [koden från den här lektionen](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb) och göra några små ändringar. +Katika maabara hii, tunakupa changamoto ya kufundisha mfano wa Word2Vec kwa kutumia mbinu ya Skip-Gram. Fundisha mtandao wenye embedding ili kutabiri maneno jirani katika dirisha la Skip-Gram lenye upana wa $N$-tokens. Unaweza kutumia [msimbo kutoka somo hili](../../../../../../lessons/5-NLP/15-LanguageModeling/CBoW-TF.ipynb), na kuubadilisha kidogo. -## Datasetet +## Seti ya Takwimu -Du är välkommen att använda vilken bok som helst. Du kan hitta många gratis texter på [Project Gutenberg](https://www.gutenberg.org/), till exempel här är en direktlänk till [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) av Lewis Carroll. Eller så kan du använda Shakespeares pjäser, som du kan få med följande kod: +Unakaribishwa kutumia kitabu chochote. Unaweza kupata maandishi mengi ya bure kwenye [Project Gutenberg](https://www.gutenberg.org/), kwa mfano, hapa kuna kiungo cha moja kwa moja cha [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) kilichoandikwa na Lewis Carroll. Au, unaweza kutumia michezo ya Shakespeare, ambayo unaweza kupata kwa kutumia msimbo ufuatao: ```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') ``` -## Utforska! +## Chunguza! -Om du har tid och vill fördjupa dig i ämnet, försök att utforska flera saker: +Ikiwa una muda na unataka kuingia kwa undani zaidi kwenye mada hii, jaribu kuchunguza mambo kadhaa: -* Hur påverkar storleken på inbäddningen resultaten? -* Hur påverkar olika textstilar resultatet? -* Ta flera mycket olika typer av ord och deras synonymer, erhåll deras vektorrepresentationer, tillämpa PCA för att reducera dimensionerna till 2 och plotta dem i 2D-utrymme. Ser du några mönster? +* Je, ukubwa wa embedding unaathirije matokeo? +* Je, mitindo tofauti ya maandishi inaathirije matokeo? +* Chukua aina kadhaa tofauti za maneno na visawe vyake, pata uwakilishi wa vekta zao, tumia PCA kupunguza vipimo hadi 2, na uchore kwenye nafasi ya 2D. Je, unaona mifumo yoyote? -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/16-RNN/README.md b/translations/sw/lessons/5-NLP/16-RNN/README.md index 8bc031b1..41b0cce5 100644 --- a/translations/sw/lessons/5-NLP/16-RNN/README.md +++ b/translations/sw/lessons/5-NLP/16-RNN/README.md @@ -1,87 +1,95 @@ -# Återkommande Neurala Nätverk + +# Mitandao ya Neural ya Kurudiarudia -## [För-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/116) -I tidigare avsnitt har vi använt rika semantiska representationer av text och en enkel linjär klassificerare ovanpå inbäddningarna. Vad denna arkitektur gör är att fånga den aggregerade betydelsen av ord i en mening, men den tar inte hänsyn till **ordningen** av orden, eftersom aggregationsoperationen ovanpå inbäddningarna tog bort denna information från den ursprungliga texten. Eftersom dessa modeller inte kan modellera ordning av ord, kan de inte lösa mer komplexa eller tvetydiga uppgifter som textgenerering eller frågesvar. +Katika sehemu zilizopita, tumekuwa tukitumia uwakilishi wa maana tajiri wa maandishi na mklasifaya rahisi ya mstari juu ya embeddings. Hii usanifu hufanya kazi ya kunasa maana iliyojumlishwa ya maneno katika sentensi, lakini haizingatii **mpangilio** wa maneno, kwa sababu operesheni ya kujumuisha juu ya embeddings huondoa taarifa hii kutoka kwa maandishi ya awali. Kwa sababu mifano hii haiwezi kuiga mpangilio wa maneno, haziwezi kutatua kazi ngumu zaidi au zenye utata kama vile uzalishaji wa maandishi au kujibu maswali. -För att fånga betydelsen av textsekvenser behöver vi använda en annan neurala nätverksarkitektur, som kallas **återkommande neurala nätverk**, eller RNN. I RNN passerar vi vår mening genom nätverket ett symbol i taget, och nätverket producerar ett **tillstånd**, som vi sedan skickar tillbaka till nätverket med nästa symbol. +Ili kunasa maana ya mlolongo wa maandishi, tunahitaji kutumia usanifu mwingine wa mtandao wa neural, unaoitwa **mtandao wa neural wa kurudiarudia**, au RNN. Katika RNN, tunapitisha sentensi yetu kupitia mtandao ishara moja kwa wakati, na mtandao huzalisha **hali fulani**, ambayo tunapitisha tena kwenye mtandao pamoja na ishara inayofuata. ![RNN](../../../../../translated_images/rnn.27f5c29c53d727b546ad3961637a267f0fe9ec5ab01f2a26a853c92fcefbb574.sw.png) -> Bild av författaren +> Picha na mwandishi -Givet inmatningssekvensen av token X0,...,Xn, skapar RNN en sekvens av neurala nätverksblock och tränar denna sekvens end-to-end med hjälp av backpropagation. Varje nätverksblock tar ett par (Xi,Si) som inmatning och producerar Si+1 som resultat. Det slutliga tillståndet Sn eller (utgång Yn) går in i en linjär klassificerare för att producera resultatet. Alla nätverksblock delar samma vikter och tränas end-to-end med en backpropagation-pass. +Kwa kuzingatia mlolongo wa pembejeo wa tokeni X0,...,Xn, RNN huunda mlolongo wa vizuizi vya mtandao wa neural, na kufundisha mlolongo huu kutoka mwanzo hadi mwisho kwa kutumia backpropagation. Kila kizuizi cha mtandao huchukua jozi (Xi,Si) kama pembejeo, na huzalisha Si+1 kama matokeo. Hali ya mwisho Sn au (matokeo Yn) huingia kwenye mklasifaya ya mstari ili kutoa matokeo. Vizuizi vyote vya mtandao vinashiriki uzito sawa, na hufundishwa kutoka mwanzo hadi mwisho kwa kutumia mchakato mmoja wa backpropagation. -Eftersom tillståndsvektorer S0,...,Sn passerar genom nätverket, kan det lära sig de sekventiella beroendena mellan orden. Till exempel, när ordet *not* dyker upp någonstans i sekvensen, kan det lära sig att neka vissa element inom tillståndsvektorn, vilket resulterar i negation. +Kwa sababu vekta za hali S0,...,Sn zinapitishwa kupitia mtandao, ina uwezo wa kujifunza utegemezi wa mlolongo kati ya maneno. Kwa mfano, neno *siyo* linapotokea mahali fulani katika mlolongo, linaweza kujifunza kukanusha vipengele fulani ndani ya vekta ya hali, na kusababisha kukanusha. -> ✅ Eftersom vikterna för alla RNN-block på bilden ovan är delade, kan samma bild representeras som ett block (till höger) med en återkommande feedback-loop, som skickar utgångstillståndet från nätverket tillbaka till inmatningen. +> ✅ Kwa kuwa uzito wa vizuizi vyote vya RNN kwenye picha hapo juu vinashirikiana, picha hiyo hiyo inaweza kuwakilishwa kama kizuizi kimoja (kulia) chenye kitanzi cha maoni ya kurudiarudia, ambacho hupitisha hali ya matokeo ya mtandao kurudi kwenye pembejeo. -## Anatomiska av en RNN Cell +## Muundo wa Seli ya RNN -Låt oss se hur en enkel RNN-cell är organiserad. Den tar emot det föregående tillståndet Si-1 och den aktuella symbolen Xi som inmatningar, och måste producera utgångstillståndet Si (och ibland är vi också intresserade av någon annan utgång Yi, som i fallet med generativa nätverk). +Hebu tuone jinsi seli rahisi ya RNN imepangwa. Inapokea hali ya awali Si-1 na ishara ya sasa Xi kama pembejeo, na inapaswa kutoa hali ya matokeo Si (na, wakati mwingine, tunavutiwa pia na matokeo mengine Yi, kama ilivyo kwa mitandao ya kizazi). -En enkel RNN-cell har två viktmatriser inuti: en som transformerar en inmatningssymbol (låt oss kalla den W), och en annan som transformerar ett inmatningstillstånd (H). I det här fallet beräknas nätverkets utgång som σ(W×Xi+H×Si-1+b), där σ är aktiveringsfunktionen och b är ytterligare bias. +Seli rahisi ya RNN ina matriki mawili ya uzito ndani: moja hubadilisha ishara ya pembejeo (tuiite W), na nyingine hubadilisha hali ya pembejeo (H). Katika kesi hii, matokeo ya mtandao huhesabiwa kama σ(W×Xi+H×Si-1+b), ambapo σ ni kazi ya uanzishaji na b ni upendeleo wa ziada. -RNN Cell Anatom +Muundo wa Seli ya RNN -> Bild av författaren +> Picha na mwandishi -I många fall passerar inmatningstokens genom inbäddningslagret innan de går in i RNN för att sänka dimensionaliteten. I det här fallet, om dimensionen av inmatningsvektorerna är *emb_size*, och tillståndsvektorn är *hid_size* - storleken på W är *emb_size*×*hid_size*, och storleken på H är *hid_size*×*hid_size*. +Katika hali nyingi, tokeni za pembejeo hupitishwa kupitia safu ya embedding kabla ya kuingia kwenye RNN ili kupunguza ukubwa wa vipimo. Katika kesi hii, ikiwa kipimo cha vekta za pembejeo ni *emb_size*, na vekta ya hali ni *hid_size* - ukubwa wa W ni *emb_size*×*hid_size*, na ukubwa wa H ni *hid_size*×*hid_size*. -## Lång Korttidsminne (LSTM) +## Kumbukumbu ya Muda Mrefu na Mfupi (LSTM) -Ett av de största problemen med klassiska RNN:er är det så kallade **försvinnande gradienter** problemet. Eftersom RNN:er tränas end-to-end i en backpropagation-pass har det svårt att sprida fel till de första lagren av nätverket, och därmed kan nätverket inte lära sig relationer mellan avlägsna token. Ett av sätten att undvika detta problem är att införa **explisit tillståndshantering** genom att använda så kallade **portar**. Det finns två välkända arkitekturer av denna typ: **Long Short Term Memory** (LSTM) och **Gated Relay Unit** (GRU). +Moja ya matatizo makuu ya RNN za kawaida ni tatizo linaloitwa **kupotea kwa gradients**. Kwa sababu RNN hufundishwa kutoka mwanzo hadi mwisho kwa mchakato mmoja wa backpropagation, inapata ugumu wa kueneza kosa hadi kwenye tabaka za mwanzo za mtandao, na hivyo mtandao hauwezi kujifunza uhusiano kati ya tokeni za mbali. Njia moja ya kuepuka tatizo hili ni kuanzisha **usimamizi wa hali wazi** kwa kutumia milango inayoitwa **gates**. Kuna usanifu mbili maarufu wa aina hii: **Kumbukumbu ya Muda Mrefu na Mfupi** (LSTM) na **Kitengo cha Relay Chenye Milango** (GRU). -![Bild som visar ett exempel på en lång korttidsminnescell](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) +![Picha inayoonyesha mfano wa seli ya kumbukumbu ya muda mrefu na mfupi](../../../../../lessons/5-NLP/16-RNN/images/long-short-term-memory-cell.svg) -> Bildkälla TBD +> Chanzo cha picha TBD -LSTM-nätverket är organiserat på ett sätt som liknar RNN, men det finns två tillstånd som passerar från lager till lager: det aktuella tillståndet C och den dolda vektorn H. Vid varje enhet sammanfogas den dolda vektorn Hi med inmatningen Xi, och de kontrollerar vad som händer med tillståndet C via **portar**. Varje port är ett neuralt nätverk med sigmoidaktivering (utgång i intervallet [0,1]), vilket kan ses som en bitmask när den multipliceras med tillståndsvektorn. Det finns följande portar (från vänster till höger på bilden ovan): +Mtandao wa LSTM umeandaliwa kwa namna inayofanana na RNN, lakini kuna hali mbili zinazopitishwa kutoka tabaka moja hadi nyingine: hali halisi C, na vekta iliyofichwa H. Katika kila kitengo, vekta iliyofichwa Hi inachanganywa na pembejeo Xi, na zinadhibiti kinachotokea kwa hali C kupitia **milango**. Kila mlango ni mtandao wa neural wenye uanzishaji wa sigmoid (matokeo katika safu [0,1]), ambao unaweza kufikiriwa kama maski ya bitwise inapozidishwa na vekta ya hali. Kuna milango ifuatayo (kutoka kushoto kwenda kulia kwenye picha hapo juu): -* **Glömskeporten** tar en dold vektor och avgör vilka komponenter av vektorn C vi behöver glömma, och vilka som ska passera. -* **Inmatningsporten** tar viss information från inmatnings- och dolda vektorer och sätter in den i tillståndet. -* **Utgångsporten** transformerar tillståndet via ett linjärt lager med *tanh*-aktivering, och väljer sedan några av sina komponenter med hjälp av en dold vektor Hi för att producera ett nytt tillstånd Ci+1. +* **Mlango wa kusahau** huchukua vekta iliyofichwa na kuamua ni vipengele vipi vya vekta C tunavyohitaji kusahau, na vipi kupitisha. +* **Mlango wa pembejeo** huchukua taarifa fulani kutoka kwa pembejeo na vekta zilizofichwa na kuingiza kwenye hali. +* **Mlango wa matokeo** hubadilisha hali kupitia safu ya mstari yenye uanzishaji wa *tanh*, kisha huchagua baadhi ya vipengele vyake kwa kutumia vekta iliyofichwa Hi ili kutoa hali mpya Ci+1. -Komponenter av tillståndet C kan ses som vissa flaggor som kan slås på och av. Till exempel, när vi stöter på ett namn *Alice* i sekvensen, kan vi vilja anta att det hänvisar till en kvinnlig karaktär, och höja flaggan i tillståndet att vi har ett kvinnligt substantiv i meningen. När vi vidare stöter på fraserna *and Tom*, kommer vi att höja flaggan att vi har ett plural substantiv. Genom att manipulera tillståndet kan vi på så sätt hålla reda på de grammatiska egenskaperna hos meningsdelar. +Vipengele vya hali C vinaweza kufikiriwa kama bendera fulani zinazoweza kuwashwa na kuzimwa. Kwa mfano, tunapokutana na jina *Alice* katika mlolongo, tunaweza kudhani kuwa linahusu mhusika wa kike, na kuinua bendera katika hali kwamba tuna nomino ya kike katika sentensi. Tunapokutana zaidi na maneno *na Tom*, tutainua bendera kwamba tuna nomino ya wingi. Hivyo kwa kudhibiti hali tunaweza kudumisha mali za kisarufi za sehemu za sentensi. -> ✅ En utmärkt resurs för att förstå internals av LSTM är denna fantastiska artikel [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) av Christopher Olah. +> ✅ Rasilimali bora ya kuelewa undani wa LSTM ni makala hii nzuri [Kuelewa Mitandao ya LSTM](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) na Christopher Olah. -## Bidirektionella och Flerlager RNN:er +## RNN za Mwelekeo Mbili na Tabaka Nyingi -Vi har diskuterat återkommande nätverk som fungerar i en riktning, från början av en sekvens till slutet. Det verkar naturligt, eftersom det liknar hur vi läser och lyssnar på tal. Men eftersom vi i många praktiska fall har slumpmässig åtkomst till inmatningssekvensen, kan det vara meningsfullt att köra återkommande beräkningar i båda riktningarna. Sådana nätverk kallas **bidirektionella** RNN:er. När vi hanterar ett bidirektionellt nätverk, behöver vi två dolda tillståndsvektorer, en för varje riktning. +Tumeelezea mitandao ya kurudiarudia inayofanya kazi kwa mwelekeo mmoja, kutoka mwanzo wa mlolongo hadi mwisho. Inaonekana kuwa ya asili, kwa sababu inafanana na jinsi tunavyosoma na kusikiliza hotuba. Hata hivyo, kwa kuwa katika hali nyingi za vitendo tunaweza kufikia mlolongo wa pembejeo kwa nasibu, inaweza kuwa na maana kuendesha hesabu ya kurudiarudia katika mwelekeo wote. Mitandao kama hiyo inaitwa **RNN za mwelekeo mbili**. Tunaposhughulika na mtandao wa mwelekeo mbili, tutahitaji vekta mbili za hali zilizofichwa, moja kwa kila mwelekeo. -Ett återkommande nätverk, antingen en-riktat eller bidirektionellt, fångar vissa mönster inom en sekvens och kan lagra dem i en tillståndsvektor eller skicka dem till utgången. Precis som med konvolutionella nätverk kan vi bygga ett annat återkommande lager ovanpå det första för att fånga högre nivåmönster och bygga från lågnivåmönster som extraherats av det första lagret. Detta leder oss till begreppet **flerlager RNN**, som består av två eller fler återkommande nätverk, där utgången från det föregående lagret skickas till nästa lager som inmatning. +Mtandao wa kurudiarudia, iwe wa mwelekeo mmoja au wa mwelekeo mbili, hunasa mifumo fulani ndani ya mlolongo, na inaweza kuihifadhi kwenye vekta ya hali au kuipitisha kwenye matokeo. Kama ilivyo kwa mitandao ya convolutional, tunaweza kujenga safu nyingine ya kurudiarudia juu ya ile ya kwanza ili kunasa mifumo ya kiwango cha juu na kujenga kutoka kwa mifumo ya kiwango cha chini iliyotolewa na safu ya kwanza. Hii inatupeleka kwenye dhana ya **RNN ya tabaka nyingi** ambayo inajumuisha mitandao miwili au zaidi ya kurudiarudia, ambapo matokeo ya safu ya awali hupitishwa kwa safu inayofuata kama pembejeo. -![Bild som visar en flerlagers lång-korttidsminnes-RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sw.jpg) +![Picha inayoonyesha RNN ya tabaka nyingi ya kumbukumbu ya muda mrefu na mfupi](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.sw.jpg) -*Bild från [detta underbara inlägg](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) av Fernando López* +*Picha kutoka [chapisho hili zuri](https://towardsdatascience.com/from-a-lstm-cell-to-a-multilayer-lstm-network-with-pytorch-2899eb5696f3) na Fernando López* -## ✍️ Övningar: Inbäddningar +## ✍️ Mazoezi: Embeddings -Fortsätt din inlärning i följande anteckningsböcker: +Endelea kujifunza katika daftari zifuatazo: -* [RNNs med PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) -* [RNNs med TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) +* [RNNs na PyTorch](../../../../../lessons/5-NLP/16-RNN/RNNPyTorch.ipynb) +* [RNNs na TensorFlow](../../../../../lessons/5-NLP/16-RNN/RNNTF.ipynb) -## Slutsats +## Hitimisho -I denna enhet har vi sett att RNN:er kan användas för sekvensklassificering, men i själva verket kan de hantera många fler uppgifter, såsom textgenerering, maskinöversättning och mer. Vi kommer att överväga dessa uppgifter i nästa enhet. +Katika kitengo hiki, tumeona kwamba RNN zinaweza kutumika kwa uainishaji wa mlolongo, lakini kwa kweli, zinaweza kushughulikia kazi nyingi zaidi, kama vile uzalishaji wa maandishi, tafsiri ya mashine, na zaidi. Tutazingatia kazi hizo katika kitengo kijacho. -## 🚀 Utmaning +## 🚀 Changamoto -Läs igenom viss litteratur om LSTM och överväg deras tillämpningar: +Soma baadhi ya fasihi kuhusu LSTM na zingatia matumizi yake: - [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) +- [Onyesha, Hudhuria na Hadithi: Kizazi cha Maelezo ya Picha ya Neural na Umakini wa Kijisura](https://arxiv.org/pdf/1502.03044v2.pdf) -## [Post-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/216) -## Granskning & Självstudie +## Mapitio na Kujisomea -- [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) av Christopher Olah. +- [Kuelewa Mitandao ya LSTM](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) na Christopher Olah. -## [Uppgift: Anteckningsböcker](assignment.md) +## [Kazi: Daftari](assignment.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/16-RNN/assignment.md b/translations/sw/lessons/5-NLP/16-RNN/assignment.md index ce4891bb..a301c69b 100644 --- a/translations/sw/lessons/5-NLP/16-RNN/assignment.md +++ b/translations/sw/lessons/5-NLP/16-RNN/assignment.md @@ -1,6 +1,15 @@ -# Uppgift: Anteckningsböcker + +# Kazi: Daftari -Använd anteckningsböckerna kopplade till denna lektion (antingen PyTorch- eller TensorFlow-versionen), och kör dem igen med din egen datamängd, kanske en från Kaggle, använd med korrekt hänvisning. Skriv om anteckningsboken för att understryka dina egna upptäckter. Prova en annan typ av datamängd och dokumentera dina fynd, med text som [denna Kaggle-tävling datamängd om vädertweets](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). +Kutumia daftari zinazohusiana na somo hili (iwe ni toleo la PyTorch au TensorFlow), ziendeshe tena ukitumia seti yako ya data, labda moja kutoka Kaggle, ukitumia kwa kutaja chanzo. Andika upya daftari ili kuonyesha matokeo yako mwenyewe. Jaribu aina tofauti ya seti ya data na uandike matokeo yako, ukitumia maandishi kama [seti ya data ya mashindano ya Kaggle kuhusu tweets za hali ya hewa](https://www.kaggle.com/competitions/crowdflower-weather-twitter/data?select=train.csv). -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md index 6891712c..f11d6f60 100644 --- a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md +++ b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/README.md @@ -1,79 +1,88 @@ -# Generativa nätverk + +# Mitandao ya Kizazi -## [Förläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) +## [Jaribio la Kabla ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/117) -Återkommande neurala nätverk (RNNs) och deras varianter med gated celler, såsom Long Short Term Memory Cells (LSTMs) och Gated Recurrent Units (GRUs), erbjuder en mekanism för språkmodellering genom att de kan lära sig ordningsföljd och ge förutsägelser för nästa ord i en sekvens. Detta gör att vi kan använda RNNs för **generativa uppgifter**, som vanlig textgenerering, maskinöversättning och till och med bildbeskrivning. +Mitandao ya Neural Inayojirudia (RNNs) na aina zake kama vile Long Short Term Memory Cells (LSTMs) na Gated Recurrent Units (GRUs) zilitoa njia ya kuunda mifano ya lugha kwa kuwa zinaweza kujifunza mpangilio wa maneno na kutoa utabiri wa neno linalofuata katika mfuatano. Hii inatuwezesha kutumia RNNs kwa **kazi za kizazi**, kama vile utengenezaji wa maandishi ya kawaida, tafsiri ya mashine, na hata uundaji wa maelezo ya picha. -> ✅ Tänk på alla gånger du har haft nytta av generativa uppgifter som textkomplettering medan du skriver. Gör lite forskning om dina favoritapplikationer för att se om de utnyttjar RNNs. +> ✅ Fikiria mara zote ulivyonufaika na kazi za kizazi kama vile kukamilisha maandishi unapoandika. Fanya utafiti kuhusu programu unazozipenda ili kuona kama zilitumia RNNs. -I RNN-arkitekturen vi diskuterade i den föregående enheten, producerade varje RNN-enhet nästa dolda tillstånd som en utdata. Vi kan dock också lägga till en annan utdata till varje återkommande enhet, vilket skulle tillåta oss att producera en **sekvens** (som är lika lång som den ursprungliga sekvensen). Dessutom kan vi använda RNN-enheter som inte tar emot en ingång vid varje steg, utan istället tar en initial tillståndsvektor och sedan producerar en sekvens av utdata. +Katika usanifu wa RNN tuliojadili katika kitengo kilichopita, kila kitengo cha RNN kilizalisha hali fiche inayofuata kama matokeo. Hata hivyo, tunaweza pia kuongeza matokeo mengine kwa kila kitengo kinachojirudia, ambacho kingeturuhusu kutoa **mfuatano** (ambao ni sawa kwa urefu na mfuatano wa awali). Zaidi ya hayo, tunaweza kutumia vitengo vya RNN ambavyo havipokei pembejeo katika kila hatua, na badala yake huchukua vigezo vya hali ya awali, na kisha kuzalisha mfuatano wa matokeo. -Detta möjliggör olika neurala arkitekturer som visas i bilden nedan: +Hii inaruhusu usanifu tofauti wa neural unaoonyeshwa kwenye picha hapa chini: -![Bild som visar vanliga mönster av återkommande neurala nätverk.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg) +![Picha inayoonyesha mifumo ya kawaida ya mitandao ya neural inayojirudia.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg) -> Bild från blogginlägget [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) av [Andrej Karpaty](http://karpathy.github.io/) +> Picha kutoka kwa chapisho la blogu [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) na [Andrej Karpaty](http://karpathy.github.io/) -* **En-till-en** är ett traditionellt neuralt nätverk med en ingång och en utgång -* **En-till-många** är en generativ arkitektur som accepterar ett ingångsvärde och genererar en sekvens av utgångsvärden. Till exempel, om vi vill träna ett **bildbeskrivnings** nätverk som skulle producera en textuell beskrivning av en bild, kan vi använda en bild som ingång, skicka den genom en CNN för att få dess dolda tillstånd, och sedan låta en återkommande kedja generera beskrivningen ord för ord -* **Många-till-en** motsvarar de RNN-arkitekturer vi beskrev i den föregående enheten, såsom textklassificering -* **Många-till-många**, eller **sekvens-till-sekvens** motsvarar uppgifter som **maskinöversättning**, där vi först har en RNN som samlar all information från ingångssekvensen till det dolda tillståndet, och en annan RNN-kedja utvecklar detta tillstånd till utgångssekvensen. +* **Moja-kwa-moja** ni mtandao wa neural wa jadi wenye pembejeo moja na matokeo moja. +* **Moja-kwa-nyingi** ni usanifu wa kizazi unaopokea thamani moja ya pembejeo, na kuzalisha mfuatano wa thamani za matokeo. Kwa mfano, ikiwa tunataka kufundisha mtandao wa **uundaji wa maelezo ya picha** ambao utatoa maelezo ya maandishi ya picha, tunaweza kuchukua picha kama pembejeo, kuipitisha kupitia CNN ili kupata hali yake fiche, na kisha kuwa na mnyororo unaojirudia kuzalisha maelezo neno kwa neno. +* **Nyingi-kwa-moja** inahusiana na usanifu wa RNN tulioelezea katika kitengo kilichopita, kama vile uainishaji wa maandishi. +* **Nyingi-kwa-nyingi**, au **mfuatano-kwa-mfuatano** inahusiana na kazi kama vile **tafsiri ya mashine**, ambapo tunayo RNN ya kwanza inayokusanya taarifa zote kutoka kwa mfuatano wa pembejeo hadi hali fiche, na mnyororo mwingine wa RNN unafungua hali hii kuwa mfuatano wa matokeo. -I denna enhet kommer vi att fokusera på enkla generativa modeller som hjälper oss att generera text. För enkelhetens skull kommer vi att använda tecken-nivå tokenisering. +Katika kitengo hiki, tutazingatia mifano rahisi ya kizazi inayotusaidia kuzalisha maandishi. Kwa urahisi, tutatumia tokeni za kiwango cha herufi. -Vi kommer att träna denna RNN för att generera text steg för steg. Vid varje steg kommer vi att ta en sekvens av tecken av längd `nchars`, och be nätverket att generera nästa utdata-tecken för varje ingångstecken: +Tutafundisha RNN hii kuzalisha maandishi hatua kwa hatua. Katika kila hatua, tutachukua mfuatano wa herufi wa urefu `nchars`, na kuiuliza mtandao kuzalisha herufi inayofuata kwa kila herufi ya pembejeo: -![Bild som visar ett exempel på RNN-generering av ordet 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sw.png) +![Picha inayoonyesha mfano wa kizazi cha RNN cha neno 'HELLO'.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.sw.png) -När vi genererar text (under inferens), börjar vi med en viss **prompt**, som skickas genom RNN-celler för att generera sitt mellanliggande tillstånd, och sedan börjar generationen från detta tillstånd. Vi genererar ett tecken i taget och skickar tillståndet och det genererade tecknet till en annan RNN-cell för att generera nästa, tills vi har genererat tillräckligt med tecken. +Wakati wa kuzalisha maandishi (wakati wa utabiri), tunaanza na **msukumo** fulani, ambao hupitishwa kupitia seli za RNN ili kuzalisha hali yake ya kati, na kisha kutoka kwa hali hii kizazi huanza. Tunazalisha herufi moja kwa wakati, na kupitisha hali na herufi iliyozalishwa kwa seli nyingine ya RNN ili kuzalisha inayofuata, hadi tutakapozalisha herufi za kutosha. -> Bild av författaren +> Picha na mwandishi -## ✍️ Övningar: Generativa Nätverk +## ✍️ Mazoezi: Mitandao ya Kizazi -Fortsätt din inlärning i följande anteckningsblock: +Endelea kujifunza katika daftari zifuatazo: -* [Generativa Nätverk med PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) -* [Generativa Nätverk med TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) +* [Mitandao ya Kizazi na PyTorch](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativePyTorch.ipynb) +* [Mitandao ya Kizazi na TensorFlow](../../../../../lessons/5-NLP/17-GenerativeNetworks/GenerativeTF.ipynb) -## Mjuk textgenerering och temperatur +## Kizazi cha Maandishi Laini na Joto -Utdata från varje RNN-cell är en sannolikhetsfördelning av tecken. Om vi alltid tar tecknet med den högsta sannolikheten som nästa tecken i den genererade texten, kan texten ofta bli "cyklad" mellan samma teckensekvenser om och om igen, som i detta exempel: +Matokeo ya kila seli ya RNN ni usambazaji wa uwezekano wa herufi. Ikiwa kila mara tutachukua herufi yenye uwezekano mkubwa zaidi kama herufi inayofuata katika maandishi yanayozalishwa, maandishi mara nyingi yanaweza "kurudiwa" kati ya mfuatano wa herufi zile zile tena na tena, kama katika mfano huu: ``` today of the second the company and a second the company ... ``` -Men om vi tittar på sannolikhetsfördelningen för nästa tecken, kan det hända att skillnaden mellan några av de högsta sannolikheterna inte är stor, t.ex. ett tecken kan ha sannolikheten 0.2, ett annat - 0.19, osv. Till exempel, när vi letar efter nästa tecken i sekvensen '*play*', kan nästa tecken lika gärna vara antingen ett mellanslag eller **e** (som i ordet *player*). +Hata hivyo, tukitazama usambazaji wa uwezekano wa herufi inayofuata, inaweza kuwa tofauti kati ya uwezekano wa juu zaidi si kubwa sana, kwa mfano herufi moja inaweza kuwa na uwezekano wa 0.2, nyingine - 0.19, n.k. Kwa mfano, tunapotafuta herufi inayofuata katika mfuatano '*play*', herufi inayofuata inaweza kuwa nafasi, au **e** (kama katika neno *player*). -Detta leder oss till slutsatsen att det inte alltid är "rättvist" att välja tecknet med högre sannolikhet, eftersom valet av det näst högsta fortfarande kan leda oss till meningsfull text. Det är klokare att **prova** tecken från sannolikhetsfördelningen som ges av nätverksutdata. Vi kan också använda en parameter, **temperatur**, som kommer att platta ut sannolikhetsfördelningen, om vi vill lägga till mer slumpmässighet, eller göra den brantare, om vi vill hålla oss mer till tecknen med högsta sannolikhet. +Hii inatupeleka kwenye hitimisho kwamba si kila mara "haki" kuchagua herufi yenye uwezekano mkubwa zaidi, kwa sababu kuchagua ya pili kwa juu bado kunaweza kutupeleka kwenye maandishi yenye maana. Ni busara zaidi **kuchagua kwa sampuli** herufi kutoka kwa usambazaji wa uwezekano uliotolewa na matokeo ya mtandao. Tunaweza pia kutumia kigezo, **joto**, ambacho kitapunguza usambazaji wa uwezekano, ikiwa tunataka kuongeza nasibu, au kuufanya kuwa mkali zaidi, ikiwa tunataka kushikamana zaidi na herufi zenye uwezekano mkubwa zaidi. -Utforska hur denna mjuka textgenerering implementeras i anteckningsblocken länkade ovan. +Chunguza jinsi kizazi hiki laini cha maandishi kinavyotekelezwa katika daftari zilizounganishwa hapo juu. -## Slutsats +## Hitimisho -Även om textgenerering kan vara användbar i sig, kommer de största fördelarna från förmågan att generera text med hjälp av RNNs från en viss initial funktionsvektor. Till exempel används textgenerering som en del av maskinöversättning (sekvens-till-sekvens, i detta fall används tillståndsvektorn från *encoder* för att generera eller *avkoda* det översatta meddelandet), eller för att generera en textuell beskrivning av en bild (i vilket fall funktionsvektorn skulle komma från CNN-extraktorn). +Ingawa kizazi cha maandishi kinaweza kuwa na manufaa chenyewe, faida kubwa hutokana na uwezo wa kuzalisha maandishi kwa kutumia RNNs kutoka kwa vigezo vya awali. Kwa mfano, kizazi cha maandishi kinatumika kama sehemu ya tafsiri ya mashine (mfuatano-kwa-mfuatano, katika kesi hii hali fiche kutoka kwa *encoder* hutumika kuzalisha au *kufasiri* ujumbe uliotafsiriwa), au kuzalisha maelezo ya maandishi ya picha (ambapo vigezo vya awali vinatoka kwa kiondoa CNN). -## 🚀 Utmaning +## 🚀 Changamoto -Ta några lektioner på Microsoft Learn om detta ämne +Chukua masomo fulani kwenye Microsoft Learn kuhusu mada hii: -* Textgenerering med [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) +* Kizazi cha Maandishi na [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) -## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) +## [Jaribio la Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/217) -## Granskning & Självstudie +## Mapitio na Kujisomea -Här är några artiklar för att utöka din kunskap +Hapa kuna makala za kupanua maarifa yako: -* Olika tillvägagångssätt för textgenerering med Markov Chain, LSTM och GPT-2: [blogginlägg](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) -* Exempel på textgenerering i [Keras-dokumentationen](https://keras.io/examples/generative/lstm_character_level_text_generation/) +* Njia tofauti za kizazi cha maandishi na Markov Chain, LSTM na GPT-2: [blogu](https://towardsdatascience.com/text-generation-gpt-2-lstm-markov-chain-9ea371820e1e) +* Mfano wa kizazi cha maandishi katika [nyaraka za Keras](https://keras.io/examples/generative/lstm_character_level_text_generation/) -## [Uppgift](lab/README.md) +## [Kazi ya Nyumbani](lab/README.md) -Vi har sett hur man genererar text tecken för tecken. I labbet kommer du att utforska textgenerering på ordnivå. +Tumeona jinsi ya kuzalisha maandishi herufi kwa herufi. Katika maabara, utachunguza kizazi cha maandishi kwa kiwango cha maneno. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md index 028693a9..8e95da08 100644 --- a/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md +++ b/translations/sw/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -1,14 +1,23 @@ -# Textgenerering på ordnivå med RNN:er + +# Uzalishaji wa Maandishi kwa Ngazi ya Neno kwa kutumia RNNs -Laborationsuppgift från [AI för Nybörjare Läroplan](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta Wanaoanza](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -I denna laboration behöver du ta en valfri bok och använda den som dataset för att träna en textgenerator på ordnivå. +Katika maabara hii, unahitaji kuchukua kitabu chochote, na kukitumia kama seti ya data kufundisha jenereta ya maandishi kwa ngazi ya neno. -## Datasetet +## Seti ya Data -Du är välkommen att använda vilken bok som helst. Du kan hitta många gratis texter på [Project Gutenberg](https://www.gutenberg.org/), till exempel, här är en direktlänk till [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt) av Lewis Carroll. +Unakaribishwa kutumia kitabu chochote. Unaweza kupata maandishi mengi ya bure kwenye [Project Gutenberg](https://www.gutenberg.org/), kwa mfano, hapa kuna kiungo cha moja kwa moja kwa [Alice's Adventures in Wonderland](https://www.gutenberg.org/files/11/11-0.txt)) kilichoandikwa na Lewis Carroll. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/18-Transformers/README.md b/translations/sw/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..f8da7206 --- /dev/null +++ b/translations/sw/lessons/5-NLP/18-Transformers/README.md @@ -0,0 +1,121 @@ + +# Mbinu za Uangalizi na Transformers + +## [Jaribio la awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/118) + +Moja ya matatizo muhimu zaidi katika uwanja wa NLP ni **tafsiri ya mashine**, kazi muhimu inayotumika katika zana kama Google Translate. Katika sehemu hii, tutazingatia tafsiri ya mashine, au kwa ujumla zaidi, kazi yoyote ya *mlolongo-kwa-mlolongo* (ambayo pia inaitwa **sentence transduction**). + +Kwa kutumia RNNs, mlolongo-kwa-mlolongo unatekelezwa na mitandao miwili ya kurudia, ambapo mtandao mmoja, **encoder**, unafupisha mlolongo wa pembejeo katika hali ya siri, wakati mtandao mwingine, **decoder**, unafungua hali hiyo ya siri kuwa matokeo yaliyotafsiriwa. Kuna matatizo kadhaa na mbinu hii: + +* Hali ya mwisho ya mtandao wa encoder ina ugumu wa kukumbuka mwanzo wa sentensi, hivyo kusababisha ubora duni wa modeli kwa sentensi ndefu. +* Maneno yote katika mlolongo yana athari sawa kwenye matokeo. Kwa kweli, hata hivyo, maneno maalum katika mlolongo wa pembejeo mara nyingi yana athari kubwa zaidi kwenye matokeo ya mlolongo kuliko mengine. + +**Mbinu za Uangalizi** zinatoa njia ya kupima athari ya muktadha wa kila vector ya pembejeo kwenye kila utabiri wa matokeo wa RNN. Njia inavyotekelezwa ni kwa kuunda njia za mkato kati ya hali za kati za RNN ya pembejeo na RNN ya matokeo. Kwa njia hii, tunapozalisha alama ya matokeo yt, tutazingatia hali zote za siri za pembejeo hi, kwa kutumia viwango tofauti vya uzito αt,i. + +![Picha inayoonyesha modeli ya encoder/decoder na safu ya uangalizi wa kuongeza](../../../../../translated_images/encoder-decoder-attention.7a726296894fb567aa2898c94b17b3289087f6705c11907df8301df9e5eeb3de.sw.png) + +> Modeli ya encoder-decoder na mbinu ya uangalizi wa kuongeza katika [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf), iliyotajwa kutoka [blogu hii](https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html) + +Matriki ya uangalizi {αi,j} ingeonyesha kiwango ambacho maneno fulani ya pembejeo yanachangia katika uzalishaji wa neno fulani katika mlolongo wa matokeo. Hapa chini kuna mfano wa matriki kama hiyo: + +![Picha inayoonyesha mpangilio wa mfano uliopatikana na RNNsearch-50, iliyochukuliwa kutoka Bahdanau - arviz.org](../../../../../translated_images/bahdanau-fig3.09ba2d37f202a6af11de6c82d2d197830ba5f4528d9ea430eb65fd3a75065973.sw.png) + +> Mchoro kutoka [Bahdanau et al., 2015](https://arxiv.org/pdf/1409.0473.pdf) (Fig.3) + +Mbinu za uangalizi zinahusika na sehemu kubwa ya hali ya sanaa ya sasa au karibu ya sasa katika NLP. Hata hivyo, kuongeza uangalizi huongeza sana idadi ya vigezo vya modeli, jambo ambalo lilisababisha changamoto za kupanua RNNs. Kizuizi kikuu cha kupanua RNNs ni kwamba asili ya kurudia ya modeli inafanya iwe changamoto kuunda vikundi na kuendesha mafunzo kwa sambamba. Katika RNN, kila kipengele cha mlolongo kinahitaji kusindika kwa mpangilio wa mlolongo, jambo ambalo lina maana kuwa haliwezi kuendesha kwa urahisi kwa sambamba. + +![Encoder Decoder na Uangalizi](../../../../../lessons/5-NLP/18-Transformers/images/EncDecAttention.gif) + +> Mchoro kutoka [Blogu ya Google](https://research.googleblog.com/2016/09/a-neural-network-for-machine.html) + +Kupitishwa kwa mbinu za uangalizi pamoja na kizuizi hiki kulisababisha kuundwa kwa modeli za Transformer za hali ya sanaa tunazozijua na kuzitumia leo kama BERT hadi Open-GPT3. + +## Modeli za Transformer + +Moja ya mawazo makuu nyuma ya transformers ni kuepuka asili ya mlolongo ya RNNs na kuunda modeli inayoweza kuendesha kwa sambamba wakati wa mafunzo. Hii inafanikiwa kwa kutekeleza mawazo mawili: + +* usimbaji wa nafasi +* kutumia mbinu ya uangalizi wa kibinafsi ili kunasa mifumo badala ya RNNs (au CNNs) (ndiyo sababu karatasi inayotambulisha transformers inaitwa *[Attention is all you need](https://arxiv.org/abs/1706.03762)*) + +### Usimbaji/Embedding wa Nafasi + +Wazo la usimbaji wa nafasi ni kama ifuatavyo. +1. Wakati wa kutumia RNNs, nafasi ya jamaa ya tokeni inawakilishwa na idadi ya hatua, na hivyo haitaji kuwakilishwa wazi. +2. Hata hivyo, mara tu tunapobadilisha kwenda uangalizi, tunahitaji kujua nafasi za jamaa za tokeni ndani ya mlolongo. +3. Ili kupata usimbaji wa nafasi, tunaongeza mlolongo wetu wa tokeni na mlolongo wa nafasi za tokeni katika mlolongo (yaani, mlolongo wa namba 0,1, ...). +4. Kisha tunachanganya nafasi ya tokeni na vector ya embedding ya tokeni. Ili kubadilisha nafasi (namba kamili) kuwa vector, tunaweza kutumia mbinu tofauti: + +* Embedding inayoweza kufundishwa, sawa na embedding ya tokeni. Hii ndiyo mbinu tunayoangalia hapa. Tunatumia safu za embedding juu ya tokeni na nafasi zao, na kusababisha vector za embedding za vipimo sawa, ambazo tunaziongeza pamoja. +* Kazi ya usimbaji wa nafasi isiyobadilika, kama ilivyopendekezwa katika karatasi ya awali. + + + +> Picha na mwandishi + +Matokeo tunayopata na embedding ya nafasi yanajumuisha tokeni asili na nafasi yake ndani ya mlolongo. + +### Uangalizi wa Kibinafsi wa Vichwa Vingi + +Kisha, tunahitaji kunasa mifumo fulani ndani ya mlolongo wetu. Ili kufanya hivyo, transformers hutumia mbinu ya **uangalizi wa kibinafsi**, ambayo kimsingi ni uangalizi unaotumika kwa mlolongo huo huo kama pembejeo na matokeo. Kutumia uangalizi wa kibinafsi kunatuwezesha kuzingatia **muktadha** ndani ya sentensi, na kuona ni maneno gani yanayohusiana. Kwa mfano, inatuwezesha kuona ni maneno gani yanayorejelewa na marejeleo, kama *it*, na pia kuzingatia muktadha: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.sw.png) + +> Picha kutoka [Blogu ya Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +Katika transformers, tunatumia **Uangalizi wa Vichwa Vingi** ili kutoa nguvu kwa mtandao kunasa aina tofauti za utegemezi, mfano uhusiano wa maneno wa muda mrefu dhidi ya wa muda mfupi, marejeleo dhidi ya kitu kingine, n.k. + +[Notebook ya TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) ina maelezo zaidi juu ya utekelezaji wa safu za transformer. + +### Uangalizi wa Encoder-Decoder + +Katika transformers, uangalizi hutumika katika sehemu mbili: + +* Kunasa mifumo ndani ya maandishi ya pembejeo kwa kutumia uangalizi wa kibinafsi. +* Kufanya tafsiri ya mlolongo - ni safu ya uangalizi kati ya encoder na decoder. + +Uangalizi wa encoder-decoder ni sawa sana na mbinu ya uangalizi inayotumika katika RNNs, kama ilivyoelezwa mwanzoni mwa sehemu hii. Mchoro huu wa uhuishaji unaelezea jukumu la uangalizi wa encoder-decoder. + +![GIF ya uhuishaji inayoonyesha jinsi tathmini zinavyofanywa katika modeli za transformer.](../../../../../lessons/5-NLP/18-Transformers/images/transformer-animated-explanation.gif) + +Kwa kuwa kila nafasi ya pembejeo inalinganishwa kwa uhuru na kila nafasi ya matokeo, transformers zinaweza kuendesha kwa sambamba vizuri zaidi kuliko RNNs, jambo ambalo linawezesha modeli kubwa zaidi na zenye kuelezea zaidi za lugha. Kila kichwa cha uangalizi kinaweza kutumika kujifunza uhusiano tofauti kati ya maneno, jambo ambalo linaboresha kazi za usindikaji wa lugha asilia. + +## BERT + +**BERT** (Bidirectional Encoder Representations from Transformers) ni mtandao mkubwa wa transformer wenye tabaka nyingi, na tabaka 12 kwa *BERT-base*, na 24 kwa *BERT-large*. Modeli hii kwanza inafundishwa awali kwenye hifadhidata kubwa ya maandishi (WikiPedia + vitabu) kwa kutumia mafunzo yasiyo ya kusimamiwa (kutabiri maneno yaliyofichwa katika sentensi). Wakati wa mafunzo ya awali, modeli inachukua viwango vikubwa vya uelewa wa lugha ambavyo vinaweza kutumika na hifadhidata nyingine kwa kutumia marekebisho. Mchakato huu unaitwa **transfer learning**. + +![picha kutoka http://jalammar.github.io/illustrated-bert/](../../../../../translated_images/jalammarBERT-language-modeling-masked-lm.34f113ea5fec4362e39ee4381aab7cad06b5465a0b5f053a0f2aa05fbe14e746.sw.png) + +> Picha [chanzo](http://jalammar.github.io/illustrated-bert/) + +## ✍️ Mazoezi: Transformers + +Endelea kujifunza katika vitabu vya mazoezi vifuatavyo: + +* [Transformers katika PyTorch](../../../../../lessons/5-NLP/18-Transformers/TransformersPyTorch.ipynb) +* [Transformers katika TensorFlow](../../../../../lessons/5-NLP/18-Transformers/TransformersTF.ipynb) + +## Hitimisho + +Katika somo hili umejifunza kuhusu Transformers na Mbinu za Uangalizi, zana muhimu katika kisanduku cha zana cha NLP. Kuna tofauti nyingi za usanifu wa Transformer ikiwa ni pamoja na BERT, DistilBERT, BigBird, OpenGPT3 na zaidi ambazo zinaweza kurekebishwa. [Kifurushi cha HuggingFace](https://github.com/huggingface/) kinatoa hifadhi ya mafunzo ya usanifu nyingi hizi kwa kutumia PyTorch na TensorFlow. + +## 🚀 Changamoto + +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/218) + +## Mapitio na Kujisomea + +* [Blogu ya maelezo](https://mchromiak.github.io/articles/2017/Sep/12/Transformer-Attention-is-all-you-need/), inayoelezea karatasi ya kawaida [Attention is all you need](https://arxiv.org/abs/1706.03762) kuhusu transformers. +* [Mfululizo wa blogu](https://towardsdatascience.com/transformers-explained-visually-part-1-overview-of-functionality-95a6dd460452) kuhusu transformers, unaoelezea usanifu kwa undani. + +## [Kazi ya nyumbani](assignment.md) + +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/18-Transformers/assignment.md b/translations/sw/lessons/5-NLP/18-Transformers/assignment.md index c92992d3..e90541cd 100644 --- a/translations/sw/lessons/5-NLP/18-Transformers/assignment.md +++ b/translations/sw/lessons/5-NLP/18-Transformers/assignment.md @@ -1,6 +1,15 @@ -# Uppgift: Transformers + +# Kazi: Transformers -Experimentera med Transformers på HuggingFace! Prova några av de skript de tillhandahåller för att arbeta med de olika modeller som finns på deras webbplats: https://huggingface.co/docs/transformers/run_scripts. Testa en av deras dataset, importera sedan en av dina egna från denna läroplan eller från Kaggle och se om du kan generera intressanta texter. Skapa en anteckningsbok med dina resultat. +Fanya majaribio na Transformers kwenye HuggingFace! Jaribu baadhi ya skripti wanazotoa ili kufanya kazi na mifano mbalimbali inayopatikana kwenye tovuti yao: https://huggingface.co/docs/transformers/run_scripts. Jaribu mojawapo ya seti zao za data, kisha leta moja yako kutoka kwenye mtaala huu au kutoka Kaggle na uone kama unaweza kuzalisha maandishi ya kuvutia. Tengeneza daftari la maelezo na matokeo yako. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, bör du vara medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/19-NER/README.md b/translations/sw/lessons/5-NLP/19-NER/README.md index 5d1f1c08..e241ced5 100644 --- a/translations/sw/lessons/5-NLP/19-NER/README.md +++ b/translations/sw/lessons/5-NLP/19-NER/README.md @@ -1,85 +1,94 @@ -# Kännedomsigenkänning + +# Utambuzi wa Viumbe Vilivyotajwa -Hittills har vi mest fokuserat på en NLP-uppgift - klassificering. Det finns dock även andra NLP-uppgifter som kan utföras med neurala nätverk. En av dessa uppgifter är **[Kännedomsigenkänning](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), som handlar om att känna igen specifika enheter inom text, såsom platser, personnamn, datum- och tidsintervall, kemiska formler och så vidare. +Hadi sasa, tumekuwa tukijikita zaidi katika kazi moja ya NLP - uainishaji. Hata hivyo, kuna kazi nyingine za NLP ambazo zinaweza kufanikishwa kwa kutumia mitandao ya neva. Mojawapo ya kazi hizo ni **[Utambuzi wa Viumbe Vilivyotajwa](https://wikipedia.org/wiki/Named-entity_recognition)** (NER), ambayo inahusika na kutambua viumbe maalum ndani ya maandishi, kama vile maeneo, majina ya watu, vipindi vya tarehe na muda, fomula za kemikali, na kadhalika. -## [Förläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) +## [Maswali ya awali ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/119) -## Exempel på att använda NER +## Mfano wa Kutumia NER -Anta att du vill utveckla en naturlig språk-chattbot, liknande Amazon Alexa eller Google Assistant. Sättet som intelligenta chattbotar fungerar på är att *förstå* vad användaren vill genom att göra textklassificering på den inmatade meningen. Resultatet av denna klassificering kallas **avsikt**, vilket avgör vad en chattbot ska göra. +Tuseme unataka kuunda roboti ya mazungumzo ya lugha asilia, sawa na Amazon Alexa au Google Assistant. Njia ambayo roboti za mazungumzo za akili hufanya kazi ni *kuelewa* kile mtumiaji anataka kwa kufanya uainishaji wa maandishi kwenye sentensi ya pembejeo. Matokeo ya uainishaji huu ni kile kinachoitwa **nia**, ambayo huamua roboti ya mazungumzo inapaswa kufanya nini. Bot NER -> Bild av författaren +> Picha na mwandishi -Men en användare kan ange vissa parametrar som en del av frasen. Till exempel, när hon frågar efter vädret, kan hon specificera en plats eller ett datum. En bot bör kunna förstå dessa enheter och fylla i parameterplatserna i enlighet med detta innan den utför åtgärden. Det är precis här som NER kommer in. +Hata hivyo, mtumiaji anaweza kutoa vigezo fulani kama sehemu ya sentensi. Kwa mfano, anapouliza kuhusu hali ya hewa, anaweza kutaja eneo au tarehe. Roboti inapaswa kuwa na uwezo wa kuelewa viumbe hivyo, na kujaza nafasi za vigezo ipasavyo kabla ya kutekeleza kitendo. Hapa ndipo NER inahusika. -> ✅ Ett annat exempel skulle vara [analys av vetenskapliga medicinska artiklar](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). En av de viktigaste sakerna vi behöver leta efter är specifika medicinska termer, såsom sjukdomar och medicinska ämnen. Medan ett litet antal sjukdomar troligen kan extraheras med hjälp av delsträngsökning, behöver mer komplexa enheter, såsom kemiska föreningar och medicinernamn, en mer komplex metod. +> ✅ Mfano mwingine ni [kuchambua makala za kisayansi za matibabu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Mojawapo ya mambo makuu tunayotakiwa kutafuta ni istilahi maalum za matibabu, kama vile magonjwa na vitu vya matibabu. Ingawa idadi ndogo ya magonjwa inaweza kutolewa kwa kutumia utafutaji wa sehemu ya maandishi, viumbe changamano zaidi, kama vile misombo ya kemikali na majina ya dawa, vinahitaji mbinu ngumu zaidi. -## NER som tokenklassificering +## NER kama Uainishaji wa Tokeni -NER-modeller är i grunden **tokenklassificeringsmodeller**, eftersom vi för varje inmatad token måste avgöra om den tillhör en enhet eller inte, och om den gör det - till vilken enhetsklass. +Mifano ya NER kimsingi ni **mifano ya uainishaji wa tokeni**, kwa sababu kwa kila tokeni ya pembejeo tunahitaji kuamua ikiwa inahusiana na kiumbe au la, na ikiwa inahusiana - ni darasa gani la kiumbe. -Överväg följande artikelrubrik: +Fikiria kichwa cha makala kifuatacho: -**Trikuspidalventilinsufficiens** och **litiumkarbonat** **toxicitet** hos ett nyfött barn. +**Tricuspid valve regurgitation** na **lithium carbonate** **toxicity** kwa mtoto mchanga. -Enheterna här är: +Viumbe hapa ni: -* Trikuspidalventilinsufficiens är en sjukdom (`DIS`) -* Litiumkarbonat är ett kemiskt ämne (`CHEM`) -* Toxicitet är också en sjukdom (`DIS`) +* Tricuspid valve regurgitation ni ugonjwa (`DIS`) +* Lithium carbonate ni dutu ya kemikali (`CHEM`) +* Toxicity pia ni ugonjwa (`DIS`) -Observera att en enhet kan sträcka sig över flera tokens. Och, som i detta fall, behöver vi särskilja mellan två på varandra följande enheter. Därför är det vanligt att använda två klasser för varje enhet - en som specificerar den första token av enheten (ofta används `B-` prefixet, för **b**örjan), och en annan - fortsättningen av en enhet (`I-`, för **i**nner token). Vi använder också `O` som en klass för att representera alla **o**tra tokens. Sådan tokenmärkning kallas [BIO-märkning](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (eller IOB). När den är märkt ser vår rubrik ut så här: +Kumbuka kwamba kiumbe kimoja kinaweza kuhusisha tokeni kadhaa. Na, kama ilivyo katika kesi hii, tunahitaji kutofautisha kati ya viumbe viwili vinavyofuatana. Kwa hivyo, ni kawaida kutumia madarasa mawili kwa kila kiumbe - moja linaloonyesha tokeni ya kwanza ya kiumbe (mara nyingi kiambishi `B-` kinatumika, kwa **mwanzo**), na kingine - kuendelea kwa kiumbe (`I-`, kwa **tokeni ya ndani**). Tunatumia pia `O` kama darasa kuwakilisha tokeni zote **nyingine**. Utagaji wa tokeni kama huu unaitwa [BIO tagging](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) (au IOB). Baada ya kutagwa, kichwa chetu kitaonekana kama hiki: -Token | Tag +Tokeni | Tag ------|----- -Trikuspidal | B-DIS -ventil | I-DIS -insufficiens | I-DIS -och | O -litium | B-CHEM -karbonat | I-CHEM -toxicitet | B-DIS -hos | O -ett | O -nyfött | O -barn | O +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 -Eftersom vi behöver bygga en en-till-en-koppling mellan tokens och klasser, kan vi träna en högra **många-till-många** neurala nätverksmodell från denna bild: +Kwa kuwa tunahitaji kujenga uhusiano wa moja kwa moja kati ya tokeni na madarasa, tunaweza kufundisha mfano wa mtandao wa neva wa **wengi-kwa-wengi** kutoka kwenye picha hii: -![Bild som visar vanliga mönster för återkommande neurala nätverk.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg) +![Picha inayoonyesha mifumo ya kawaida ya mitandao ya neva ya kurudia.](../../../../../translated_images/unreasonable-effectiveness-of-rnn.541ead816778f42dce6c42d8a56c184729aa2378d059b851be4ce12b993033df.sw.jpg) -> *Bild från [detta blogginlägg](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) av [Andrej Karpathy](http://karpathy.github.io/). NER-tokenklassificeringsmodeller motsvarar den högra nätverksarkitekturen på denna bild.* +> *Picha kutoka [blogu hii](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) na [Andrej Karpathy](http://karpathy.github.io/). Mifano ya uainishaji wa tokeni ya NER inahusiana na usanifu wa mtandao wa kulia kabisa kwenye picha hii.* -## Träning av NER-modeller +## Kufundisha Mifano ya NER -Eftersom en NER-modell i grunden är en tokenklassificeringsmodell, kan vi använda RNN:er som vi redan är bekanta med för denna uppgift. I det här fallet kommer varje block av det återkommande nätverket att returnera token-ID. Det följande exempelnotebooket visar hur man tränar LSTM för tokenklassificering. +Kwa kuwa mfano wa NER kimsingi ni mfano wa uainishaji wa tokeni, tunaweza kutumia RNNs ambazo tayari tunazifahamu kwa kazi hii. Katika kesi hii, kila kizuizi cha mtandao wa kurudia kitarudisha kitambulisho cha tokeni. Notibuku ifuatayo inaonyesha jinsi ya kufundisha LSTM kwa uainishaji wa tokeni. -## ✍️ Exempelnotebookar: NER +## ✍️ Notibuku za Mfano: NER -Fortsätt ditt lärande i följande notebook: +Endelea kujifunza katika notibuku ifuatayo: -* [NER med TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) +* [NER na TensorFlow](../../../../../lessons/5-NLP/19-NER/NER-TF.ipynb) -## Slutsats +## Hitimisho -En NER-modell är en **tokenklassificeringsmodell**, vilket innebär att den kan användas för att utföra tokenklassificering. Detta är en mycket vanlig uppgift inom NLP, som hjälper till att känna igen specifika enheter inom text inklusive platser, namn, datum och mer. +Mfano wa NER ni **mfano wa uainishaji wa tokeni**, ambayo ina maana kwamba unaweza kutumika kufanya uainishaji wa tokeni. Hii ni kazi ya kawaida sana katika NLP, ikisaidia kutambua viumbe maalum ndani ya maandishi ikiwa ni pamoja na maeneo, majina, tarehe, na zaidi. -## 🚀 Utmaning +## 🚀 Changamoto -Slutför uppgiften som länkas nedan för att träna en modell för kännedomsigenkänning av medicinska termer, och prova sedan på en annan dataset. +Kamilisha kazi iliyounganishwa hapa chini ili kufundisha mfano wa utambuzi wa viumbe vilivyotajwa kwa istilahi za matibabu, kisha ujaribu kwenye seti ya data tofauti. -## [Efterläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) +## [Maswali ya baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/219) -## Granskning & Självstudie +## Mapitio na Kujisomea -Läs igenom bloggen [Den orimliga effektiviteten av återkommande neurala nätverk](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) och följ med i avsnittet Fördjupad läsning i den artikeln för att fördjupa din kunskap. +Soma blogu [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) na fuata sehemu ya Kusoma Zaidi katika makala hiyo ili kuongeza maarifa yako. -## [Uppgift](lab/README.md) +## [Kazi](lab/README.md) -I uppgiften för denna lektion kommer du att behöva träna en modell för medicinsk enhetsigenkänning. Du kan börja med att träna en LSTM-modell som beskrivs i denna lektion, och fortsätta med att använda BERT-transformermodellen. Läs [instruktionerna](lab/README.md) för att få alla detaljer. +Katika kazi ya somo hili, utalazimika kufundisha mfano wa utambuzi wa viumbe vya matibabu. Unaweza kuanza kwa kufundisha mfano wa LSTM kama ilivyoelezwa katika somo hili, na kuendelea kutumia mfano wa BERT transformer. Soma [maelekezo](lab/README.md) ili kupata maelezo yote. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/19-NER/lab/README.md b/translations/sw/lessons/5-NLP/19-NER/lab/README.md index 9241b403..cef894c3 100644 --- a/translations/sw/lessons/5-NLP/19-NER/lab/README.md +++ b/translations/sw/lessons/5-NLP/19-NER/lab/README.md @@ -1,16 +1,25 @@ + # NER -Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -I denna laboration behöver du träna en modell för namngiven entitetsigenkänning för medicinska termer. +Katika maabara hii, unahitaji kufundisha mfano wa utambuzi wa vyombo vilivyopewa majina (NER) kwa maneno ya kitabibu. -## Datasetet +## Seti ya Data -För att träna NER-modellen behöver vi ett korrekt märkt dataset med medicinska entiteter. [BC5CDR dataset](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) innehåller märkta sjukdomar och kemiska entiteter från mer än 1500 artiklar. Du kan ladda ner datasetet efter att ha registrerat dig på deras webbplats. +Ili kufundisha mfano wa NER, tunahitaji seti ya data iliyowekwa alama ipasavyo yenye vyombo vya kitabibu. [Seti ya data ya BC5CDR](https://biocreative.bioinformatics.udel.edu/tasks/biocreative-v/track-3-cdr/) ina vyombo vya magonjwa na kemikali vilivyowekwa alama kutoka kwa zaidi ya makala 1500. Unaweza kupakua seti ya data baada ya kujisajili kwenye tovuti yao. -BC5CDR Dataset ser ut så här: +Seti ya data ya BC5CDR inaonekana kama ifuatavyo: ``` 6794356|t|Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant. @@ -21,17 +30,17 @@ BC5CDR Dataset ser ut så här: ... ``` -I detta dataset finns artikeltitel och abstrakt i de två första raderna, och sedan finns individuella entiteter, med start- och slutpositioner inom titel+abstrakt blocket. Förutom entitetstyp får du ontologin ID för denna entitet inom en viss medicinsk ontologi. +Katika seti hii ya data, kuna kichwa cha makala na muhtasari kwenye mistari miwili ya kwanza, na kisha kuna vyombo vya mtu binafsi, na nafasi za mwanzo na mwisho ndani ya sehemu ya kichwa+muhtasari. Mbali na aina ya chombo, unapata kitambulisho cha ontolojia cha chombo hiki ndani ya ontolojia fulani ya kitabibu. -Du behöver skriva lite Python-kod för att konvertera detta till BIO-encoding. +Utahitaji kuandika msimbo wa Python ili kubadilisha hii kuwa usimbaji wa BIO. -## Nätverket +## Mtandao -Första försöket med NER kan göras genom att använda LSTM-nätverk, som i vårt exempel som du har sett under lektionen. Men i NLP-uppgifter visar [transformerarkitektur](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), och specifikt [BERT-språkmodeller](https://en.wikipedia.org/wiki/BERT_(language_model)), mycket bättre resultat. Förtränade BERT-modeller förstår den allmänna strukturen i ett språk och kan finjusteras för specifika uppgifter med relativt små dataset och beräkningskostnader. +Jaribio la kwanza la NER linaweza kufanywa kwa kutumia mtandao wa LSTM, kama katika mfano wetu ulioona wakati wa somo. Hata hivyo, katika kazi za NLP, [usanifu wa transformer](https://en.wikipedia.org/wiki/Transformer_(machine_learning_model)), na hasa [mifano ya lugha ya BERT](https://en.wikipedia.org/wiki/BERT_(language_model)) huonyesha matokeo bora zaidi. Mifano ya BERT iliyofundishwa awali inaelewa muundo wa jumla wa lugha, na inaweza kufundishwa zaidi kwa kazi maalum kwa kutumia seti ndogo za data na gharama ndogo za kihesabu. -Eftersom vi planerar att tillämpa NER på medicinska scenarier, är det logiskt att använda BERT-modellen som är tränad på medicinska texter. Microsoft Research har släppt en förtränad modell som kallas [PubMedBERT][PubMedBERT] ([publicering][PubMedBERT-Pub]), som har finjusterats med texter från [PubMed](https://pubmed.ncbi.nlm.nih.gov/) arkivet. +Kwa kuwa tunapanga kutumia NER katika hali ya kitabibu, ina maana kutumia mfano wa BERT uliofundishwa kwenye maandishi ya kitabibu. Microsoft Research imetoa mfano uliofundishwa awali unaoitwa [PubMedBERT][PubMedBERT] ([uchapishaji][PubMedBERT-Pub]), ambao ulifundishwa zaidi kwa kutumia maandishi kutoka hifadhidata ya [PubMed](https://pubmed.ncbi.nlm.nih.gov/). -Den *de facto* standarden för att träna transformer-modeller är [Hugging Face Transformers](https://huggingface.co/) biblioteket. Det innehåller också ett arkiv med gemenskapsunderhållna förtränade modeller, inklusive PubMedBERT. För att ladda och använda denna modell behöver vi bara ett par rader kod: +Kiwango cha *de facto* cha kufundisha mifano ya transformer ni maktaba ya [Hugging Face Transformers](https://huggingface.co/). Pia ina hifadhidata ya mifano iliyofundishwa awali inayosimamiwa na jamii, ikijumuisha PubMedBERT. Ili kupakia na kutumia mfano huu, tunahitaji mistari michache tu ya msimbo: ```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) ``` -Detta ger oss `model` itself, built for token classification task using `classes` number of classes, as well as `tokenizer` objektet som kan dela upp inmatningstexten i tokens. Du behöver konvertera datasetet till BIO-format, med hänsyn till PubMedBERT-tokenisering. Du kan använda [denna bit av Python-kod](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) som inspiration. +Hii inatupa `model` yenyewe, iliyojengwa kwa kazi ya uainishaji wa tokeni kwa kutumia idadi ya `classes`, pamoja na kitu cha `tokenizer` ambacho kinaweza kugawanya maandishi ya pembejeo kuwa tokeni. Utahitaji kubadilisha seti ya data kuwa muundo wa BIO, ukizingatia usimbaji wa tokeni wa PubMedBERT. Unaweza kutumia [kipande hiki cha msimbo wa Python](https://gist.github.com/shwars/580b55684be3328eb39ecf01b9cbbd88) kama msukumo. -## Sammanfattning +## Hitimisho -Denna uppgift ligger mycket nära den faktiska uppgift du sannolikt kommer att ha om du vill få mer insikter i stora volymer av texter på naturligt språk. I vårt fall kan vi tillämpa vår tränade modell på [datasetet med COVID-relaterade artiklar](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) och se vilka insikter vi kommer att kunna få. [Detta blogginlägg](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) och [denna artikel](https://www.mdpi.com/2504-2289/6/1/4) beskriver forskningen som kan göras på detta corpus av artiklar med hjälp av NER. +Kazi hii iko karibu sana na kazi halisi unayoweza kuwa nayo ikiwa unataka kupata maarifa zaidi kutoka kwa idadi kubwa ya maandishi ya lugha asilia. Katika hali yetu, tunaweza kutumia mfano wetu uliofundishwa kwenye [seti ya data ya makala zinazohusiana na COVID](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) na kuona ni maarifa gani tutakayoweza kupata. [Chapisho hili la blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) na [karatasi hii](https://www.mdpi.com/2504-2289/6/1/4) vinaelezea utafiti unaoweza kufanywa kwenye mkusanyiko huu wa makala kwa kutumia NER. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/20-LangModels/README.md b/translations/sw/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..7fd6e25f --- /dev/null +++ b/translations/sw/lessons/5-NLP/20-LangModels/README.md @@ -0,0 +1,65 @@ + +# Miundo Mikubwa ya Lugha Iliyofunzwa Kabla + +Katika kazi zetu zote za awali, tulikuwa tunafundisha mtandao wa neva kufanya kazi fulani kwa kutumia seti ya data yenye lebo. Kwa miundo mikubwa ya transformer, kama BERT, tunatumia uundaji wa lugha kwa njia ya kujifunza binafsi ili kujenga mfano wa lugha, ambao baadaye unataalam kwa kazi maalum za chini kwa mafunzo zaidi ya kikoa maalum. Hata hivyo, imeonyeshwa kuwa miundo mikubwa ya lugha inaweza pia kutatua kazi nyingi bila mafunzo yoyote maalum ya kikoa. Familia ya miundo inayoweza kufanya hivyo inaitwa **GPT**: Generative Pre-Trained Transformer. + +## [Jaribio la Kabla ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/120) + +## Uundaji wa Maandishi na Perplexity + +Wazo la mtandao wa neva kuwa na uwezo wa kufanya kazi za jumla bila mafunzo ya chini linaonyeshwa katika karatasi ya [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf). Wazo kuu ni kwamba kazi nyingine nyingi zinaweza kuundwa kwa kutumia **uundaji wa maandishi**, kwa sababu kuelewa maandishi kimsingi kunamaanisha kuwa na uwezo wa kuyazalisha. Kwa sababu mfano umefundishwa kwa kiasi kikubwa cha maandishi yanayojumuisha maarifa ya binadamu, pia unakuwa na maarifa kuhusu mada mbalimbali. + +> Kuelewa na kuwa na uwezo wa kuzalisha maandishi pia kunahusisha kujua kitu kuhusu ulimwengu unaotuzunguka. Watu pia hujifunza kwa kusoma kwa kiwango kikubwa, na mtandao wa GPT ni sawa katika muktadha huu. + +Mitandao ya uundaji wa maandishi hufanya kazi kwa kutabiri uwezekano wa neno linalofuata $$P(w_N)$$. Hata hivyo, uwezekano usio na masharti wa neno linalofuata ni sawa na marudio ya neno hilo katika hifadhidata ya maandishi. GPT inaweza kutupatia **uwezekano wa masharti** wa neno linalofuata, ikizingatia yale ya awali: $$P(w_N | w_{n-1}, ..., w_0)$$ + +> Unaweza kusoma zaidi kuhusu uwezekano katika [Mtaala wetu wa Sayansi ya Data kwa Anayeanza](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/04-stats-and-probability) + +Ubora wa mfano wa uundaji wa lugha unaweza kufafanuliwa kwa kutumia **perplexity**. Ni kipimo cha ndani kinachoturuhusu kupima ubora wa mfano bila seti ya data maalum ya kazi. Kinategemea dhana ya *uwezekano wa sentensi* - mfano unatoa uwezekano mkubwa kwa sentensi inayoweza kuwa halisi (yaani, mfano haujachanganyikiwa nayo), na uwezekano mdogo kwa sentensi ambazo hazina maana (mfano: *Je, inaweza kufanya nini?*). Tunapotoa mfano wetu sentensi kutoka hifadhidata halisi ya maandishi, tunatarajia kuwa na uwezekano mkubwa, na **perplexity** ndogo. Kihisabati, inafafanuliwa kama uwezekano wa kinyume uliowekwa wa seti ya majaribio: +$$ +\mathrm{Perplexity}(W) = \sqrt[N]{1\over P(W_1,...,W_N)} +$$ + +**Unaweza kujaribu uundaji wa maandishi kwa kutumia [kihariri cha maandishi kinachotumia GPT kutoka Hugging Face](https://transformer.huggingface.co/doc/gpt2-large)**. Katika kihariri hiki, unaanza kuandika maandishi yako, na ukibonyeza **[TAB]** utapewa chaguo kadhaa za kukamilisha. Ikiwa ni fupi sana, au haujaridhika nazo - bonyeza [TAB] tena, na utakuwa na chaguo zaidi, ikiwa ni pamoja na vipande virefu vya maandishi. + +## GPT ni Familia + +GPT si mfano mmoja, bali ni mkusanyiko wa miundo iliyotengenezwa na kufundishwa na [OpenAI](https://openai.com). + +Chini ya miundo ya GPT, tunayo: + +| [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) | +| -- | -- | -- | +|Mfano wa lugha wenye hadi vigezo bilioni 1.5. | Mfano wa lugha wenye hadi vigezo bilioni 175 | Vigezo trilioni 100 na unakubali pembejeo za picha na maandishi na kutoa maandishi. | + + +Miundo ya GPT-3 na GPT-4 inapatikana [kama huduma ya utambuzi kutoka Microsoft Azure](https://azure.microsoft.com/en-us/services/cognitive-services/openai-service/#overview?WT.mc_id=academic-77998-cacaste), na kama [API ya OpenAI](https://openai.com/api/). + +## Uhandisi wa Maagizo + +Kwa sababu GPT imefundishwa kwa kiasi kikubwa cha data ili kuelewa lugha na msimbo, hutoa matokeo kwa kujibu pembejeo (maagizo). Maagizo ni pembejeo au maswali ya GPT ambapo mtu hutoa maelekezo kwa miundo kuhusu kazi wanazotaka kukamilisha. Ili kupata matokeo yanayotarajiwa, unahitaji agizo bora zaidi ambalo linahusisha kuchagua maneno sahihi, miundo, misemo au hata alama. Mbinu hii ni [Uhandisi wa Maagizo](https://learn.microsoft.com/en-us/shows/ai-show/the-basics-of-prompt-engineering-with-azure-openai-service?WT.mc_id=academic-77998-bethanycheum) + +[Hati hii](https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/?WT.mc_id=academic-77998-bethanycheum) inakupa maelezo zaidi kuhusu uhandisi wa maagizo. + +## ✍️ Daftari la Mfano: [Kucheza na OpenAI-GPT](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +Endelea kujifunza katika daftari zifuatazo: + +* [Kuzalisha maandishi kwa OpenAI-GPT na Hugging Face Transformers](../../../../../lessons/5-NLP/20-LangModels/GPT-PyTorch.ipynb) + +## Hitimisho + +Miundo mipya ya lugha iliyofunzwa kabla haifanyi tu uundaji wa muundo wa lugha, bali pia ina kiasi kikubwa cha lugha ya asili. Kwa hivyo, inaweza kutumika kwa ufanisi kutatua baadhi ya kazi za NLP katika mipangilio ya zero-shop au few-shot. + +## [Jaribio la Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/220) + +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/5-NLP/README.md b/translations/sw/lessons/5-NLP/README.md index 63651f9c..9789f883 100644 --- a/translations/sw/lessons/5-NLP/README.md +++ b/translations/sw/lessons/5-NLP/README.md @@ -1,69 +1,86 @@ -# Bearbetning av naturligt språk + +# Usindikaji wa Lugha Asilia -![Sammanfattning av NLP-uppgifter i en doodle](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sw.png) +![Muhtasari wa kazi za NLP katika mchoro](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.sw.png) -I denna sektion kommer vi att fokusera på att använda neurala nätverk för att hantera uppgifter relaterade till **bearbetning av naturligt språk (NLP)**. Det finns många NLP-problem som vi vill att datorer ska kunna lösa: +Katika sehemu hii, tutazingatia kutumia Mitandao ya Neural kushughulikia kazi zinazohusiana na **Usindikaji wa Lugha Asilia (NLP)**. Kuna matatizo mengi ya NLP ambayo tunataka kompyuta iweze kuyatatua: -* **Textklassificering** är ett typiskt klassificeringsproblem som rör textsekvenser. Exempel inkluderar att klassificera e-postmeddelanden som skräppost eller icke-skräppost, eller att kategorisera artiklar som sport, affärer, politik, etc. Dessutom, när vi utvecklar chattbotar, behöver vi ofta förstå vad en användare ville säga – i detta fall handlar det om **avsiktsklassificering**. Ofta behöver vi hantera många kategorier i avsiktsklassificering. -* **Sentimentanalys** är ett typiskt regressionsproblem, där vi behöver ge ett nummer (ett sentiment) som motsvarar hur positivt/negativt innebörden av en mening är. En mer avancerad version av sentimentanalys är **aspektbaserad sentimentanalys** (ABSA), där vi ger sentiment inte till hela meningen, utan till olika delar av den (aspekter), t.ex. *På denna restaurang gillade jag maten, men atmosfären var fruktansvärd*. -* **Named Entity Recognition** (NER) hänvisar till problemet med att extrahera vissa enheter från text. Till exempel kan vi behöva förstå att i frasen *Jag behöver flyga till Paris imorgon* hänvisar ordet *imorgon* till DATUM, och *Paris* är en PLATS. -* **Nyckelordsextraktion** liknar NER, men vi behöver automatiskt extrahera ord som är viktiga för meningen i meningen, utan förutbildning för specifika enhetstyper. -* **Textklustring** kan vara användbart när vi vill gruppera liknande meningar, till exempel liknande förfrågningar i teknisk supportkonversationer. -* **Frågebesvarande** hänvisar till en models förmåga att svara på en specifik fråga. Modellen får en textpassage och en fråga som indata, och den behöver ange en plats i texten där svaret på frågan finns (eller, ibland, generera svaret). -* **Textgenerering** är en models förmåga att generera ny text. Det kan ses som en klassificeringsuppgift som förutsäger nästa bokstav/ord baserat på en viss *textprompt*. Avancerade textgenereringsmodeller, som GPT-3, kan lösa andra NLP-uppgifter som klassificering med en teknik som kallas [prompt programming](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) eller [prompt engineering](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -* **Textsammanfattning** är en teknik när vi vill att en dator ska "läsa" lång text och sammanfatta den i några meningar. -* **Maskinöversättning** kan ses som en kombination av textförståelse på ett språk och textgenerering på ett annat. +* **Uainishaji wa maandishi** ni tatizo la kawaida la uainishaji linalohusiana na mfuatano wa maandishi. Mifano ni pamoja na kuainisha barua pepe kama spam au si-spam, au kuainisha makala kama michezo, biashara, siasa, n.k. Pia, tunapounda roboti za mazungumzo, mara nyingi tunahitaji kuelewa kile mtumiaji alitaka kusema -- katika kesi hii tunashughulika na **uainishaji wa nia**. Mara nyingi, katika uainishaji wa nia tunahitaji kushughulikia kategoria nyingi. -Fram till nyligen löstes de flesta NLP-uppgifter med traditionella metoder som grammatik. Till exempel, inom maskinöversättning användes parser för att omvandla den ursprungliga meningen till ett syntaxträd, sedan extraherades högre nivåer av semantiska strukturer för att representera meningen av meningen, och baserat på denna mening och grammatiken i målspråket genererades resultatet. Numera löses många NLP-uppgifter mer effektivt med hjälp av neurala nätverk. +* **Uchambuzi wa hisia** ni tatizo la kawaida la regression, ambapo tunahitaji kuhusisha namba (hisia) inayolingana na jinsi maana ya sentensi ilivyo chanya/mbaya. Toleo la juu zaidi la uchambuzi wa hisia ni **uchambuzi wa hisia kulingana na vipengele** (ABSA), ambapo tunahusisha hisia si kwa sentensi nzima, bali kwa sehemu zake tofauti (vipengele), mfano: *Katika mgahawa huu, nilipenda chakula, lakini mazingira yalikuwa mabaya*. -> Många klassiska NLP-metoder är implementerade i [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org) Python-biblioteket. Det finns en fantastisk [NLTK Book](https://www.nltk.org/book/) tillgänglig online som täcker hur olika NLP-uppgifter kan lösas med NLTK. +* **Utambuzi wa Viumbe Vilivyotajwa** (NER) inahusu tatizo la kutoa viumbe fulani kutoka kwa maandishi. Kwa mfano, tunaweza kuhitaji kuelewa kwamba katika kifungu *Nahitaji kuruka kwenda Paris kesho* neno *kesho* linahusu TAREHE, na *Paris* ni MAHALI. -I vår kurs kommer vi mestadels att fokusera på att använda neurala nätverk för NLP, och vi kommer att använda NLTK där det behövs. +* **Uchimbaji wa maneno muhimu** ni sawa na NER, lakini tunahitaji kutoa maneno muhimu kwa maana ya sentensi moja kwa moja, bila mafunzo ya awali kwa aina maalum za viumbe. -Vi har redan lärt oss om att använda neurala nätverk för att hantera tabulär data och bilder. Den största skillnaden mellan dessa typer av data och text är att text är en sekvens av variabel längd, medan indata storleken i fallet med bilder är känd i förväg. Medan konvolutionella nätverk kan extrahera mönster från indata, är mönster i text mer komplexa. T.ex. kan vi ha negation som är åtskild från subjektet och vara godtycklig för många ord (t.ex. *Jag gillar inte apelsiner*, vs. *Jag gillar inte de stora färgglada välsmakande apelsinerna*), och det bör fortfarande tolkas som ett mönster. Så för att hantera språk behöver vi introducera nya typer av neurala nätverk, såsom *återkommande nätverk* och *transformatorer*. +* **Kugawanya maandishi katika makundi** kunaweza kuwa muhimu tunapotaka kuunganisha sentensi zinazofanana, kwa mfano, maombi yanayofanana katika mazungumzo ya msaada wa kiufundi. -## Installera Bibliotek +* **Kujibu maswali** inahusu uwezo wa mfano kujibu swali maalum. Mfano hupokea kifungu cha maandishi na swali kama pembejeo, na inahitaji kutoa sehemu ya maandishi ambapo jibu la swali linapatikana (au, wakati mwingine, kutengeneza maandishi ya jibu). -Om du använder en lokal Python-installation för att köra denna kurs, kan du behöva installera alla nödvändiga bibliotek för NLP med följande kommandon: +* **Uzalishaji wa maandishi** ni uwezo wa mfano kutengeneza maandishi mapya. Inaweza kuchukuliwa kama kazi ya uainishaji inayotabiri herufi/maneno yanayofuata kulingana na *msukumo wa maandishi*. Mifano ya juu ya uzalishaji wa maandishi, kama vile GPT-3, inaweza kutatua kazi nyingine za NLP kama uainishaji kwa kutumia mbinu inayoitwa [programu ya msukumo](https://towardsdatascience.com/software-3-0-how-prompting-will-change-the-rules-of-the-game-a982fbfe1e0) au [uhandisi wa msukumo](https://medium.com/swlh/openai-gpt-3-and-prompt-engineering-dcdc2c5fcd29). -**För PyTorch** +* **Muhtasari wa maandishi** ni mbinu tunapotaka kompyuta "kusoma" maandishi marefu na kuyafupisha kwa sentensi chache. + +* **Tafsiri ya mashine** inaweza kuonekana kama mchanganyiko wa kuelewa maandishi kwa lugha moja, na uzalishaji wa maandishi kwa lugha nyingine. + +Hapo awali, kazi nyingi za NLP zilitatuliwa kwa kutumia mbinu za jadi kama sarufi. Kwa mfano, katika tafsiri ya mashine, vichanganuzi vilitumika kubadilisha sentensi ya awali kuwa mti wa sintaksia, kisha miundo ya juu ya kisemantiki ilitolewa ili kuwakilisha maana ya sentensi, na kulingana na maana hii na sarufi ya lugha lengwa, matokeo yalitengenezwa. Siku hizi, kazi nyingi za NLP zinatatuliwa kwa ufanisi zaidi kwa kutumia mitandao ya neural. + +> Mbinu nyingi za jadi za NLP zinatekelezwa katika maktaba ya Python inayoitwa [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Kuna [Kitabu cha NLTK](https://www.nltk.org/book/) kinachopatikana mtandaoni ambacho kinaelezea jinsi kazi tofauti za NLP zinaweza kutatuliwa kwa kutumia NLTK. + +Katika kozi yetu, tutazingatia zaidi kutumia Mitandao ya Neural kwa NLP, na tutatumia NLTK pale inapohitajika. + +Tayari tumejifunza kuhusu kutumia mitandao ya neural kushughulikia data ya jedwali na picha. Tofauti kuu kati ya aina hizo za data na maandishi ni kwamba maandishi ni mfuatano wa urefu unaobadilika, wakati saizi ya pembejeo katika picha inajulikana mapema. Wakati mitandao ya convolutional inaweza kutoa mifumo kutoka kwa data ya pembejeo, mifumo katika maandishi ni changamano zaidi. Kwa mfano, tunaweza kuwa na kukanusha kunakotenganishwa na somo kwa maneno mengi (mfano: *Sipendi machungwa*, dhidi ya *Sipendi yale machungwa makubwa yenye rangi nzuri na ladha*), na hiyo bado inapaswa kufasiriwa kama muundo mmoja. Kwa hivyo, ili kushughulikia lugha tunahitaji kuanzisha aina mpya za mitandao ya neural, kama vile *mitandao ya kurudiarudia* na *transformers*. + +## Sakinisha Maktaba + +Ikiwa unatumia usakinishaji wa Python wa ndani kuendesha kozi hii, unaweza kuhitaji kusakinisha maktaba zote zinazohitajika kwa NLP kwa kutumia amri zifuatazo: + +**Kwa PyTorch** ```bash pip install -r requirements-torch.txt -``` -**För TensorFlow** +``` +**Kwa TensorFlow** ```bash pip install -r requirements-tf.txt -``` +``` -> Du kan prova NLP med TensorFlow på [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) +> Unaweza kujaribu NLP na TensorFlow kwenye [Microsoft Learn](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-tensorflow/?WT.mc_id=academic-77998-cacaste) -## GPU Varning +## Onyo Kuhusu GPU -I denna sektion, i några av exemplen kommer vi att träna ganska stora modeller. -* **Använd en GPU-aktiverad dator**: Det är rekommenderat att köra dina anteckningsböcker på en GPU-aktiverad dator för att minska väntetiderna när du arbetar med stora modeller. -* **GPU-minnesbegränsningar**: Att köra på en GPU kan leda till situationer där du får slut på GPU-minne, särskilt när du tränar stora modeller. -* **GPU-minnesanvändning**: Mängden GPU-minne som används under träning beror på olika faktorer, inklusive minibatch-storleken. -* **Minimera minibatch-storleken**: Om du stöter på GPU-minnesproblem, överväg att minska minibatch-storleken i din kod som en potentiell lösning. -* **TensorFlow GPU-minnesfrisläppande**: Äldre versioner av TensorFlow kanske inte släpper GPU-minne korrekt när flera modeller tränas inom en Python-kernel. För att effektivt hantera GPU-minnesanvändning kan du konfigurera TensorFlow att allokera GPU-minne endast efter behov. -* **Kodinkludering**: För att ställa in TensorFlow att växa GPU-minnesallokeringen endast när det behövs, inkludera följande kod i dina anteckningsböcker: +Katika sehemu hii, katika baadhi ya mifano tutakuwa tukifundisha mifano mikubwa. +* **Tumia Kompyuta Yenye GPU**: Inashauriwa kuendesha daftari zako kwenye kompyuta yenye GPU ili kupunguza muda wa kusubiri wakati wa kufanya kazi na mifano mikubwa. +* **Vikwazo vya Kumbukumbu ya GPU**: Kuendesha kwenye GPU kunaweza kusababisha hali ambapo kumbukumbu ya GPU inajaa, hasa wakati wa kufundisha mifano mikubwa. +* **Matumizi ya Kumbukumbu ya GPU**: Kiasi cha kumbukumbu ya GPU kinachotumika wakati wa mafunzo kinategemea mambo mbalimbali, ikiwa ni pamoja na ukubwa wa minibatch. +* **Punguza Ukubwa wa Minibatch**: Ikiwa unakutana na matatizo ya kumbukumbu ya GPU, fikiria kupunguza ukubwa wa minibatch katika msimbo wako kama suluhisho linalowezekana. +* **Utoaji wa Kumbukumbu ya GPU kwa TensorFlow**: Matoleo ya zamani ya TensorFlow yanaweza yasitoe kumbukumbu ya GPU ipasavyo wakati wa kufundisha mifano mingi ndani ya kernel moja ya Python. Ili kudhibiti matumizi ya kumbukumbu ya GPU kwa ufanisi, unaweza kusanidi TensorFlow kugawa kumbukumbu ya GPU tu inapohitajika. +* **Ujumuishaji wa Msimbo**: Ili kuweka TensorFlow kugawa kumbukumbu ya GPU tu inapohitajika, jumuisha msimbo ufuatao katika daftari zako: ```python physical_devices = tf.config.list_physical_devices('GPU') if len(physical_devices)>0: tf.config.experimental.set_memory_growth(physical_devices[0], True) -``` +``` -Om du är intresserad av att lära dig om NLP från ett klassiskt ML-perspektiv, besök [denna samling av lektioner](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) +Ikiwa una nia ya kujifunza kuhusu NLP kutoka mtazamo wa ML wa jadi, tembelea [hii seti ya masomo](https://github.com/microsoft/ML-For-Beginners/tree/main/6-NLP) -## I denna Sektion -I denna sektion kommer vi att lära oss om: +## Katika Sehemu Hii +Katika sehemu hii tutajifunza kuhusu: -* [Representera text som tensorer](13-TextRep/README.md) -* [Ordembeddings](14-Emdeddings/README.md) -* [Språkmodellering](15-LanguageModeling/README.md) -* [Återkommande neurala nätverk](16-RNN/README.md) -* [Generativa nätverk](17-GenerativeNetworks/README.md) -* [Transformatorer](18-Transformers/README.md) +* [Kuwakilisha maandishi kama tensors](13-TextRep/README.md) +* [Uwakilishi wa Maneno](14-Emdeddings/README.md) +* [Uundaji wa Lugha](15-LanguageModeling/README.md) +* [Mitandao ya Neural ya Kurudiarudia](16-RNN/README.md) +* [Mitandao ya Kizazi](17-GenerativeNetworks/README.md) +* [Transformers](18-Transformers/README.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md index ffd8e49d..fd0253c0 100644 --- a/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md +++ b/translations/sw/lessons/6-Other/21-GeneticAlgorithms/README.md @@ -1,80 +1,89 @@ -# Genetiska Algoritmer + +# Algorithms za Kijenetiki -## [För-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) +## [Maswali ya awali ya mihadhara](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/121) -**Genetiska Algoritmer** (GA) bygger på en **evolutionär metod** för AI, där metoder för evolution av en population används för att uppnå en optimal lösning på ett givet problem. De föreslogs 1975 av [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). +**Algorithms za Kijenetiki** (GA) zinategemea mbinu ya **mabadiliko ya kimaumbile** katika AI, ambapo mbinu za mabadiliko ya idadi ya watu zinatumika kupata suluhisho bora kwa tatizo fulani. Zilianzishwa mwaka 1975 na [John Henry Holland](https://wikipedia.org/wiki/John_Henry_Holland). -Genetiska Algoritmer baseras på följande idéer: +Algorithms za Kijenetiki zinategemea mawazo yafuatayo: -* Giltiga lösningar på problemet kan representeras som **gener** -* **Crossover** gör att vi kan kombinera två lösningar för att få en ny giltig lösning -* **Urval** används för att välja mer optimala lösningar med hjälp av en viss **fitnessfunktion** -* **Mutationer** introduceras för att destabilisera optimeringen och få oss ur det lokala minimumet +* Suluhisho halali za tatizo zinaweza kuwakilishwa kama **jini** +* **Crossover** inatuwezesha kuchanganya suluhisho mbili pamoja ili kupata suluhisho jipya halali +* **Uteuzi** hutumika kuchagua suluhisho bora zaidi kwa kutumia **kazi ya ufanisi** +* **Mabadiliko** huletwa ili kuvuruga uboreshaji na kututoa kwenye kiwango cha chini cha ndani -Om du vill implementera en Genetisk Algoritm behöver du följande: +Ikiwa unataka kutekeleza Algorithm ya Kijenetiki, unahitaji yafuatayo: - * Att hitta en metod för att koda våra problemlösningar med hjälp av **gener** g∈Γ - * På mängden av gener Γ behöver vi definiera en **fitnessfunktion** fit: Γ→**R**. Mindre funktionsvärden motsvarar bättre lösningar. - * Att definiera en **crossover**-mekanism för att kombinera två gener för att få en ny giltig lösning crossover: Γ2→Γ. - * Att definiera en **mutations**-mekanism mutate: Γ→Γ. + * Kupata njia ya kuweka suluhisho za tatizo letu kwa kutumia **jini** g∈Γ + * Kwenye seti ya jini Γ tunahitaji kufafanua **kazi ya ufanisi** fit: Γ→**R**. Thamani ndogo za kazi zinahusiana na suluhisho bora. + * Kufafanua mfumo wa **crossover** wa kuchanganya jini mbili pamoja ili kupata suluhisho jipya crossover: Γ2→Γ. + * Kufafanua mfumo wa **mabadiliko** mutate: Γ→Γ. -I många fall är crossover och mutation ganska enkla algoritmer för att manipulera gener som numeriska sekvenser eller bitvektorer. +Katika hali nyingi, crossover na mabadiliko ni algorithms rahisi za kudhibiti jini kama mfuatano wa namba au vekta za biti. -Den specifika implementeringen av en genetisk algoritm kan variera från fall till fall, men den övergripande strukturen är följande: +Utekelezaji maalum wa algorithm ya kijenetiki unaweza kutofautiana kulingana na kesi, lakini muundo wa jumla ni kama ifuatavyo: -1. Välj en initial population G⊂Γ -2. Slumptalsvälja en av de operationer som ska utföras i detta steg: crossover eller mutation +1. Chagua idadi ya watu ya awali G⊂Γ +2. Chagua kwa nasibu moja ya operesheni zitakazofanywa katika hatua hii: crossover au mabadiliko 3. **Crossover**: - * Slumptalsvälja två gener g1, g2 ∈ G - * Beräkna crossover g=crossover(g1,g2) - * Om fit(g)1) eller fit(g)2) - ersätt motsvarande gen i populationen med g. -4. **Mutation** - välj en slumpmässig gen g∈G och ersätt den med mutate(g) -5. Upprepa från steg 2, tills vi får ett tillräckligt litet värde av fit, eller tills gränsen för antalet steg nås. + * Chagua kwa nasibu jini mbili g1, g2 ∈ G + * Hesabu crossover g=crossover(g1,g2) + * Ikiwa fit(g)1) au fit(g)2) - badilisha jini husika katika idadi ya watu kwa g. +4. **Mabadiliko** - chagua jini moja kwa nasibu g∈G na ibadilishe kwa mutate(g) +5. Rudia kutoka hatua ya 2, hadi tupate thamani ndogo ya kutosha ya fit, au hadi kikomo cha idadi ya hatua kifikiwe. -## Typiska Uppgifter +## Kazi za Kawaida -Uppgifter som vanligtvis löses med Genetiska Algoritmer inkluderar: +Kazi zinazotatuliwa mara kwa mara na Algorithms za Kijenetiki ni pamoja na: -1. Schemaläggningsoptimering -1. Optimal packning -1. Optimal skärning -1. Snabbare exhaustiv sökning +1. Uboreshaji wa ratiba +1. Upangaji bora wa mizigo +1. Ukataji bora +1. Kuharakisha utafutaji wa kina -## ✍️ Övningar: Genetiska Algoritmer +## ✍️ Mazoezi: Algorithms za Kijenetiki -Fortsätt ditt lärande i följande anteckningsböcker: +Endelea kujifunza katika daftari zifuatazo: -Gå till [denna anteckningsbok](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) för att se två exempel på användning av Genetiska Algoritmer: +Nenda kwenye [daftari hili](../../../../../lessons/6-Other/21-GeneticAlgorithms/Genetic.ipynb) kuona mifano miwili ya kutumia Algorithms za Kijenetiki: -1. Rättvis fördelning av skatt -1. 8 Drottningar Problemet +1. Mgawanyo wa haki wa hazina +1. Tatizo la Malkia 8 -## Slutsats +## Hitimisho -Genetiska Algoritmer används för att lösa många problem, inklusive logistik och sökproblem. Fältet är inspirerat av forskning som sammanfogar ämnen inom psykologi och datavetenskap. +Algorithms za Kijenetiki zinatumika kutatua matatizo mengi, ikiwa ni pamoja na matatizo ya usafirishaji na utafutaji. Uwanja huu umechochewa na utafiti uliochanganya mada za Saikolojia na Sayansi ya Kompyuta. -## 🚀 Utmaning +## 🚀 Changamoto -"Genetiska algoritmer är enkla att implementera, men deras beteende är svårt att förstå." [källa](https://wikipedia.org/wiki/Genetic_algorithm) Gör lite forskning för att hitta en implementation av en genetisk algoritm, såsom att lösa ett Sudoku-pussel, och förklara hur det fungerar som en skiss eller flödesdiagram. +"Algorithms za kijenetiki ni rahisi kutekeleza, lakini tabia zake ni ngumu kuelewa." [chanzo](https://wikipedia.org/wiki/Genetic_algorithm) Fanya utafiti ili kupata utekelezaji wa algorithm ya kijenetiki kama kutatua fumbo la Sudoku, na eleza jinsi inavyofanya kazi kwa mchoro au mtiririko wa hatua. -## [Efter-lecture quiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) +## [Maswali ya baada ya mihadhara](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/221) -## Granskning & Självstudie +## Mapitio & Kujifunza Binafsi -Titta på [denna fantastiska video](https://www.youtube.com/watch?v=qv6UVOQ0F44) som handlar om hur datorer kan lära sig spela Super Mario med hjälp av neurala nätverk som tränats av genetiska algoritmer. Vi kommer att lära oss mer om datorer som lär sig spela sådana spel [i nästa avsnitt](../22-DeepRL/README.md). +Tazama [video hii nzuri](https://www.youtube.com/watch?v=qv6UVOQ0F44) inayozungumzia jinsi kompyuta inavyoweza kujifunza kucheza Super Mario kwa kutumia mitandao ya neva iliyofunzwa na algorithms za kijenetiki. Tutajifunza zaidi kuhusu kompyuta kujifunza kucheza michezo kama hiyo [katika sehemu inayofuata](../22-DeepRL/README.md). -## [Uppgift: Diophantine-ekvation](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) +## [Kazi: Mlinganyo wa Diophantine](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) -Ditt mål är att lösa den så kallade **Diophantine-ekvationen** - en ekvation med heltalslösningar. Till exempel, betrakta ekvationen a+2b+3c+4d=30. Du behöver hitta de heltalslösningar som uppfyller denna ekvation. +Lengo lako ni kutatua kinachoitwa **mlinganyo wa Diophantine** - mlinganyo wenye mizizi ya namba nzima. Kwa mfano, fikiria mlinganyo a+2b+3c+4d=30. Unahitaji kupata mizizi ya namba nzima inayokidhi mlinganyo huu. -*Denna uppgift är inspirerad av [detta inlägg](https://habr.com/post/128704/).* +*Kazi hii imechochewa na [chapisho hili](https://habr.com/post/128704/).* -Tips: +Vidokezo: -1. Du kan betrakta rötterna som liggande i intervallet [0;30] -1. Som en gen, överväg att använda listan av rotvärden +1. Unaweza kuzingatia mizizi kuwa katika kipengele [0;30] +1. Kama jini, fikiria kutumia orodha ya thamani za mizizi -Använd [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) som en utgångspunkt. +Tumia [Diophantine.ipynb](../../../../../lessons/6-Other/21-GeneticAlgorithms/Diophantine.ipynb) kama sehemu ya kuanzia. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår på grund av användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/6-Other/22-DeepRL/README.md b/translations/sw/lessons/6-Other/22-DeepRL/README.md index b2be2712..f93c7c08 100644 --- a/translations/sw/lessons/6-Other/22-DeepRL/README.md +++ b/translations/sw/lessons/6-Other/22-DeepRL/README.md @@ -1,33 +1,42 @@ -# Djup Förstärkningsinlärning + +# Kujifunza Kuimarisha kwa Kina -Förstärkningsinlärning (RL) ses som en av de grundläggande paradigmerna inom maskininlärning, bredvid övervakad inlärning och oövervakad inlärning. Medan vi i övervakad inlärning förlitar oss på dataset med kända utfall, bygger RL på **att lära sig genom att göra**. Till exempel, när vi först ser ett datorspel börjar vi spela, även utan att känna till reglerna, och snart kan vi förbättra våra färdigheter bara genom att spela och justera vårt beteende. +Kujifunza kuimarisha (RL) kunachukuliwa kama mojawapo ya mifumo ya msingi ya kujifunza kwa mashine, sambamba na kujifunza kwa kusimamiwa na kujifunza bila kusimamiwa. Wakati katika kujifunza kwa kusimamiwa tunategemea seti ya data yenye matokeo yanayojulikana, RL inategemea **kujifunza kwa kufanya**. Kwa mfano, tunapoona mchezo wa kompyuta kwa mara ya kwanza, tunaanza kucheza hata bila kujua sheria, na hivi karibuni tunaweza kuboresha ujuzi wetu kupitia mchakato wa kucheza na kurekebisha tabia zetu. -## [För- föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) +## [Jaribio la kabla ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/122) -För att utföra RL behöver vi: +Ili kufanya RL, tunahitaji: -* En **miljö** eller **simulator** som sätter reglerna för spelet. Vi ska kunna köra experimenten i simulatorn och observera resultaten. -* En **Belöningsfunktion**, som indikerar hur framgångsrikt vårt experiment var. I fallet med att lära sig spela ett datorspel skulle belöningen vara vår slutpoäng. +* **Mazingira** au **simulator** inayoweka sheria za mchezo. Tunapaswa kuwa na uwezo wa kuendesha majaribio kwenye simulator na kuchunguza matokeo. +* **Kazi ya Tuzo**, ambayo inaonyesha jinsi jaribio letu lilivyofanikiwa. Katika hali ya kujifunza kucheza mchezo wa kompyuta, tuzo inaweza kuwa alama yetu ya mwisho. -Baserat på belöningsfunktionen ska vi kunna justera vårt beteende och förbättra våra färdigheter, så att vi nästa gång spelar bättre. Den största skillnaden mellan andra typer av maskininlärning och RL är att vi i RL vanligtvis inte vet om vi vinner eller förlorar förrän vi har avslutat spelet. Därför kan vi inte säga om ett visst drag ensam är bra eller inte - vi får bara en belöning i slutet av spelet. +Kwa kuzingatia kazi ya tuzo, tunapaswa kuwa na uwezo wa kurekebisha tabia zetu na kuboresha ujuzi wetu, ili mara nyingine tunapocheza tufanye vizuri zaidi. Tofauti kuu kati ya aina nyingine za kujifunza kwa mashine na RL ni kwamba katika RL hatujui kama tumeshinda au tumeshindwa hadi mchezo umalizike. Kwa hivyo, hatuwezi kusema kama hatua fulani peke yake ni nzuri au la - tunapokea tuzo mwishoni mwa mchezo. -Under RL utför vi vanligtvis många experiment. Under varje experiment behöver vi balansera mellan att följa den optimala strategin som vi har lärt oss hittills (**utnyttjande**) och att utforska nya möjliga tillstånd (**utforskning**). +Wakati wa RL, mara nyingi tunafanya majaribio mengi. Katika kila jaribio, tunahitaji kusawazisha kati ya kufuata mkakati bora ambao tumeshajifunza (**kuchuma**) na kuchunguza hali mpya zinazowezekana (**kuchunguza**). ## OpenAI Gym -Ett utmärkt verktyg för RL är [OpenAI Gym](https://gym.openai.com/) - en **simuleringsmiljö**, som kan simulera många olika miljöer, från Atari-spel till fysiken bakom polbalansering. Det är en av de mest populära simuleringsmiljöerna för träning av förstärkningsinlärningsalgoritmer och underhålls av [OpenAI](https://openai.com/). +Zana nzuri kwa RL ni [OpenAI Gym](https://gym.openai.com/) - **mazingira ya simulizi**, ambayo yanaweza kuiga mazingira mengi tofauti kuanzia michezo ya Atari hadi fizikia ya kusawazisha nguzo. Ni mojawapo ya mazingira maarufu ya simulizi kwa mafunzo ya algorithimu za kujifunza kuimarisha, na inadumishwa na [OpenAI](https://openai.com/). -> **Notera**: Du kan se alla miljöer som finns tillgängliga från OpenAI Gym [här](https://gym.openai.com/envs/#classic_control). +> **Note**: Unaweza kuona mazingira yote yanayopatikana kutoka OpenAI Gym [hapa](https://gym.openai.com/envs/#classic_control). -## CartPole Balansering +## Kusawazisha CartPole -Du har förmodligen sett moderna balanseringsanordningar som *Segway* eller *Gyroscooters*. De kan automatiskt balansera genom att justera sina hjul som svar på en signal från en accelerometer eller gyroskop. I den här sektionen kommer vi att lära oss hur man löser ett liknande problem - att balansera en stång. Det liknar en situation när en cirkusartist behöver balansera en stång på sin hand - men denna stångbalansering sker endast i 1D. +Pengine nyote mmeona vifaa vya kisasa vya kusawazisha kama *Segway* au *Gyroscooters*. Vinaweza kusawazisha kiotomatiki kwa kurekebisha magurudumu yao kwa kujibu ishara kutoka kwa kipima kasi au gyroscope. Katika sehemu hii, tutajifunza jinsi ya kutatua tatizo kama hilo - kusawazisha nguzo. Ni sawa na hali ambapo mcheza sarakasi anahitaji kusawazisha nguzo kwenye mkono wake - lakini kusawazisha huku kunafanyika tu katika mwelekeo mmoja (1D). -En förenklad version av balansering är känd som **CartPole**-problemet. I cartpole-världen har vi en horisontell glidare som kan röra sig åt vänster eller höger, och målet är att balansera en vertikal stång ovanpå glidaren medan den rör sig. +Toleo rahisi la kusawazisha linajulikana kama tatizo la **CartPole**. Katika ulimwengu wa CartPole, tuna slider ya mlalo inayoweza kusogea kushoto au kulia, na lengo ni kusawazisha nguzo wima juu ya slider inaposogea. -en cartpole +a cartpole -För att skapa och använda denna miljö behöver vi ett par rader Python-kod: +Ili kuunda na kutumia mazingira haya, tunahitaji mistari michache ya msimbo wa Python: ```python import gym @@ -45,73 +54,73 @@ while not done: print(f"Total reward: {total_reward}") ``` -Varje miljö kan nås på exakt samma sätt: -* `env.reset` starts a new experiment -* `env.step` utför ett simuleringssteg. Den tar emot en **åtgärd** från **åtgärdsutrymmet** och returnerar en **observation** (från observationsutrymmet), samt en belöning och en avslutningsflagga. +Kila mazingira yanaweza kufikiwa kwa njia ile ile: +* `env.reset` huanzisha jaribio jipya +* `env.step` hufanya hatua ya simulizi. Inapokea **kitendo** kutoka kwa **eneo la vitendo**, na kurudisha **uchunguzi** (kutoka eneo la uchunguzi), pamoja na tuzo na bendera ya kumaliza. -I exemplet ovan utför vi en slumpmässig åtgärd vid varje steg, vilket är anledningen till att experimentets livslängd är mycket kort: +Katika mfano hapo juu tunafanya kitendo cha nasibu katika kila hatua, ndiyo maana maisha ya jaribio ni mafupi sana: -![icke-balanserande cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) -Målet med en RL-algoritm är att träna en modell - den så kallade **policyn** π - som kommer att returnera åtgärden som svar på ett givet tillstånd. Vi kan också betrakta policyn som probabilistisk, t.ex. för något tillstånd *s* och åtgärd *a* kommer den att returnera sannolikheten π(*a*|*s*) att vi bör ta *a* i tillstånd *s*. +Lengo la algorithimu ya RL ni kufundisha mfano - unaoitwa **sera** π - ambayo itarudisha kitendo kwa kujibu hali fulani. Tunaweza pia kuzingatia sera kuwa ya uwezekano, yaani kwa hali yoyote *s* na kitendo *a* itarudisha uwezekano π(*a*|*s*) kwamba tunapaswa kuchukua *a* katika hali *s*. -## Policy Gradient Algoritm +## Algorithimu ya Policy Gradients -Det mest uppenbara sättet att modellera en policy är att skapa ett neuralt nätverk som tar tillstånd som indata och returnerar motsvarande åtgärder (eller snarare sannolikheterna för alla åtgärder). På ett sätt skulle det likna en normal klassificeringsuppgift, med en stor skillnad - vi vet inte i förväg vilka åtgärder vi ska ta vid varje steg. +Njia ya wazi zaidi ya kuunda sera ni kwa kuunda mtandao wa neva ambao utachukua hali kama pembejeo, na kurudisha vitendo vinavyolingana (au badala yake uwezekano wa vitendo vyote). Kwa namna fulani, itakuwa sawa na kazi ya kawaida ya uainishaji, na tofauti kubwa - hatujui mapema ni vitendo gani tunavyopaswa kuchukua katika kila hatua. -Idén här är att uppskatta dessa sannolikheter. Vi bygger en vektor av **kumulativa belöningar** som visar vår totala belöning vid varje steg av experimentet. Vi tillämpar också **belöningsdiskontering** genom att multiplicera tidigare belöningar med en koefficient γ=0.99, för att minska betydelsen av tidigare belöningar. Sedan förstärker vi de steg längs experimentets väg som ger större belöningar. +Wazo hapa ni kukadiria uwezekano huo. Tunajenga vekta ya **tuzo zilizojumlishwa** ambayo inaonyesha tuzo yetu ya jumla katika kila hatua ya jaribio. Pia tunatumia **upunguzaji wa tuzo** kwa kuzidisha tuzo za awali na mgawo fulani γ=0.99, ili kupunguza umuhimu wa tuzo za awali. Kisha, tunaimarisha hatua hizo katika njia ya jaribio ambazo zinatoa tuzo kubwa zaidi. -> Lär dig mer om Policy Gradient-algoritmen och se den i aktion i [exempelnotebooken](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). +> Jifunze zaidi kuhusu algorithimu ya Policy Gradient na uione ikifanya kazi katika [notebook ya mfano](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). -## Actor-Critic Algoritm +## Algorithimu ya Actor-Critic -En förbättrad version av Policy Gradients-metoden kallas **Actor-Critic**. Huvudidén bakom den är att det neurala nätverket skulle tränas för att returnera två saker: +Toleo lililoboreshwa la mbinu ya Policy Gradients linaitwa **Actor-Critic**. Wazo kuu nyuma yake ni kwamba mtandao wa neva utafundishwa kurudisha mambo mawili: -* Policyn, som avgör vilken åtgärd som ska vidtas. Denna del kallas **aktör** -* Uppskattningen av den totala belöningen vi kan förvänta oss att få i detta tillstånd - denna del kallas **kritiker**. +* Sera, ambayo huamua ni kitendo gani cha kuchukua. Sehemu hii inaitwa **actor**. +* Makadirio ya tuzo ya jumla tunayoweza kutarajia kupata katika hali hii - sehemu hii inaitwa **critic**. -På ett sätt liknar denna arkitektur en [GAN](../../4-ComputerVision/10-GANs/README.md), där vi har två nätverk som tränas mot varandra. I actor-critic-modellen föreslår aktören den åtgärd vi behöver vidta, och kritikern försöker vara kritisk och uppskatta resultatet. Men vårt mål är att träna dessa nätverk i enhet. +Kwa namna fulani, usanifu huu unafanana na [GAN](../../4-ComputerVision/10-GANs/README.md), ambapo tuna mitandao miwili inayofundishwa dhidi ya kila mmoja. Katika mfano wa actor-critic, actor inapendekeza kitendo tunachohitaji kuchukua, na critic inajaribu kuwa mkosoaji na kukadiria matokeo. Hata hivyo, lengo letu ni kufundisha mitandao hiyo kwa pamoja. -Eftersom vi känner till både de verkliga kumulativa belöningarna och de resultat som returnerats av kritikern under experimentet, är det relativt enkelt att bygga en förlustfunktion som minimerar skillnaden mellan dem. Det skulle ge oss **kritikerförlust**. Vi kan beräkna **aktörförlust** genom att använda samma metod som i policy gradient-algoritmen. +Kwa sababu tunajua tuzo za jumla halisi na matokeo yanayorudishwa na critic wakati wa jaribio, ni rahisi kujenga kazi ya hasara ambayo itapunguza tofauti kati yao. Hiyo itatupa **hasara ya critic**. Tunaweza kuhesabu **hasara ya actor** kwa kutumia mbinu ile ile kama katika algorithimu ya Policy Gradient. -Efter att ha kört en av dessa algoritmer kan vi förvänta oss att vår CartPole beter sig så här: +Baada ya kuendesha mojawapo ya algorithimu hizi, tunaweza kutarajia CartPole yetu itende kama hii: -![en balanserande cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) -## ✍️ Övningar: Policy Gradients och Actor-Critic RL +## ✍️ Mazoezi: Policy Gradients na Actor-Critic RL -Fortsätt din inlärning i följande notebooks: +Endelea kujifunza katika notebooks zifuatazo: -* [RL i TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) -* [RL i PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) +* [RL katika TensorFlow](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb) +* [RL katika PyTorch](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-PyTorch.ipynb) -## Andra RL-uppgifter +## Majukumu Mengine ya RL -Förstärkningsinlärning är idag ett snabbt växande forskningsområde. Några intressanta exempel på förstärkningsinlärning är: +Kujifunza kuimarisha siku hizi ni uwanja unaokua kwa kasi wa utafiti. Baadhi ya mifano ya kuvutia ya kujifunza kuimarisha ni: -* Att lära en dator att spela **Atari-spel**. Den utmanande delen av detta problem är att vi inte har ett enkelt tillstånd representerat som en vektor, utan snarare en skärmdump - och vi behöver använda CNN för att konvertera denna skärmbild till en funktionsvektor, eller för att extrahera belöningsinformation. Atari-spel finns tillgängliga i Gym. -* Att lära en dator att spela brädspel, såsom Schack och Go. Nyligen har toppmoderna program som **Alpha Zero** tränats från grunden av två agenter som spelar mot varandra och förbättras vid varje steg. -* Inom industrin används RL för att skapa kontrollsystem från simulering. En tjänst som heter [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) är speciellt utformad för det. +* Kufundisha kompyuta kucheza **Michezo ya Atari**. Sehemu ngumu katika tatizo hili ni kwamba hatuna hali rahisi inayowakilishwa kama vekta, bali picha ya skrini - na tunahitaji kutumia CNN kubadilisha picha hii ya skrini kuwa vekta ya vipengele, au kutoa taarifa za tuzo. Michezo ya Atari inapatikana kwenye Gym. +* Kufundisha kompyuta kucheza michezo ya bodi, kama vile Chess na Go. Hivi karibuni programu za hali ya juu kama **Alpha Zero** zilifundishwa kutoka mwanzo na mawakala wawili wakicheza dhidi ya kila mmoja, na kuboresha katika kila hatua. +* Katika viwanda, RL inatumika kuunda mifumo ya udhibiti kutoka kwa simulizi. Huduma inayoitwa [Bonsai](https://azure.microsoft.com/services/project-bonsai/?WT.mc_id=academic-77998-cacaste) imeundwa mahsusi kwa ajili ya hilo. -## Slutsats +## Hitimisho -Vi har nu lärt oss hur man tränar agenter för att uppnå bra resultat genom att bara ge dem en belöningsfunktion som definierar det önskade tillståndet för spelet, och genom att ge dem möjlighet att intelligent utforska sökområdet. Vi har framgångsrikt prövat två algoritmer och uppnått ett bra resultat på en relativt kort tid. Men detta är bara början på din resa in i RL, och du bör definitivt överväga att ta en separat kurs om du vill gräva djupare. +Sasa tumejifunza jinsi ya kufundisha mawakala kufanikisha matokeo mazuri kwa kuwapa tu kazi ya tuzo inayofafanua hali inayotakiwa ya mchezo, na kwa kuwapa fursa ya kuchunguza kwa akili nafasi ya utafutaji. Tumefanikiwa kujaribu algorithimu mbili, na kufanikisha matokeo mazuri kwa muda mfupi. Hata hivyo, huu ni mwanzo tu wa safari yako katika RL, na unapaswa kuzingatia kuchukua kozi tofauti ikiwa unataka kuchimba zaidi. -## 🚀 Utmaning +## 🚀 Changamoto -Utforska de tillämpningar som listas i avsnittet "Andra RL-uppgifter" och försök att implementera en! +Chunguza matumizi yaliyoorodheshwa katika sehemu ya 'Majukumu Mengine ya RL' na jaribu kutekeleza moja! -## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) +## [Jaribio la baada ya somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/222) -## Granskning & Självstudie +## Mapitio na Kujisomea -Lär dig mer om klassisk förstärkningsinlärning i vår [Maskininlärning för Nybörjare Läroplan](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). +Jifunze zaidi kuhusu kujifunza kuimarisha kwa njia ya kawaida katika [Mtaala wetu wa Kujifunza kwa Mashine kwa Kompyuta](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). -Titta på [denna fantastiska video](https://www.youtube.com/watch?v=qv6UVOQ0F44) som handlar om hur en dator kan lära sig att spela Super Mario. +Tazama [video hii nzuri](https://www.youtube.com/watch?v=qv6UVOQ0F44) inayozungumzia jinsi kompyuta inavyoweza kujifunza kucheza Super Mario. -## Uppgift: [Träna en Mountain Car](lab/README.md) +## Kazi: [Fundisha Gari la Mlima](lab/README.md) -Ditt mål under denna uppgift skulle vara att träna en annan Gym-miljö - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). +Lengo lako wakati wa kazi hii litakuwa kufundisha mazingira tofauti ya Gym - [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/). -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md b/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md index 20458e87..4eb2e1ab 100644 --- a/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md +++ b/translations/sw/lessons/6-Other/22-DeepRL/lab/README.md @@ -1,22 +1,31 @@ -# Träna Mountain Car för att Fly + +# Kufundisha Gari la Mlima Kutoroka -Laborationsuppgift från [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). +Kazi ya Maabara kutoka [Mtaala wa AI kwa Kompyuta](https://github.com/microsoft/ai-for-beginners). -## Uppgift +## Kazi -Ditt mål är att träna RL-agenten att kontrollera [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) i OpenAI-miljön. Du är tränad på data fram till oktober 2023. +Lengo lako ni kufundisha wakala wa RL kudhibiti [Mountain Car](https://www.gymlibrary.ml/environments/classic_control/mountain_car/) katika Mazingira ya OpenAI. -## Miljön +## Mazingira -Mountain Car-miljön består av en bil som är fast i en dal. Ditt mål är att hoppa ut ur dalen och nå flaggan. De åtgärder du kan utföra är att accelerera åt vänster, åt höger eller göra ingenting. Du kan observera bilens position längs x-axeln och hastigheten. +Mazingira ya Mountain Car yanajumuisha gari lililokwama ndani ya bonde. Lengo lako ni kuruka nje ya bonde na kufikia bendera. Hatua unazoweza kuchukua ni kuharakisha kwenda kushoto, kwenda kulia, au kutofanya chochote. Unaweza kuona nafasi ya gari kwenye mhimili wa x, na kasi. -## Starta Anteckningsbok +## Kuanza Daftari -Börja labben genom att öppna [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) +Anza maabara kwa kufungua [MountainCar.ipynb](../../../../../../lessons/6-Other/22-DeepRL/lab/MountainCar.ipynb) -## Sammanfattning +## Ujumbe wa Kujifunza -Du bör lära dig under denna labb att anpassa RL-algoritmer till en ny miljö ofta är ganska enkelt, eftersom OpenAI Gym har samma gränssnitt för alla miljöer, och algoritmerna i sig beror inte i stor utsträckning på miljöns natur. Du kan till och med omstrukturera Python-koden på ett sådant sätt att du kan skicka vilken miljö som helst till RL-algoritmen som en parameter. +Unapaswa kujifunza katika maabara hii kwamba kutumia algoriti za RL kwenye mazingira mapya mara nyingi ni rahisi, kwa sababu OpenAI Gym ina kiolesura sawa kwa mazingira yote, na algoriti kwa ujumla hazitegemei sana asili ya mazingira. Unaweza hata kupanga upya msimbo wa Python kwa njia ambayo unaweza kupitisha mazingira yoyote kwa algoriti ya RL kama parameter. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi tar inget ansvar för missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md b/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md index a0c04f22..ee2260e7 100644 --- a/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md +++ b/translations/sw/lessons/6-Other/23-MultiagentSystems/README.md @@ -1,38 +1,47 @@ -# Multi-Agent System + +# Mfumo wa Wakala Wengi -Ett av de möjliga sätten att uppnå intelligens är den så kallade **emergenta** (eller **synergetiska**) metoden, som bygger på det faktum att det kombinerade beteendet hos många relativt enkla agenter kan resultera i ett mer komplext (eller intelligent) beteende hos systemet som helhet. Teoretiskt sett baseras detta på principerna för [Kollektiv Intelligens](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentism](https://en.wikipedia.org/wiki/Global_brain) och [Evolutionär Cybernetik](https://en.wikipedia.org/wiki/Global_brain), som säger att högre nivåsystem får någon form av mervärde när de kombineras på rätt sätt från lägre nivåsystem (den så kallade *metasystemövergångsprincipen*). +Njia mojawapo ya kufanikisha akili ni mbinu inayoitwa **inayojitokeza** (au **synergetic**), ambayo inategemea ukweli kwamba tabia ya pamoja ya mawakala wengi rahisi inaweza kusababisha tabia ya jumla ya mfumo kuwa ngumu zaidi (au yenye akili). Kimsingi, hii inategemea kanuni za [Akili ya Pamoja](https://en.wikipedia.org/wiki/Collective_intelligence), [Emergentism](https://en.wikipedia.org/wiki/Global_brain) na [Cybernetics ya Mageuzi](https://en.wikipedia.org/wiki/Global_brain), ambazo zinasema kwamba mifumo ya kiwango cha juu hupata aina fulani ya thamani ya ziada inapounganishwa vizuri kutoka kwa mifumo ya kiwango cha chini (kanuni inayoitwa *mpito wa metasystem*). -## [För-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) +## [Jaribio la Kabla ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/123) -Riktningen för **Multi-Agent System** har uppkommit inom AI på 1990-talet som ett svar på tillväxten av Internet och distribuerade system. En av de klassiska AI-läroböckerna, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), fokuserar på synsättet av klassisk AI ur perspektivet av multi-agent system. +Mwelekeo wa **Mfumo wa Wakala Wengi** ulianza kujitokeza katika AI miaka ya 1990 kama jibu la ukuaji wa mtandao na mifumo iliyosambazwa. Mojawapo ya vitabu vya kiada vya AI vya kawaida, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), linaangazia mtazamo wa AI ya kawaida kutoka kwa mtazamo wa mifumo ya wakala wengi. -Centralt för multi-agent metoden är begreppet **Agent** - en enhet som lever i en viss **miljö**, som den kan uppfatta och agera på. Detta är en mycket bred definition, och det kan finnas många olika typer och klassificeringar av agenter: +Kiini cha mbinu ya wakala wengi ni dhana ya **Wakala** - chombo kinachoishi katika **mazingira** fulani, ambacho kinaweza kutambua na kuchukua hatua juu yake. Hii ni tafsiri pana sana, na kunaweza kuwa na aina nyingi na uainishaji wa mawakala: -* Efter deras förmåga att resonera: - - **Reaktiva** agenter har vanligtvis ett enkelt begär-svar-beteende - - **Deliberativa** agenter använder någon form av logiskt resonemang och/eller planeringsförmåga -* Efter platsen där agenten kör sin kod: - - **Statisk** agenter arbetar på en dedikerad nätverksnod - - **Mobila** agenter kan flytta sin kod mellan nätverksnoder -* Efter deras beteende: - - **Passiva agenter** har inga specifika mål. Sådana agenter kan reagera på externa stimuli, men kommer inte att initiera några handlingar själva. - - **Aktiva agenter** har vissa mål som de strävar efter - - **Kognitiva agenter** involverar komplex planering och resonemang +* Kwa uwezo wao wa kufikiri: + - Mawakala **Wenye Majibu** mara nyingi huwa na tabia rahisi ya ombi-jibu. + - Mawakala **Wenye Kufikiri** hutumia aina fulani ya kufikiri kimantiki na/au uwezo wa kupanga. +* Kwa mahali ambapo wakala huendesha msimbo wake: + - Mawakala **Wenye Kudumu** hufanya kazi kwenye nodi maalum ya mtandao. + - Mawakala **Wenye Kuhama** wanaweza kuhamisha msimbo wao kati ya nodi za mtandao. +* Kwa tabia yao: + - Mawakala **Wenye Uzembe** hawana malengo maalum. Mawakala kama hao wanaweza kujibu vichocheo vya nje, lakini hawataanzisha vitendo vyovyote wenyewe. + - Mawakala **Wenye Shughuli** wana malengo fulani wanayoyafuatilia. + - Mawakala **Wenye Akili** wanahusisha upangaji na kufikiri kwa kina. -Multi-agent system används idag i ett antal tillämpningar: +Mifumo ya wakala wengi kwa sasa inatumika katika programu kadhaa: -* Inom spel, många icke-spelarkaraktärer använder någon form av AI, och kan betraktas som intelligenta agenter -* Inom videoproduktion, rendering av komplexa 3D-scener som involverar folkmassor görs vanligtvis med hjälp av multi-agent simulering -* Inom systemmodellering används multi-agent metoden för att simulera beteendet hos en komplex modell. Till exempel har multi-agent metoden framgångsrikt använts för att förutsäga spridningen av COVID-19 sjukdomen världen över. En liknande metod kan användas för att modellera trafik i staden, och se hur den reagerar på förändringar i trafikregler. -* I komplexa automationssystem kan varje enhet agera som en oberoende agent, vilket gör hela systemet mindre monolitiskt och mer robust. +* Katika michezo, wahusika wengi wasio wachezaji hutumia aina fulani ya AI, na wanaweza kuchukuliwa kuwa mawakala wenye akili. +* Katika utengenezaji wa video, uundaji wa mandhari changamano za 3D zinazohusisha umati mara nyingi hufanywa kwa kutumia simulizi ya wakala wengi. +* Katika uundaji wa mifumo, mbinu ya wakala wengi hutumika kuiga tabia ya mfano changamano. Kwa mfano, mbinu ya wakala wengi imetumika kwa mafanikio kutabiri kuenea kwa ugonjwa wa COVID-19 duniani kote. Mbinu kama hiyo inaweza kutumika kuiga trafiki katika jiji, na kuona jinsi inavyoitikia mabadiliko ya sheria za trafiki. +* Katika mifumo changamano ya kiotomatiki, kila kifaa kinaweza kufanya kazi kama wakala huru, ambayo hufanya mfumo mzima kuwa si wa monolith na kuwa thabiti zaidi. -Vi kommer inte att spendera mycket tid på att gå djupt in i multi-agent system, men vi kommer att överväga ett exempel på **Multi-Agent Modellering**. +Hatutatumia muda mwingi kuchunguza kwa kina mifumo ya wakala wengi, lakini tutazingatia mfano mmoja wa **Uundaji wa Wakala Wengi**. ## NetLogo -[NetLogo](https://ccl.northwestern.edu/netlogo/) är en miljö för multi-agent modellering baserad på en modifierad version av [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)) programmeringsspråket. Detta språk utvecklades för att lära ut programmeringskoncept till barn, och det låter dig styra en agent kallad **sköldpadda**, som kan röra sig och lämna ett spår bakom sig. Detta möjliggör skapandet av komplexa geometriska figurer, vilket är ett mycket visuellt sätt att förstå beteendet hos en agent. +[NetLogo](https://ccl.northwestern.edu/netlogo/) ni mazingira ya uundaji wa wakala wengi yanayotegemea toleo lililorekebishwa la lugha ya programu ya [Logo](https://en.wikipedia.org/wiki/Logo_(programming_language)). Lugha hii ilitengenezwa kwa ajili ya kufundisha dhana za programu kwa watoto, na inakuwezesha kudhibiti wakala anayeitwa **kobe**, ambaye anaweza kusonga, akiacha alama nyuma. Hii inaruhusu kuunda maumbo changamano ya kijiometri, ambayo ni njia ya kuona tabia ya wakala. -I NetLogo kan vi skapa många sköldpaddor genom att använda kommandot `create-turtles`. Vi kan sedan befalla alla sköldpaddor att utföra vissa åtgärder (i exemplet nedan - mer 10 steg framåt): +Katika NetLogo, tunaweza kuunda kobe wengi kwa kutumia amri ya `create-turtles`. Tunaweza kisha kuamuru kobe wote kufanya vitendo fulani (katika mfano hapa chini - kusonga mbele kwa pointi 10): ``` create-turtles 10 @@ -41,39 +50,39 @@ ask turtles [ ] ``` -Självklart är det inte intressant när alla sköldpaddor gör samma sak, så vi kan `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` är namnet på en ras, och vi behöver specificera både singular och plural ord, eftersom olika kommandon använder olika former för tydlighet. +Bila shaka, si jambo la kuvutia wakati kobe wote wanafanya jambo lile lile, kwa hivyo tunaweza `ask` vikundi vya kobe, kwa mfano wale walio karibu na eneo fulani. Tunaweza pia kuunda kobe wa *aina* tofauti kwa kutumia amri ya `breed [cats cat]`. Hapa `cat` ni jina la aina, na tunahitaji kutaja neno la umoja na wingi, kwa sababu amri tofauti hutumia aina tofauti kwa uwazi. -> ✅ Vi kommer inte att gå in på att lära oss NetLogo-språket i sig - du kan besöka den briljanta [Beginner's Interactive NetLogo Dictionary](https://ccl.northwestern.edu/netlogo/bind/) resursen om du är intresserad av att lära dig mer. +> ✅ Hatutajifunza lugha ya NetLogo yenyewe - unaweza kutembelea rasilimali bora ya [Kamusi ya Kielekezi ya Kuanza ya NetLogo](https://ccl.northwestern.edu/netlogo/bind/) ikiwa una nia ya kujifunza zaidi. -Du kan [ladda ner](https://ccl.northwestern.edu/netlogo/download.shtml) och installera NetLogo för att prova det. +Unaweza [kupakua](https://ccl.northwestern.edu/netlogo/download.shtml) na kusakinisha NetLogo ili kuijaribu. -### Modeller Bibliotek +### Maktaba ya Miundo -En fantastisk sak med NetLogo är att det innehåller ett bibliotek av fungerande modeller som du kan prova. Gå till **Fil → Modeller Bibliotek**, och du har många kategorier av modeller att välja mellan. +Jambo zuri kuhusu NetLogo ni kwamba ina maktaba ya miundo inayofanya kazi ambayo unaweza kuijaribu. Nenda kwa **Faili → Maktaba ya Miundo**, na una kategoria nyingi za miundo za kuchagua. -NetLogo Modeller Bibliotek +Maktaba ya Miundo ya NetLogo -> En skärmdump av modeller biblioteket av Dmitry Soshnikov +> Picha ya skrini ya maktaba ya miundo na Dmitry Soshnikov -Du kan öppna en av modellerna, till exempel **Biologi → Flocking**. +Unaweza kufungua mojawapo ya miundo, kwa mfano **Biolojia → Flocking**. -### Huvudprinciper +### Kanuni Kuu -Efter att ha öppnat modellen tas du till huvudskärmen för NetLogo. Här är en exempelmodell som beskriver populationen av vargar och får, givet ändliga resurser (gräs). +Baada ya kufungua mfano, unapelekwa kwenye skrini kuu ya NetLogo. Hapa kuna mfano wa mfano unaoelezea idadi ya mbwa mwitu na kondoo, ikizingatiwa rasilimali finyu (nyasi). -![NetLogo Huvudskärm](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png) +![Skrini Kuu ya NetLogo](../../../../../translated_images/NetLogo-Main.32653711ec1a01b3cab22ec0b148e64193d0b979b055285bef329d5e3d6958c5.sw.png) -> Skärmdump av Dmitry Soshnikov +> Picha ya skrini na Dmitry Soshnikov -På den här skärmen kan du se: +Kwenye skrini hii, unaweza kuona: -* **Gränssnittet** som innehåller: - - Huvudfältet, där alla agenter lever - - Olika kontroller: knappar, reglage, etc. - - Grafer som du kan använda för att visa parametrar för simuleringen -* **Kod** fliken som innehåller redigeraren, där du kan skriva NetLogo-program +* Sehemu ya **Kiolesura** ambayo ina: + - Uwanja mkuu, ambapo mawakala wote wanaishi + - Vidhibiti tofauti: vifungo, slaidi, n.k. + - Grafu unazoweza kutumia kuonyesha vigezo vya simulizi +* Kichupo cha **Msimbo** ambacho kina mhariri, ambapo unaweza kuandika programu ya NetLogo -I de flesta fall skulle gränssnittet ha en **Setup**-knapp, som initierar simuleringstillståndet, och en **Go**-knapp som startar körningen. Dessa hanteras av motsvarande hanterare i koden som ser ut så här: +Katika hali nyingi, kiolesura kitakuwa na kifungo cha **Setup**, ambacho huanzisha hali ya simulizi, na kifungo cha **Go** kinachoanzisha utekelezaji. Hizi hushughulikiwa na vishughulikiaji vinavyolingana katika msimbo unaoonekana kama huu: ``` to go [ @@ -81,75 +90,75 @@ to go [ ] ``` -NetLogos värld består av följande objekt: +Ulimwengu wa NetLogo unajumuisha vitu vifuatavyo: -* **Agenter** (sköldpaddor) som kan röra sig över fältet och göra något. Du kommanderar agenter genom att använda `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` för att göra något. -* **Observer** är en unik agent som kontrollerar världen. Alla knapphanterare utförs i *observatörsläge*. +* **Mawakala** (kobe) ambao wanaweza kusonga kwenye uwanja na kufanya jambo fulani. Unawaamuru mawakala kwa kutumia sintaksia ya `ask turtles [...]`, na msimbo kwenye mabano unatekelezwa na mawakala wote katika *hali ya kobe*. +* **Sehemu** ni maeneo ya mraba ya uwanja, ambapo mawakala wanaishi. Unaweza kurejelea mawakala wote kwenye sehemu moja, au unaweza kubadilisha rangi za sehemu na mali nyingine. Unaweza pia `ask patches` kufanya jambo fulani. +* **Mwangalizi** ni wakala wa kipekee anayesimamia ulimwengu. Vishughulikiaji vyote vya vifungo hutekelezwa katika *hali ya mwangalizi*. -> ✅ Skönheten med en multi-agent miljö är att koden som körs i sköldpaddsläge eller i patchläge utförs samtidigt av alla agenter parallellt. Således, genom att skriva lite kod och programmera beteendet hos enskilda agenter, kan du skapa ett komplext beteende för simuleringssystemet som helhet. +> ✅ Uzuri wa mazingira ya wakala wengi ni kwamba msimbo unaoendeshwa katika hali ya kobe au hali ya sehemu unatekelezwa kwa wakati mmoja na mawakala wote kwa sambamba. Kwa hivyo, kwa kuandika msimbo kidogo na kupanga tabia ya wakala mmoja, unaweza kuunda tabia changamano ya mfumo wa simulizi kwa ujumla. ### Flocking -Som ett exempel på multi-agent beteende, låt oss överväga **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking är ett komplext mönster som är mycket likt hur fågelflockar flyger. När man ser dem flyga kan man tänka att de följer någon slags kollektiv algoritm, eller att de besitter någon form av *kollektiv intelligens*. Men detta komplexa beteende uppstår när varje individuell agent (i detta fall, en *fågel*) endast observerar några andra agenter på kort avstånd från sig, och följer tre enkla regler: +Kama mfano wa tabia ya wakala wengi, hebu tuzingatie **[Flocking](https://en.wikipedia.org/wiki/Flocking_(behavior))**. Flocking ni muundo changamano unaofanana sana na jinsi makundi ya ndege huruka. Ukiwaangalia wakiruka unaweza kufikiria kwamba wanafuata aina fulani ya algoriti ya pamoja, au kwamba wanamiliki aina fulani ya *akili ya pamoja*. Hata hivyo, tabia hii changamano hutokea wakati kila wakala mmoja (katika kesi hii, *ndege*) anapoangalia mawakala wengine kwa umbali mfupi kutoka kwake, na kufuata sheria tatu rahisi: -* **Justering** - den styr mot den genomsnittliga riktningen av grannagenter -* **Kohesion** - den försöker styra mot den genomsnittliga positionen av grannar (*långdistansattraktion*) -* **Separation** - när den kommer för nära andra fåglar, försöker den röra sig bort (*kortdistansrepulsion*) +* **Ulinganifu** - inajielekeza kuelekea mwelekeo wa wastani wa mawakala wa jirani. +* **Ushirikiano** - inajaribu kuelekea nafasi ya wastani ya majirani (*mvuto wa masafa marefu*). +* **Kutengana** - inapokaribia sana ndege wengine, inajaribu kujiondoa (*kushinikiza kwa masafa mafupi*). -Du kan köra flockningsexemplet och observera beteendet. Du kan också justera parametrar, såsom *grad av separation*, eller *synfältet*, som definierar hur långt varje fågel kan se. Observera att om du minskar synfältet till 0, blir alla fåglar blinda, och flockning stoppar. Om du minskar separationen till 0, samlas alla fåglar i en rak linje. +Unaweza kuendesha mfano wa flocking na kuangalia tabia. Unaweza pia kurekebisha vigezo, kama vile *kiwango cha kutengana*, au *masafa ya kuona*, ambayo yanafafanua jinsi kila ndege anavyoweza kuona mbali. Kumbuka kwamba ukipunguza masafa ya kuona hadi 0, ndege wote wanakuwa vipofu, na flocking inakoma. Ukipunguza kutengana hadi 0, ndege wote hukusanyika katika mstari ulionyooka. -> ✅ Byt till **Kod** fliken och se var de tre reglerna för flockning (justering, kohesion och separation) implementeras i koden. Observera hur vi endast refererar till de agenter som är i sikte. +> ✅ Badilisha hadi kichupo cha **Msimbo** na uone mahali ambapo sheria tatu za flocking (ulinganifu, ushirikiano na kutengana) zinatekelezwa katika msimbo. Kumbuka jinsi tunavyorejelea tu mawakala walio katika upeo wa macho. -### Andra modeller att se +### Miundo Mingine ya Kuona -Det finns några fler intressanta modeller som du kan experimentera med: +Kuna miundo mingine ya kuvutia ambayo unaweza kuijaribu: -* **Konst → Fyrverkerier** visar hur ett fyrverkeri kan betraktas som ett kollektivt beteende av individuella eldstrålar -* **Samhällsvetenskap → Trafik Grundläggande** och **Samhällsvetenskap → Trafik Rutnät** visar modellen för stads trafik i 1D och 2D-rutnät med eller utan trafikljus. Varje bil i simuleringen följer följande regler: - - Om utrymmet framför den är tomt - accelerera (upp till en viss maxhastighet) - - Om den ser ett hinder framför - bromsa (och du kan justera hur långt en förare kan se) -* **Samhällsvetenskap → Fest** visar hur människor grupperar sig under en cocktailfest. Du kan hitta kombinationen av parametrar som leder till den snabbaste ökningen av gruppens lycka. +* **Sanaa → Fireworks** inaonyesha jinsi fataki inaweza kuchukuliwa kuwa tabia ya pamoja ya mito ya moto ya kibinafsi. +* **Sayansi ya Jamii → Traffic Basic** na **Sayansi ya Jamii → Traffic Grid** zinaonyesha mfano wa trafiki ya jiji katika Gridi ya 1D na 2D yenye au bila taa za trafiki. Kila gari katika simulizi hufuata sheria zifuatazo: + - Ikiwa nafasi mbele yake iko wazi - ongeza kasi (hadi kasi fulani ya juu). + - Ikiwa linaona kikwazo mbele - punguza kasi (na unaweza kurekebisha jinsi dereva anavyoweza kuona mbali). +* **Sayansi ya Jamii → Party** inaonyesha jinsi watu wanavyokusanyika pamoja wakati wa sherehe ya vinywaji. Unaweza kupata mchanganyiko wa vigezo vinavyopelekea ongezeko la haraka la furaha ya kikundi. -Som du kan se från dessa exempel kan multi-agent simuleringar vara ett mycket användbart sätt att förstå beteendet hos ett komplext system bestående av individer som följer samma eller liknande logik. Det kan också användas för att styra virtuella agenter, såsom [NPCs](https://en.wikipedia.org/wiki/NPC) i datorspel, eller agenter i 3D-animerade världar. +Kama unavyoona kutoka kwa mifano hii, simulizi za wakala wengi zinaweza kuwa njia muhimu ya kuelewa tabia ya mfumo changamano unaojumuisha watu binafsi wanaofuata mantiki sawa au inayofanana. Pia inaweza kutumika kudhibiti mawakala wa kawaida, kama [NPCs](https://en.wikipedia.org/wiki/NPC) katika michezo ya kompyuta, au mawakala katika ulimwengu wa 3D uliotengenezwa. -## Deliberativa Agenter +## Mawakala Wenye Kufikiri -Agenterna som beskrivs ovan är mycket enkla, reaktionära på förändringar i miljön med hjälp av någon slags algoritm. Som sådana är de **reaktiva agenter**. Men ibland kan agenter resonera och planera sina handlingar, i vilket fall de kallas **deliberativa**. +Mawakala waliotajwa hapo juu ni rahisi sana, wakijibu mabadiliko katika mazingira kwa kutumia aina fulani ya algoriti. Kwa hivyo wao ni **mawakala wenye majibu**. Hata hivyo, wakati mwingine mawakala wanaweza kufikiri na kupanga vitendo vyao, ambapo wanaitwa **wenye kufikiri**. -Ett typiskt exempel skulle vara en personlig agent som får en instruktion från en människa att boka en semesterresa. Anta att det finns många agenter som lever på internet, som kan hjälpa den. Den bör då kontakta andra agenter för att se vilka flyg som är tillgängliga, vad hotellpriserna är för olika datum, och försöka förhandla fram det bästa priset. När semesterplanen är klar och bekräftad av ägaren, kan den gå vidare med bokningen. +Mfano wa kawaida ungekuwa wakala wa kibinafsi anayepokea maagizo kutoka kwa binadamu ya kuweka nafasi ya ziara ya likizo. Fikiria kwamba kuna mawakala wengi wanaoishi kwenye mtandao, ambao wanaweza kumsaidia. Inapaswa kisha kuwasiliana na mawakala wengine kuona ni safari gani zinapatikana, bei za hoteli kwa tarehe tofauti, na kujaribu kujadiliana bei bora. Mpango wa likizo unapokamilika na kuthibitishwa na mmiliki, inaweza kuendelea na uhifadhi. -För att göra detta behöver agenterna **kommunicera**. För framgångsrik kommunikation behöver de: +Ili kufanya hivyo, mawakala wanahitaji **kuwasiliana**. Kwa mawasiliano yenye mafanikio wanahitaji: -* Några **standard språk för att utbyta kunskap**, såsom [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) och [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Dessa språk är utformade baserat på [Speech Act theory](https://en.wikipedia.org/wiki/Speech_act). -* Dessa språk bör också inkludera några **protokoll för förhandlingar**, baserat på olika **auktionstyper**. -* En **gemensam ontologi** att använda, så att de hänvisar till samma begrepp och känner till deras semantik -* Ett sätt att **upptäcka** vad olika agenter kan göra, också baserat på någon form av ontologi +* Baadhi ya **lugha za kawaida za kubadilishana maarifa**, kama [Knowledge Interchange Format](https://en.wikipedia.org/wiki/Knowledge_Interchange_Format) (KIF) na [Knowledge Query and Manipulation Language](https://en.wikipedia.org/wiki/Knowledge_Query_and_Manipulation_Language) (KQML). Lugha hizi zimetengenezwa kulingana na [nadharia ya Matendo ya Hotuba](https://en.wikipedia.org/wiki/Speech_act). +* Lugha hizo zinapaswa pia kujumuisha baadhi ya **taratibu za mazungumzo**, kulingana na aina tofauti za **mnada**. +* **Ontolojia ya kawaida** ya kutumia, ili waweze kurejelea dhana zile zile wakijua maana yake. +* Njia ya **kugundua** kile mawakala tofauti wanaweza kufanya, pia kulingana na aina fulani ya ontolojia. -Deliberativa agenter är mycket mer komplexa än reaktiva, eftersom de inte bara reagerar på förändringar i miljön, utan också bör kunna *initiera* handlingar. En av de föreslagna arkitekturerna för deliberativa agenter är den så kallade Belief-Desire-Intention (BDI) agenten: +Mawakala wenye kufikiri ni changamano zaidi kuliko wenye majibu, kwa sababu hawajibu tu mabadiliko katika mazingira, wanapaswa pia kuwa na uwezo wa *kuanzisha* vitendo. Mojawapo ya usanifu uliopendekezwa kwa mawakala wenye kufikiri ni wakala wa Imani-Tamaa-Nia (BDI): -* **Tro** bildar en uppsättning kunskap om agentens miljö. Det kan struktureras som en kunskapsbas eller uppsättning regler som en agent kan tillämpa på en specifik situation i miljön. -* **Önskningar** definierar vad en agent vill göra, dvs. dess mål. Till exempel, målet för den personliga assistentagenten ovan är att boka en resa, och målet för en hotellagent är att maximera vinsten. -* **Avsikter** är specifika handlingar som en agent planerar att uppnå sina mål. Handlingar förändrar vanligtvis miljön och orsakar kommunikation med andra agenter. +* **Imani** huunda seti ya maarifa kuhusu mazingira ya wakala. Inaweza kuwa na muundo kama msingi wa maarifa au seti ya sheria ambazo wakala anaweza kutumia kwa hali maalum katika mazingira. +* **Tamaa** hufafanua kile wakala anataka kufanya, yaani malengo yake. Kwa mfano, lengo la wakala msaidizi wa kibinafsi hapo juu ni kuweka nafasi ya ziara, na lengo la wakala wa hoteli ni kuongeza faida. +* **Nia** ni vitendo maalum ambavyo wakala anapanga kufanikisha malengo yake. Vitendo mara nyingi hubadilisha mazingira na kusababisha mawasiliano na mawakala wengine. -Det finns några plattformar tillgängliga för att bygga multi-agent system, såsom [JADE](https://jade.tilab.com/). [Denna artikel](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) innehåller en översikt över multi-agent plattformar, tillsammans med en kort historia om multi-agent system och deras olika användningsscenarier. +Kuna majukwaa kadhaa yanayopatikana kwa ajili ya kujenga mifumo ya wakala wengi, kama [JADE](https://jade.tilab.com/). [Karatasi hii](https://arxiv.org/ftp/arxiv/papers/2007/2007.08961.pdf) ina mapitio ya majukwaa ya wakala wengi, pamoja na historia fupi ya mifumo ya wakala wengi na hali zake tofauti za matumizi. -## Slutsats +## Hitimisho -Multi-Agent system kan ta mycket olika former och användas i många olika tillämpningar. -De tenderar alla att fokusera på det enklare beteendet hos en individuell agent och uppnå ett mer komplext beteende hos hela systemet på grund av **synergetisk effekt**. +Mifumo ya Wakala Wengi inaweza kuchukua aina tofauti sana na kutumika katika programu nyingi tofauti. +Yote huwa na mwelekeo wa tabia rahisi ya wakala mmoja, na kufanikisha tabia changamano ya mfumo mzima kutokana na **athari ya synergetic**. -## 🚀 Utmaning +## 🚀 Changamoto -Ta denna lektion till verkligheten och försök att konceptualisera ett multi-agent system som kan lösa ett problem. Vad skulle ett multi-agent system behöva göra för att optimera en skolbussrutt? Hur skulle det kunna fungera i ett bageri? +Chukua somo hili katika ulimwengu halisi na jaribu kufikiria mfumo wa wakala wengi ambao unaweza kutatua tatizo. Kwa mfano, mfumo wa wakala wengi ungehitaji kufanya nini ili kuboresha njia ya basi la shule? Unaweza kufanya kazi vipi katika mkate? -## [Efter-föreläsningsquiz](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) +## [Jaribio la Baada ya Somo](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/223) -## Granskning & Självstudie +## Mapitio na Kujifunza Binafsi -Granska användningen av denna typ av system inom industrin. Välj ett område som tillverkning eller videospelindustrin och upptäck hur multi-agent system kan användas för att lösa unika problem. +Pitia matumizi ya aina hii ya mfumo katika sekta. Chagua uwanja kama utengenezaji au sekta ya michezo ya video na gundua jinsi mifumo ya wakala wengi inaweza kutumika kutatua matatizo ya kipekee. -## [NetLogo Uppgift](assignment.md) +## [Kazi ya NetLogo](assignment.md) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md index 07a85227..9c1e0784 100644 --- a/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md +++ b/translations/sw/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -1,8 +1,17 @@ -# NetLogo Uppgift + +# Kazi ya NetLogo -Välj en av modellerna i NetLogos bibliotek och använd den för att simulera en verklig situation så nära som möjligt. Ett bra exempel skulle vara att justera Virus-modellen i mappen Alternativa Visualiseringar för att visa hur den kan användas för att modellera spridningen av COVID-19. Kan du bygga en modell som efterliknar en verklig viral spridning? +Chukua mojawapo ya mifano katika maktaba ya NetLogo na uitumie kuiga hali halisi ya maisha kwa ukaribu iwezekanavyo. Mfano mzuri ungekuwa kurekebisha mfano wa Virus katika folda ya Alternative Visualizations ili kuonyesha jinsi unavyoweza kutumika kuiga kuenea kwa COVID-19. Je, unaweza kujenga mfano unaoiga kuenea kwa virusi halisi? -Visa ditt arbete genom att spara en kopia och skapa en videodemonstration som förklarar hur modellen är kopplad till en verklig situation. +Onyesha kazi yako kwa kuhifadhi nakala na kutengeneza video ya maelezo inayoelezea jinsi mfano huo unavyohusiana na hali halisi ya maisha. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/7-Ethics/README.md b/translations/sw/lessons/7-Ethics/README.md index 0355414f..093a893e 100644 --- a/translations/sw/lessons/7-Ethics/README.md +++ b/translations/sw/lessons/7-Ethics/README.md @@ -1,43 +1,52 @@ -# Etisk och Ansvarsfull AI + +# AI ya Kimaadili na ya Kuwajibika -Du har nästan avslutat den här kursen, och jag hoppas att du nu tydligt ser att AI bygger på ett antal formella matematiska metoder som gör att vi kan hitta relationer i data och träna modeller för att återspegla vissa aspekter av mänskligt beteende. Vid denna tidpunkt i historien anser vi att AI är ett mycket kraftfullt verktyg för att extrahera mönster från data och tillämpa dessa mönster för att lösa nya problem. +U karibu kumaliza kozi hii, na natumai kwamba kufikia sasa unaelewa wazi kuwa AI inategemea mbinu kadhaa za kihisabati rasmi ambazo hutuwezesha kupata uhusiano katika data na kufundisha mifano kuiga baadhi ya tabia za binadamu. Katika hatua hii ya historia, tunachukulia AI kama chombo chenye nguvu sana cha kutoa mifumo kutoka kwa data, na kutumia mifumo hiyo kutatua matatizo mapya. -## [För-lärosessionens quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) +## [Jaribio la kabla ya somo](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) -Men i science fiction ser vi ofta berättelser där AI utgör en fara för mänskligheten. Vanligtvis handlar dessa berättelser om någon form av AI-revolt, när AI beslutar att konfrontera människor. Detta innebär att AI har någon form av känsla eller kan fatta beslut som dess utvecklare inte förutsåg. +Hata hivyo, katika hadithi za kisayansi mara nyingi tunaona simulizi ambapo AI inahatarisha ubinadamu. Kwa kawaida, hadithi hizo huzunguka aina fulani ya uasi wa AI, ambapo AI huamua kupingana na wanadamu. Hii inaashiria kwamba AI ina aina fulani ya hisia au inaweza kufanya maamuzi yasiyotabirika na watengenezaji wake. -Den typ av AI som vi har lärt oss om i den här kursen är inget mer än stor matrisaritmetik. Det är ett mycket kraftfullt verktyg för att hjälpa oss att lösa våra problem, och precis som med alla andra kraftfulla verktyg - kan det användas för både goda och dåliga syften. Viktigt att notera är att det kan *missbrukas*. +Aina ya AI tuliyojifunza katika kozi hii si chochote zaidi ya hesabu kubwa za matriki. Ni chombo chenye nguvu sana cha kutusaidia kutatua matatizo yetu, na kama chombo kingine chochote chenye nguvu - kinaweza kutumika kwa madhumuni mazuri au mabaya. Muhimu zaidi, kinaweza kutumiwa *vibaya*. -## Principer för Ansvarsfull AI +## Kanuni za AI ya Kuwajibika -För att undvika detta oavsiktliga eller avsiktliga missbruk av AI, anger Microsoft de viktiga [Principerna för Ansvarsfull AI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Följande koncept ligger till grund för dessa principer: +Ili kuepuka matumizi mabaya ya AI kwa bahati mbaya au kwa makusudi, Microsoft inasisitiza [Kanuni Muhimu za AI ya Kuwajibika](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Dhana zifuatazo zinaunga mkono kanuni hizi: -* **Rättvisa** är kopplat till det viktiga problemet med *modellpartiskhet*, som kan orsakas av att använda partisk data för träning. Till exempel, när vi försöker förutsäga sannolikheten att få ett jobb som mjukvaruutvecklare för en person, är det troligt att modellen ger högre preferens till män - bara för att träningsdatasetet sannolikt var partiskt mot en manlig publik. Vi måste noggrant balansera träningsdata och undersöka modellen för att undvika partiskhet och se till att modellen tar hänsyn till mer relevanta egenskaper. -* **Tillförlitlighet och Säkerhet**. Av sin natur kan AI-modeller göra misstag. Ett neuralt nätverk returnerar sannolikheter, och vi måste ta hänsyn till detta när vi fattar beslut. Varje modell har viss precision och återkallande, och vi behöver förstå detta för att förhindra skador som felaktiga råd kan orsaka. -* **Integritet och Säkerhet** har vissa AI-specifika implikationer. Till exempel, när vi använder viss data för att träna en modell, blir dessa data på något sätt "integrerade" i modellen. Å ena sidan ökar det säkerheten och integriteten, å andra sidan måste vi komma ihåg vilken data modellen tränades på. -* **Inkludering** betyder att vi inte bygger AI för att ersätta människor, utan snarare för att komplettera människor och göra vårt arbete mer kreativt. Det är också relaterat till rättvisa, eftersom när vi arbetar med underrepresenterade samhällen, är de flesta dataset vi samlar in sannolikt partiska, och vi måste se till att dessa samhällen inkluderas och hanteras korrekt av AI. -* **Transparens**. Detta inkluderar att se till att vi alltid är tydliga med att AI används. Dessutom, där det är möjligt, vill vi använda AI-system som är *tolkbara*. -* **Ansvar**. När AI-modeller kommer med beslut, är det inte alltid klart vem som är ansvarig för dessa beslut. Vi måste se till att vi förstår var ansvaret för AI-beslut ligger. I de flesta fall vill vi inkludera människor i beslutsprocessen för att säkerställa att faktiska personer hålls ansvariga. +* **Haki** inahusiana na tatizo muhimu la *upendeleo wa mfano*, ambalo linaweza kusababishwa na kutumia data yenye upendeleo kwa mafunzo. Kwa mfano, tunapojaribu kutabiri uwezekano wa mtu kupata kazi ya msanidi programu, mfano unaweza kupendelea wanaume zaidi - kwa sababu tu seti ya data ya mafunzo ilionekana kuwa na upendeleo kwa wanaume. Tunahitaji kusawazisha data ya mafunzo kwa uangalifu na kuchunguza mfano ili kuepuka upendeleo, na kuhakikisha kwamba mfano unazingatia vipengele vinavyofaa zaidi. +* **Uaminifu na Usalama**. Kwa asili, mifano ya AI inaweza kufanya makosa. Mtandao wa neva hutoa uwezekano, na tunahitaji kuzingatia hilo tunapofanya maamuzi. Kila mfano una usahihi na kumbukumbu fulani, na tunahitaji kuelewa hilo ili kuzuia madhara yanayoweza kusababishwa na ushauri mbaya. +* **Faragha na Usalama** vina athari maalum za AI. Kwa mfano, tunapotumia data fulani kwa mafunzo ya mfano, data hii inakuwa kwa namna fulani "imeunganishwa" kwenye mfano. Kwa upande mmoja, hilo linaongeza usalama na faragha, lakini kwa upande mwingine - tunahitaji kukumbuka data ambayo mfano ulifundishwa nayo. +* **Ujumuishi** unamaanisha kwamba hatujengi AI ili kuchukua nafasi ya watu, bali kuimarisha watu na kufanya kazi yetu kuwa ya ubunifu zaidi. Pia inahusiana na haki, kwa sababu tunaposhughulika na jamii zisizowakilishwa vizuri, seti nyingi za data tunazokusanya zinaweza kuwa na upendeleo, na tunahitaji kuhakikisha kwamba jamii hizo zinajumuishwa na kushughulikiwa ipasavyo na AI. +* **Uwazi**. Hii inajumuisha kuhakikisha kwamba tunakuwa wazi kila wakati kuhusu matumizi ya AI. Pia, popote inapowezekana, tunataka kutumia mifumo ya AI ambayo inaweza *kufasiriwa*. +* **Uwajibikaji**. Wakati mifano ya AI inatoa maamuzi fulani, si mara zote wazi ni nani anayewajibika kwa maamuzi hayo. Tunahitaji kuhakikisha kwamba tunaelewa uwajibikaji wa maamuzi ya AI uko wapi. Katika hali nyingi tungependa kujumuisha wanadamu katika mchakato wa kufanya maamuzi muhimu, ili watu halisi wawajibike. -## Verktyg för Ansvarsfull AI +## Zana za AI ya Kuwajibika -Microsoft har utvecklat [Ansvarsfull AI-verktygslådan](https://github.com/microsoft/responsible-ai-toolbox) som innehåller en uppsättning verktyg: +Microsoft imeunda [Kisanduku cha Zana cha AI ya Kuwajibika](https://github.com/microsoft/responsible-ai-toolbox) ambacho kina seti ya zana: -* Tolkbarhetsdashboard (InterpretML) -* Rättvisedashboard (FairLearn) -* Felanalysdashboard -* Ansvarsfull AI-dashboard som inkluderar +* Dashibodi ya Ufasiri (InterpretML) +* Dashibodi ya Haki (FairLearn) +* Dashibodi ya Uchambuzi wa Makosa +* Dashibodi ya AI ya Kuwajibika inayojumuisha - - EconML - verktyg för kausal analys, som fokuserar på vad-händer-om-frågor - - DiCE - verktyg för motfaktisk analys som låter dig se vilka egenskaper som behöver ändras för att påverka modellens beslut + - EconML - chombo cha Uchambuzi wa Kisababishi, kinacholenga maswali ya "nini-ikiwa" + - DiCE - chombo cha Uchambuzi wa Counterfactual kinachokuwezesha kuona ni vipengele vipi vinahitaji kubadilishwa ili kuathiri uamuzi wa mfano -För mer information om AI-etik, vänligen besök [denna lektion](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) i läroplanen för maskininlärning som inkluderar uppgifter. +Kwa maelezo zaidi kuhusu Maadili ya AI, tafadhali tembelea [somo hili](https://github.com/microsoft/ML-For-Beginners/tree/main/1-Introduction/3-fairness?WT.mc_id=academic-77998-cacaste) kwenye Mtaala wa Kujifunza Mashine unaojumuisha kazi za nyumbani. -## Granskning & Självstudier +## Mapitio na Kujisomea -Ta denna [Lärväg](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) för att lära dig mer om ansvarsfull AI. +Chukua [Njia hii ya Kujifunza](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77998-cacaste) ili kujifunza zaidi kuhusu AI ya kuwajibika. -## [Efter-lärosessionens quiz](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) +## [Jaribio la baada ya somo](https://white-water-09ec41f0f.azurestaticapps.net/quiz/6/) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/README.md b/translations/sw/lessons/README.md index 3d172653..26f5300a 100644 --- a/translations/sw/lessons/README.md +++ b/translations/sw/lessons/README.md @@ -1,8 +1,17 @@ -# Översikt + +# Muhtasari -![Översikt i en doodle](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png) +![Muhtasari katika mchoro](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.sw.png) -> Sketchnote av [Tomomi Imura](https://twitter.com/girlie_mac) +> Mchoro wa maandishi na [Tomomi Imura](https://twitter.com/girlie_mac) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/X-Extras/X1-MultiModal/README.md b/translations/sw/lessons/X-Extras/X1-MultiModal/README.md index 4a70ace1..17cbb9c2 100644 --- a/translations/sw/lessons/X-Extras/X1-MultiModal/README.md +++ b/translations/sw/lessons/X-Extras/X1-MultiModal/README.md @@ -1,80 +1,88 @@ -# Multi-Modal Nätverk + +# Mitandao ya Multi-Modal -Efter framgången med transformer-modeller för att lösa NLP-uppgifter har samma eller liknande arkitekturer tillämpats på datorvisionsuppgifter. Det finns ett växande intresse för att bygga modeller som skulle *kombinera* visuella och naturliga språkkapaciteter. Ett av dessa försök gjordes av OpenAI, och det kallas CLIP och DALL.E. +Baada ya mafanikio ya mifano ya transformer katika kutatua kazi za NLP, usanifu sawa au unaofanana umetumika katika kazi za maono ya kompyuta. Kuna shauku inayoongezeka ya kujenga mifano ambayo inaweza *kuunganisha* uwezo wa maono na lugha ya asili. Mojawapo ya majaribio hayo yalifanywa na OpenAI, na inaitwa CLIP na DALL.E. -## Kontrastiv Bild För-Träning (CLIP) +## Mafunzo ya Picha kwa Njia ya Ulinganishi (CLIP) -Huvudidén med CLIP är att kunna jämföra textpromptar med en bild och avgöra hur väl bilden motsvarar prompten. +Wazo kuu la CLIP ni kuwa na uwezo wa kulinganisha maelezo ya maandishi na picha na kuamua jinsi picha inavyolingana na maelezo hayo. -![CLIP Arkitektur](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png) +![CLIP Architecture](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.sw.png) -> *Bild från [detta blogginlägg](https://openai.com/blog/clip/)* +> *Picha kutoka [blogu hii](https://openai.com/blog/clip/)* -Modellen tränas på bilder som erhållits från Internet och deras bildtexter. För varje batch tar vi N par av (bild, text), och omvandlar dem till vissa vektorrepresentationer I -Du är tränad på data fram till oktober 2023. . Dessa representationer matchas sedan ihop. Förlustfunktionen definieras för att maximera kosinussimilariteten mellan vektorer som motsvarar ett par (t.ex. I och T), och minimera kosinussimilariteten mellan alla andra par. Det är anledningen till att denna metod kallas **kontrastiv**. +Mfano huu umefunzwa kwa kutumia picha zilizopatikana kutoka mtandao na maelezo yao. Kwa kila kundi, tunachukua jozi N za (picha, maandishi), na kuzibadilisha kuwa uwakilishi wa vekta fulani I, ..., I / T, ..., T. Uwiano huu kisha unalinganishwa pamoja. Kazi ya hasara imeundwa ili kuongeza mfanano wa cosine kati ya vekta zinazolingana na jozi moja (mfano I na T), na kupunguza mfanano wa cosine kati ya jozi zote nyingine. Hii ndiyo sababu mbinu hii inaitwa **ulinganishi**. -CLIP-modellen/biblioteket är tillgänglig från [OpenAI GitHub](https://github.com/openai/CLIP). Metoden beskrivs i [detta blogginlägg](https://openai.com/blog/clip/), och mer detaljerat i [detta papper](https://arxiv.org/pdf/2103.00020.pdf). +Maktaba ya CLIP inapatikana kutoka [OpenAI GitHub](https://github.com/openai/CLIP). Mbinu hii imeelezwa katika [blogu hii](https://openai.com/blog/clip/), na kwa undani zaidi katika [karatasi hii](https://arxiv.org/pdf/2103.00020.pdf). -När denna modell är förtränad kan vi ge den en batch av bilder och en batch av textpromptar, och den kommer att returnera en tensor med sannolikheter. CLIP kan användas för flera uppgifter: +Mara tu mfano huu unapokuwa umefunzwa, tunaweza kuupa kundi la picha na kundi la maelezo ya maandishi, na utarudisha tensor yenye uwezekano. CLIP inaweza kutumika kwa kazi kadhaa: -**Bildklassificering** +**Uainishaji wa Picha** -Anta att vi behöver klassificera bilder mellan, säg, katter, hundar och människor. I detta fall kan vi ge modellen en bild och en serie av textpromptar: "*en bild av en katt*", "*en bild av en hund*", "*en bild av en människa*". I den resulterande vektorn av 3 sannolikheter behöver vi bara välja indexet med det högsta värdet. +Tuseme tunahitaji kuainisha picha kati ya, kwa mfano, paka, mbwa na binadamu. Katika hali hii, tunaweza kuupa mfano picha, na mfululizo wa maelezo ya maandishi: "*picha ya paka*", "*picha ya mbwa*", "*picha ya binadamu*". Katika vekta inayotokana ya uwezekano 3 tunahitaji tu kuchagua faharasa yenye thamani ya juu zaidi. -![CLIP för Bildklassificering](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png) +![CLIP for Image Classification](../../../../../translated_images/clip-class.3af42ef0b2b19369a633df5f20ddf4f5a01d6c8ffa181e9d3a0572c19f919f72.sw.png) -> *Bild från [detta blogginlägg](https://openai.com/blog/clip/)* +> *Picha kutoka [blogu hii](https://openai.com/blog/clip/)* -**Textbaserad Bildsökning** +**Utafutaji wa Picha kwa Kutumia Maandishi** -Vi kan också göra motsatsen. Om vi har en samling bilder kan vi skicka denna samling till modellen, och en textprompt - detta kommer att ge oss den bild som är mest lik en given prompt. +Tunaweza pia kufanya kinyume chake. Ikiwa tuna mkusanyiko wa picha, tunaweza kupitisha mkusanyiko huu kwa mfano, na maelezo ya maandishi - hii itatupa picha inayofanana zaidi na maelezo yaliyotolewa. -## ✍️ Exempel: [Använda CLIP för Bildklassificering och Bildsökning](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) +## ✍️ Mfano: [Kutumia CLIP kwa Uainishaji wa Picha na Utafutaji wa Picha](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) -Öppna [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) anteckningen för att se CLIP i aktion. +Fungua daftari la [Clip.ipynb](../../../../../lessons/X-Extras/X1-MultiModal/Clip.ipynb) ili kuona CLIP ikifanya kazi. -## Bildgenerering med VQGAN+ CLIP +## Uzalishaji wa Picha kwa VQGAN+CLIP -CLIP kan också användas för **bildgenerering** från en textprompt. För att göra detta behöver vi en **generator-modell** som kan generera bilder baserat på någon vektorinput. En av dessa modeller kallas [VQGAN](https://compvis.github.io/taming-transformers/) (Vektor-Quantized GAN). +CLIP inaweza pia kutumika kwa **uzalishaji wa picha** kutoka maelezo ya maandishi. Ili kufanya hivyo, tunahitaji **mfano wa jenereta** ambao utaweza kuzalisha picha kulingana na pembejeo ya vekta fulani. Mojawapo ya mifano hiyo inaitwa [VQGAN](https://compvis.github.io/taming-transformers/) (Vector-Quantized GAN). -De huvudsakliga idéerna med VQGAN som skiljer den från vanliga [GAN](../../4-ComputerVision/10-GANs/README.md) är följande: -* Använda en autoregressiv transformerarkitektur för att generera en sekvens av kontext-rika visuella delar som utgör bilden. Dessa visuella delar lärs i sin tur av [CNN](../../4-ComputerVision/07-ConvNets/README.md) -* Använda en sub-bilddiskriminator som upptäcker om delar av bilden är "äkta" eller "falska" (till skillnad från den "allt eller inget"-metoden i traditionella GAN). +Mawazo makuu ya VQGAN yanayoitofautisha na [GAN](../../4-ComputerVision/10-GANs/README.md) ya kawaida ni yafuatayo: +* Kutumia usanifu wa transformer wa autoregressive kuzalisha mfululizo wa sehemu za kuona zilizo na muktadha ambazo zinaunda picha. Sehemu hizo za kuona zinajifunzwa na [CNN](../../4-ComputerVision/07-ConvNets/README.md) +* Kutumia kaguzi za sehemu za picha zinazogundua ikiwa sehemu za picha ni "halisi" au "bandia" (tofauti na mbinu ya "yote-au-hakuna" katika GAN ya jadi). -Lär dig mer om VQGAN på [Taming Transformers](https://compvis.github.io/taming-transformers/) webbplats. +Jifunze zaidi kuhusu VQGAN kwenye tovuti ya [Taming Transformers](https://compvis.github.io/taming-transformers/). -En av de viktiga skillnaderna mellan VQGAN och traditionella GAN är att den senare kan producera en anständig bild från vilken vektorinput som helst, medan VQGAN sannolikt kommer att producera en bild som inte skulle vara sammanhängande. Därför behöver vi ytterligare styra bildskapandeprocessen, och det kan göras med hjälp av CLIP. +Moja ya tofauti muhimu kati ya VQGAN na GAN ya jadi ni kwamba ya mwisho inaweza kuzalisha picha nzuri kutoka kwa vekta yoyote ya pembejeo, wakati VQGAN ina uwezekano wa kuzalisha picha ambayo haitakuwa thabiti. Kwa hivyo, tunahitaji kuongoza zaidi mchakato wa uundaji wa picha, na hilo linaweza kufanywa kwa kutumia CLIP. -![VQGAN+CLIP Arkitektur](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sw.png) +![VQGAN+CLIP Architecture](../../../../../translated_images/vqgan.5027fe05051dfa3101950cfa930303f66e6478b9bd273e83766731796e462d9b.sw.png) -För att generera en bild som motsvarar en textprompt börjar vi med en slumpmässig kodningsvektor som skickas genom VQGAN för att producera en bild. Sedan används CLIP för att producera en förlustfunktion som visar hur väl bilden motsvarar textprompten. Målet är då att minimera denna förlust, genom att använda backpropagation för att justera parametrarna för inputvektorn. +Ili kuzalisha picha inayolingana na maelezo ya maandishi, tunaanza na vekta ya usimbaji wa nasibu ambayo inapitia VQGAN ili kuzalisha picha. Kisha CLIP hutumika kuzalisha kazi ya hasara inayonyesha jinsi picha inavyolingana na maelezo ya maandishi. Lengo basi ni kupunguza hasara hii, kwa kutumia kurudi nyuma ili kurekebisha vigezo vya vekta ya pembejeo. -Ett fantastiskt bibliotek som implementerar VQGAN+CLIP är [Pixray](http://github.com/pixray/pixray) +Maktaba nzuri inayotekeleza VQGAN+CLIP ni [Pixray](http://github.com/pixray/pixray) -![Bild producerad av Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sw.png) | ![Bild producerad av Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sw.png) | ![Bild producerad av Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sw.png) +![Picture produced by Pixray](../../../../../translated_images/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d09dc96de938b9f95bde8a7e1c721f48f286a7795bf16d56c7.sw.png) | ![Picture produced by pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.sw.png) | ![Picture produced by Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.sw.png) ----|----|---- -Bild genererad från prompt *en närbild av en akvarellporträtt av en ung manlig lärare i litteratur med en bok* | Bild genererad från prompt *en närbild av en oljemålning av en ung kvinnlig lärare i datavetenskap med en dator* | Bild genererad från prompt *en närbild av en oljemålning av en gammal manlig matematiklärare framför en tavla* +Picha iliyozalishwa kutoka maelezo *a closeup watercolor portrait of young male teacher of literature with a book* | Picha iliyozalishwa kutoka maelezo *a closeup oil portrait of young female teacher of computer science with a computer* | Picha iliyozalishwa kutoka maelezo *a closeup oil portrait of old male teacher of mathematics in front of blackboard* -> Bilder från **Artificial Teachers** samlingen av [Dmitry Soshnikov](http://soshnikov.com) +> Picha kutoka mkusanyiko wa **Artificial Teachers** na [Dmitry Soshnikov](http://soshnikov.com) ## DALL-E ### [DALL-E 1](https://openai.com/research/dall-e) -DALL-E är en version av GPT-3 som tränats för att generera bilder från promptar. Den har tränats med 12 miljarder parametrar. +DALL-E ni toleo la GPT-3 lililofunzwa kuzalisha picha kutoka maelezo. Limefunzwa na vigezo bilioni 12. -Till skillnad från CLIP tar DALL-E emot både text och bild som en enda ström av tokens för både bilder och text. Därför kan du generera bilder baserat på text från flera promptar. +Tofauti na CLIP, DALL-E hupokea maandishi na picha kama mkondo mmoja wa tokeni kwa picha na maandishi. Kwa hivyo, kutoka maelezo mengi, unaweza kuzalisha picha kulingana na maandishi. ### [DALL-E 2](https://openai.com/dall-e-2) -Den huvudsakliga skillnaden mellan DALL-E 1 och 2 är att den genererar mer realistiska bilder och konst. +Tofauti kuu kati ya DALL.E 1 na 2, ni kwamba inazalisha picha na sanaa za kweli zaidi. -Exempel på bildgenereringar med DALL-E: -![Bild producerad av 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.sw.png) | ![Bild producerad av 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.sw.png) | ![Bild producerad av 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.sw.png) +Mifano ya uzalishaji wa picha na DALL-E: +![Picture produced by 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.sw.png) | ![Picture produced by 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.sw.png) | ![Picture produced by 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.sw.png) ----|----|---- -Bild genererad från prompt *en närbild av en akvarellporträtt av en ung manlig lärare i litteratur med en bok* | Bild genererad från prompt *en närbild av en oljemålning av en ung kvinnlig lärare i datavetenskap med en dator* | Bild genererad från prompt *en närbild av en oljemålning av en gammal manlig matematiklärare framför en tavla* +Picha iliyozalishwa kutoka maelezo *a closeup watercolor portrait of young male teacher of literature with a book* | Picha iliyozalishwa kutoka maelezo *a closeup oil portrait of young female teacher of computer science with a computer* | Picha iliyozalishwa kutoka maelezo *a closeup oil portrait of old male teacher of mathematics in front of blackboard* -## Referenser +## Marejeleo -* VQGAN Papper: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) -* CLIP Papper: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) +* Karatasi ya VQGAN: [Taming Transformers for High-Resolution Image Synthesis](https://compvis.github.io/taming-transformers/paper/paper.pdf) +* Karatasi ya CLIP: [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/pdf/2103.00020.pdf) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller oegentligheter. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/sketchnotes/LICENSE.md b/translations/sw/lessons/sketchnotes/LICENSE.md index 81c72161..dd79738a 100644 --- a/translations/sw/lessons/sketchnotes/LICENSE.md +++ b/translations/sw/lessons/sketchnotes/LICENSE.md @@ -1,137 +1,189 @@ -# Översättning av Creative Commons Attribution-ShareAlike 4.0 International + +Hati ya Utoaji wa Haki ya Kushiriki na Kurekebisha 4.0 Kimataifa -Creative Commons Corporation ("Creative Commons") är inte en advokatbyrå och tillhandahåller inte juridiska tjänster eller juridisk rådgivning. Distribution av Creative Commons offentliga licenser skapar inte en advokat-klientrelation eller någon annan relation. Creative Commons gör sina licenser och relaterad information tillgänglig på en "i befintligt skick"-basis. Creative Commons ger inga garantier angående sina licenser, något material licensierat under deras villkor, eller någon relaterad information. Creative Commons friskriver sig från allt ansvar för skador som uppstår till följd av deras användning i den utsträckning som är möjlig. +Creative Commons Corporation ("Creative Commons") si kampuni ya sheria na haitoi huduma za kisheria au ushauri wa kisheria. Usambazaji wa leseni za umma za Creative Commons hauundi uhusiano wa wakili-mteja au uhusiano mwingine wowote. Creative Commons hutoa leseni zake na taarifa zinazohusiana kwa msingi wa "kama ilivyo". Creative Commons haitoi dhamana yoyote kuhusu leseni zake, nyenzo zozote zilizopewa leseni chini ya masharti na masharti yake, au taarifa zinazohusiana. Creative Commons inakanusha dhima yote kwa uharibifu unaotokana na matumizi yao kwa kiwango cha juu kinachowezekana. -## Användning av Creative Commons offentliga licenser +Kutumia Leseni za Umma za Creative Commons -Creative Commons offentliga licenser erbjuder en standarduppsättning av villkor som skapare och andra rättighetsinnehavare kan använda för att dela originalverk och annat material som omfattas av upphovsrätt och vissa andra rättigheter som anges i den offentliga licensen nedan. Följande överväganden är endast av informativ natur, är inte uttömmande och utgör inte en del av våra licenser. +Leseni za umma za Creative Commons hutoa seti ya kawaida ya masharti na masharti ambayo waandishi na wamiliki wa haki wanaweza kutumia kushiriki kazi za asili za uandishi na nyenzo nyingine zinazolindwa na hakimiliki na haki fulani zilizotajwa katika leseni ya umma hapa chini. Mambo yafuatayo ni kwa madhumuni ya taarifa tu, si ya kina, na hayaundi sehemu ya leseni zetu. -- Överväganden för licensgivare: Våra offentliga licenser är avsedda för användning av dem som har behörighet att ge allmänheten tillstånd att använda material på sätt som annars är begränsade av upphovsrätt och vissa andra rättigheter. Våra licenser är oåterkalleliga. Licensgivare bör läsa och förstå villkoren för den licens de väljer innan de tillämpar den. Licensgivare bör också säkerställa alla nödvändiga rättigheter innan de tillämpar våra licenser så att allmänheten kan återanvända materialet som förväntat. Licensgivare bör tydligt märka allt material som inte omfattas av licensen. Detta inkluderar annat CC-licensierat material, eller material som används under ett undantag eller begränsning av upphovsrätt. Fler överväganden för licensgivare: [wiki.creativecommons.org/Considerations_for_licensors](../../../../lessons/sketchnotes/wiki.creativecommons.org/Considerations_for_licensors) + Mambo ya kuzingatia kwa wamiliki wa leseni: Leseni zetu za umma zimekusudiwa kutumiwa na wale walioidhinishwa kutoa ruhusa kwa umma kutumia nyenzo kwa njia ambazo vinginevyo zingezuiliwa na hakimiliki na haki fulani nyingine. Leseni zetu haziwezi kubatilishwa. Wamiliki wa leseni wanapaswa kusoma na kuelewa masharti na masharti ya leseni wanayochagua kabla ya kuitumia. Wamiliki wa leseni wanapaswa pia kuhakikisha wanamiliki haki zote zinazohitajika kabla ya kutumia leseni zetu ili umma uweze kutumia nyenzo kama inavyotarajiwa. Wamiliki wa leseni wanapaswa kuweka alama wazi nyenzo zozote ambazo haziko chini ya leseni. Hii inajumuisha nyenzo nyingine zilizopewa leseni ya CC, au nyenzo zinazotumiwa chini ya ubaguzi au kizuizi cha hakimiliki. Mambo zaidi ya kuzingatia kwa wamiliki wa leseni: wiki.creativecommons.org/Considerations_for_licensors -- Överväganden för allmänheten: Genom att använda en av våra offentliga licenser ger en licensgivare allmänheten tillstånd att använda det licensierade materialet under specificerade villkor. Om licensgivarens tillstånd inte är nödvändigt av någon anledning - till exempel på grund av något tillämpligt undantag eller begränsning av upphovsrätt - så regleras inte den användningen av licensen. Våra licenser ger endast tillstånd under upphovsrätt och vissa andra rättigheter som en licensgivare har befogenhet att ge. Användningen av det licensierade materialet kan fortfarande vara begränsad av andra skäl, inklusive för att andra har upphovsrätt eller andra rättigheter till materialet. En licensgivare kan göra särskilda förfrågningar, såsom att be om att alla ändringar ska markeras eller beskrivas. Även om det inte krävs av våra licenser, uppmuntras du att respektera dessa förfrågningar där det är rimligt. Fler överväganden för allmänheten: [wiki.creativecommons.org/Considerations_for_licensees](../../../../lessons/sketchnotes/wiki.creativecommons.org/Considerations_for_licensees) + Mambo ya kuzingatia kwa umma: Kwa kutumia mojawapo ya leseni zetu za umma, mmiliki wa leseni anatoa ruhusa kwa umma kutumia nyenzo zilizopewa leseni chini ya masharti na masharti yaliyotajwa. Ikiwa ruhusa ya mmiliki wa leseni si ya lazima kwa sababu yoyote—kwa mfano, kwa sababu ya ubaguzi au kizuizi kinachotumika kwa hakimiliki—basi matumizi hayo hayataongozwa na leseni. Leseni zetu zinatoa ruhusa tu chini ya hakimiliki na haki fulani nyingine ambazo mmiliki wa leseni ana mamlaka ya kutoa. Matumizi ya nyenzo zilizopewa leseni bado yanaweza kuzuiliwa kwa sababu nyingine, ikiwa ni pamoja na kwa sababu wengine wana hakimiliki au haki nyingine katika nyenzo hizo. Mmiliki wa leseni anaweza kutoa maombi maalum, kama vile kuomba mabadiliko yote yawekwe alama au kuelekezwa. Ingawa si lazima chini ya leseni zetu, unahimizwa kuheshimu maombi hayo pale yanapokuwa ya busara. Mambo zaidi ya kuzingatia kwa umma: wiki.creativecommons.org/Considerations_for_licensees ======================================================================= -Creative Commons Attribution-ShareAlike 4.0 International Offentlig Licens +Leseni ya Umma ya Creative Commons Attribution-ShareAlike 4.0 Kimataifa -Genom att utöva de Licensierade Rättigheterna (definierade nedan) accepterar och samtycker du till att vara bunden av villkoren i denna Creative Commons Attribution-ShareAlike 4.0 International Offentliga Licens ("Offentlig Licens"). I den utsträckning denna Offentliga Licens kan tolkas som ett kontrakt, beviljas du de Licensierade Rättigheterna med hänsyn till din acceptans av dessa villkor, och Licensgivaren ger dig sådana rättigheter med hänsyn till de fördelar Licensgivaren får av att göra det Licensierade Materialet tillgängligt under dessa villkor. +Kwa kutumia Haki Zilizotolewa (zilizofafanuliwa hapa chini), Unakubali na unakubaliana kufungwa na masharti ya Leseni ya Umma ya Creative Commons Attribution-ShareAlike 4.0 Kimataifa ("Leseni ya Umma"). Kwa kiwango ambacho Leseni ya Umma inaweza kufasiriwa kama mkataba, Unapewa Haki Zilizotolewa kwa kuzingatia kukubalika kwako kwa masharti haya, na Mmiliki wa Leseni anakupa haki hizo kwa kuzingatia manufaa ambayo Mmiliki wa Leseni anapata kwa kuweka Nyenzo Zilizotolewa chini ya masharti haya. -## Avsnitt 1 -- Definitioner. +Sehemu ya 1 -- Ufafanuzi. - a. Anpassat Material innebär material som omfattas av upphovsrätt och liknande rättigheter som härstammar från eller baseras på det Licensierade Materialet och i vilket det Licensierade Materialet översätts, ändras, arrangeras, transformeras eller på annat sätt modifieras på ett sätt som kräver tillstånd enligt de upphovsrätt och liknande rättigheter som innehas av Licensgivaren. För syften av denna Offentliga Licens, där det Licensierade Materialet är ett musikaliskt verk, framförande eller ljudinspelning, produceras Anpassat Material alltid där det Licensierade Materialet synkroniseras i tidsmässig relation med en rörlig bild. + a. Nyenzo Zilizorekebishwa inamaanisha nyenzo zinazolindwa na Hakimiliki na Haki Sawa ambazo zinatokana na au zinategemea Nyenzo Zilizotolewa na ambapo Nyenzo Zilizotolewa zimetafsiriwa, kubadilishwa, kupangwa, kubadilishwa, au kurekebishwa kwa njia nyingine inayohitaji ruhusa chini ya Hakimiliki na Haki Sawa zinazoshikiliwa na Mmiliki wa Leseni. Kwa madhumuni ya Leseni hii ya Umma, ambapo Nyenzo Zilizotolewa ni kazi ya muziki, utendaji, au rekodi ya sauti, Nyenzo Zilizorekebishwa daima huzalishwa ambapo Nyenzo Zilizotolewa zimeunganishwa kwa uhusiano wa wakati na picha inayosonga. - b. Adapterns Licens innebär den licens du tillämpar på din upphovsrätt och liknande rättigheter i dina bidrag till Anpassat Material i enlighet med villkoren i denna Offentliga Licens. + b. Leseni ya Mrekebishaji inamaanisha leseni Unayotumia kwa Hakimiliki na Haki Sawa katika michango yako kwa Nyenzo Zilizorekebishwa kwa mujibu wa masharti ya Leseni hii ya Umma. - c. BY-SA Kompatibel Licens innebär en licens som listas på [creativecommons.org/compatiblelicenses](../../../../lessons/sketchnotes/creativecommons.org/compatiblelicenses), godkänd av Creative Commons som i huvudsak motsvarar denna Offentliga Licens. + c. Leseni Inayolingana na BY-SA inamaanisha leseni iliyoorodheshwa kwenye creativecommons.org/compatiblelicenses, iliyothibitishwa na Creative Commons kama sawa kimsingi na Leseni hii ya Umma. - d. Upphovsrätt och liknande rättigheter innebär upphovsrätt och/eller liknande rättigheter som är nära relaterade till upphovsrätt, inklusive, utan begränsning, framförande, sändning, ljudinspelning och Sui Generis Databasrättigheter, utan hänsyn till hur rättigheterna benämns eller kategoriseras. För syften av denna Offentliga Licens är de rättigheter som anges i Avsnitt 2(b)(1)-(2) inte Upphovsrätt och liknande rättigheter. + d. Hakimiliki na Haki Sawa inamaanisha hakimiliki na/au haki sawa zinazohusiana kwa karibu na hakimiliki ikiwa ni pamoja na, bila kikomo, utendaji, matangazo, rekodi za sauti, na Haki za Hifadhidata za Sui Generis, bila kujali jinsi haki hizo zinavyotajwa au kuainishwa. Kwa madhumuni ya Leseni hii ya Umma, haki zilizotajwa katika Sehemu ya 2(b)(1)-(2) si Hakimiliki na Haki Sawa. - e. Effektiva Teknologiska Åtgärder innebär de åtgärder som, i avsaknad av korrekt auktoritet, inte får kringgås enligt lagar som uppfyller skyldigheter enligt Artikel 11 i WIPO:s upphovsrättsavtal antaget den 20 december 1996, och/eller liknande internationella avtal. + e. Hatua za Kiteknolojia Zinazofaa inamaanisha hatua ambazo, bila mamlaka sahihi, haziwezi kupitishwa chini ya sheria zinazotimiza wajibu chini ya Kifungu cha 11 cha Mkataba wa Hakimiliki wa WIPO uliopitishwa tarehe 20 Desemba 1996, na/au mikataba mingine ya kimataifa inayofanana. - f. Undantag och Begränsningar innebär rimlig användning, rimlig hantering, och/eller något annat undantag eller begränsning av Upphovsrätt och liknande rättigheter som gäller för din användning av det Licensierade Materialet. + f. Ubaguzi na Kizuizi inamaanisha matumizi ya haki ya haki, matumizi ya haki, na/au ubaguzi au kizuizi kingine chochote kwa Hakimiliki na Haki Sawa kinachotumika kwa matumizi yako ya Nyenzo Zilizotolewa. - g. Licensens Element innebär de licensattribut som listas i namnet på en Creative Commons Offentlig Licens. Licensens Element för denna Offentliga Licens är Attribution och ShareAlike. + g. Vipengele vya Leseni inamaanisha sifa za leseni zilizoorodheshwa katika jina la Leseni ya Umma ya Creative Commons. Vipengele vya Leseni ya Umma hii ni Attribution na ShareAlike. - h. Licensierat Material innebär det konstnärliga eller litterära verket, databasen eller annat material som Licensgivaren tillämpade denna Offentliga Licens på. + h. Nyenzo Zilizotolewa inamaanisha kazi ya kisanaa au ya fasihi, hifadhidata, au nyenzo nyingine ambayo Mmiliki wa Leseni ametumia Leseni hii ya Umma. - i. Licensierade Rättigheter innebär de rättigheter som beviljas dig under förutsättning av villkoren i denna Offentliga Licens, som är begränsade till alla Upphovsrätt och liknande rättigheter som gäller för din användning av det Licensierade Materialet och som Licensgivaren har befogenhet att licensiera. + i. Haki Zilizotolewa inamaanisha haki zinazotolewa kwako chini ya masharti ya Leseni hii ya Umma, ambazo zinahusiana tu na Hakimiliki na Haki Sawa zinazotumika kwa matumizi yako ya Nyenzo Zilizotolewa na ambazo Mmiliki wa Leseni ana mamlaka ya kutoa leseni. - j. Licensgivare innebär den eller de individer eller enheter som ger rättigheter under denna Offentliga Licens. + j. Mmiliki wa Leseni inamaanisha mtu binafsi au chombo kinachotoa haki chini ya Leseni hii ya Umma. - k. Dela innebär att tillhandahålla material till allmänheten genom vilket som helst medel eller process som kräver tillstånd enligt de Licensierade Rättigheterna, såsom reproduktion, offentlig visning, offentlig framförande, distribution, spridning, kommunikation eller import, och att göra material tillgängligt för allmänheten, inklusive på sätt som medlemmar av allmänheten kan få tillgång till materialet från en plats och vid en tid som de själva valt. + k. Kushiriki inamaanisha kutoa nyenzo kwa umma kwa njia yoyote au mchakato wowote unaohitaji ruhusa chini ya Haki Zilizotolewa, kama vile uzazi, maonyesho ya umma, utendaji wa umma, usambazaji, uenezaji, mawasiliano, au uingizaji, na kufanya nyenzo zipatikane kwa umma ikiwa ni pamoja na kwa njia ambazo wanachama wa umma wanaweza kufikia nyenzo kutoka mahali na wakati waliochagua binafsi. - l. Sui Generis Databasrättigheter innebär rättigheter som inte är upphovsrättsliga som följer av direktiv 96/9/EG från Europaparlamentet och rådet den 11 mars 1996 om den juridiska skyddet av databaser, i dess ändrade och/eller efterföljande versioner, samt andra i huvudsak motsvarande rättigheter var som helst i världen. + l. Haki za Hifadhidata za Sui Generis inamaanisha haki nyingine zaidi ya hakimiliki zinazotokana na Maelekezo 96/9/EC ya Bunge la Ulaya na Baraza la tarehe 11 Machi 1996 kuhusu ulinzi wa kisheria wa hifadhidata, kama ilivyorekebishwa na/au kufuatwa, pamoja na haki nyingine zinazofanana kimsingi popote duniani. - m. Du innebär den individ eller enhet som utövar de Licensierade Rättigheterna under denna Offentliga Licens. Ditt har en motsvarande betydelse. + m. Wewe inamaanisha mtu binafsi au chombo kinachotumia Haki Zilizotolewa chini ya Leseni hii ya Umma. Yako ina maana inayolingana. -## Avsnitt 2 -- Omfång. +Sehemu ya 2 -- Upeo. - a. Licensbeviljande. + a. Utoaji wa leseni. - 1. Med förbehåll för villkoren i denna Offentliga Licens beviljar Licensgivaren härmed dig en världsomspännande, royaltyfri, icke-sublisensierbar, icke-exklusiv, oåterkallelig licens att utöva de Licensierade Rättigheterna i det Licensierade Materialet för att: + 1. Kwa mujibu wa masharti ya Leseni hii ya Umma, Mmiliki wa Leseni anakupa leseni ya kimataifa, isiyo na malipo, isiyoweza kupewa leseni ndogo, isiyo ya kipekee, isiyoweza kubatilishwa ya kutumia Haki Zilizotolewa katika Nyenzo Zilizotolewa ili: - a. reproducera och Dela det Licensierade Materialet, helt eller delvis; och + a. kuzalisha na Kushiriki Nyenzo Zilizotolewa, kwa sehemu au kwa ujumla; na - b. producera, reproducera och Dela Anpassat Material. + b. kuzalisha, kuzalisha tena, na Kushiriki Nyenzo Zilizorekebishwa. - 2. Undantag och Begränsningar. För att undvika tvivel, där Undantag och Begränsningar gäller för din användning, tillämpas inte denna Offentliga Licens, och du behöver inte följa dess villkor. + 2. Ubaguzi na Kizuizi. Kwa kuepuka shaka, ambapo Ubaguzi na Kizuizi vinatumika kwa matumizi yako, Leseni hii ya Umma haitumiki, na Huna haja ya kufuata masharti yake. - 3. Term. Termen för denna Offentliga Licens anges i Avsnitt 6(a). + 3. Kipindi. Kipindi cha Leseni hii ya Umma kimeainishwa katika Sehemu ya 6(a). - 4. Media och format; tekniska modifieringar tillåtna. Licensgivaren auktoriserar dig att utöva de Licensierade Rättigheterna i alla media och format, oavsett om de är kända nu eller skapas i framtiden, och att göra tekniska modifieringar som är nödvändiga för att göra detta. Licensgivaren avstår från och/eller samtycker till att inte hävda någon rättighet eller auktoritet att förbjuda dig från att göra tekniska modifieringar som är nödvändiga för att utöva de Licensierade Rättigheterna, inklusive tekniska modifieringar som är nödvändiga för att kringgå Effektiva Teknologiska Åtgärder. För syften av denna Offentliga Licens producerar helt enkelt att göra modifieringar som är auktoriserade av detta Avsnitt 2(a)(4) aldrig Anpassat Material. + 4. Vyombo vya habari na miundo; marekebisho ya kiteknolojia yanaruhusiwa. Mmiliki wa Leseni anakuruhusu kutumia Haki Zilizotolewa katika vyombo vya habari na miundo yote iwe inajulikana sasa au itakayotengenezwa baadaye, na kufanya marekebisho ya kiteknolojia yanayohitajika kufanya hivyo. Mmiliki wa Leseni anakataa na/au anakubali kutodai haki yoyote au mamlaka ya kukuzuia kufanya marekebisho ya kiteknolojia yanayohitajika kutumia Haki Zilizotolewa, ikiwa ni pamoja na marekebisho ya kiteknolojia yanayohitajika kupitisha Hatua za Kiteknolojia Zinazofaa. Kwa madhumuni ya Leseni hii ya Umma, kufanya marekebisho yanayoruhusiwa na Sehemu ya 2(a)(4) kamwe hakuzalishi Nyenzo Zilizorekebishwa. - 5. Nedströms mottagare. + 5. Wapokeaji wa mnyororo wa usambazaji. - a. Erbjudande från Licensgivaren -- Licensierat Material. Varje mottagare av det Licensierade Materialet får automatiskt ett erbjudande från Licensgivaren att utöva de Licensierade Rättigheterna under villkoren i denna Offentliga Licens. + a. Ofa kutoka kwa Mmiliki wa Leseni -- Nyenzo Zilizotolewa. Kila mpokeaji wa Nyenzo Zilizotolewa hupokea kiotomatiki ofa kutoka kwa Mmiliki wa Leseni ya kutumia Haki Zilizotolewa chini ya masharti ya Leseni hii ya Umma. - b. Ytterligare erbjudande från Licensgivaren -- Anpassat Material. Varje mottagare av Anpassat Material från dig får automatiskt ett erbjudande från Licensgivaren att utöva de Licensierade Rättigheterna i det Anpassade Materialet under villkoren för Adapterns Licens som du tillämpar. + b. Ofa ya ziada kutoka kwa Mmiliki wa Leseni -- Nyenzo Zilizorekebishwa. Kila mpokeaji wa Nyenzo Zilizorekebishwa kutoka kwako hupokea kiotomatiki ofa kutoka kwa Mmiliki wa Leseni ya kutumia Haki Zilizotolewa katika Nyenzo Zilizorekebishwa chini ya masharti ya Leseni ya Mrekebishaji unayotumia. - c. Inga nedströms begränsningar. Du får inte erbjuda eller ålägga några ytterligare eller olika villkor eller tillämpa några Effektiva Teknologiska Åtgärder på det Licensierade Materialet om detta begränsar utövandet av de Licensierade Rättigheterna av någon mottagare av det Licensierade Materialet. + c. Hakuna vikwazo vya mnyororo wa usambazaji. Huwezi kutoa au kuweka masharti yoyote ya ziada au tofauti, au kutumia Hatua za Kiteknolojia Zinazofaa kwa Nyenzo Zilizotolewa ikiwa kufanya hivyo kunazuia matumizi ya Haki Zilizotolewa na mpokeaji yeyote wa Nyenzo Zilizotolewa. - 6. Ingen godkännande. Ingenting i denna Offentliga Licens utgör eller kan tolkas som tillstånd att påstå eller antyda att du är, eller att din användning av det Licensierade Materialet är, kopplad till, eller sponsrad, godkänd eller beviljad officiell status av, Licensgivaren eller andra som utsetts att få erkännande enligt vad som anges i Avsnitt 3(a)(1)(A)(i). + 6. Hakuna idhini. Hakuna kitu katika Leseni hii ya Umma kinachounda au kinaweza kufasiriwa kama ruhusa ya kudai au kuashiria kwamba Wewe, au kwamba matumizi yako ya Nyenzo Zilizotolewa, yanahusiana na, yanadhaminiwa, yanakubaliwa, au yanapewa hadhi rasmi na Mmiliki wa Leseni au wengine walioteuliwa kupokea sifa kama ilivyoainishwa katika Sehemu ya 3(a)(1)(A)(i). - b. Andra rättigheter. + b. Haki nyingine. - 1. Moraliska rättigheter, såsom rätten till integritet, är inte licensierade under denna Offentliga Licens, inte heller reklam-, integritets- och/eller andra liknande personliga rättigheter; dock, i den utsträckning det är möjligt, avstår Licensgivaren från och/eller samtycker till att inte hävda sådana rättigheter som innehas av Licensgivaren i den begränsade utsträckning som är nödvändig för att tillåta dig att utöva de Licensierade Rättigheterna, men inte annars. + 1. Haki za kimaadili, kama haki ya uadilifu, hazijatolewa leseni chini ya Leseni hii ya Umma, wala haki za umaarufu, faragha, na/au haki nyingine za kibinafsi zinazofanana; hata hivyo, kwa kiwango kinachowezekana, Mmiliki wa Leseni anakataa na/au anakubali kutodai haki zozote kama hizo zinazoshikiliwa na Mmiliki wa Leseni kwa kiwango kidogo kinachohitajika ili kukuruhusu kutumia Haki Zilizotolewa, lakini si vinginevyo. - 2. Patent- och varumärkesrättigheter är inte licensierade under denna Offentliga Licens. + 2. Haki za patent na alama za biashara hazijatolewa leseni chini ya Leseni hii ya Umma. - 3. I den utsträckning det är möjligt avstår Licensgivaren från varje rättighet att samla in royalties från dig för utövandet av de Licensierade Rättigheterna, antingen direkt eller genom en insamlingsorganisation under något frivilligt eller avstående lagstadgat eller obligatoriskt licensieringssystem. I alla andra fall förbehåller Licensgivaren uttryckligen varje rättighet att samla in sådana royalties. + 3. Kwa kiwango kinachowezekana, Mmiliki wa Leseni anakataa haki yoyote ya kukusanya malipo kutoka kwako kwa matumizi ya Haki Zilizotolewa, iwe moja kwa moja au kupitia jamii ya ukusanyaji chini ya mpango wowote wa hiari au wa kisheria unaoweza kubatilishwa au wa lazima. Katika hali nyingine zote Mmiliki wa Leseni anahifadhi wazi haki yoyote ya kukusanya malipo hayo. -## Avsnitt 3 -- Licensvillkor. +Sehemu ya 3 -- Masharti ya Leseni. -Din utövning av de Licensierade Rättigheterna är uttryckligen föremål för följande villkor. +Matumizi yako ya Haki Zilizotolewa yamewekwa wazi chini ya masharti yafuatayo. - a. Erkännande. + a. Sifa. - 1. Om du Dela det Licensierade Materialet (inklusive i modifierad form), måste du: + 1. Ikiwa Utashiriki Nyenzo Zilizotolewa (ikiwa ni pamoja na kwa njia iliyorekebishwa), Lazima: - a. behålla följande om det tillhandahålls av Licensgivaren med det Licensierade Materialet: + a. kuhifadhi yafuatayo ikiwa yametolewa na Mmiliki wa Leseni na Nyenzo Zilizotolewa: - i. identifiering av skaparen/skaparna av det Licensierade Materialet och eventuella andra som utsetts att få erkännande, på ett rimligt sätt som begärs av Licensgivaren (inklusive genom pseudonym om det anges); + i. utambulisho wa muundaji wa Nyenzo Zilizotolewa na wengine walioteuliwa kupokea sifa, kwa njia yoyote inayofaa iliyotakiwa na Mmiliki wa Leseni (ikiwa ni pamoja na kwa jina bandia ikiwa limeteuliwa); - ii. en upphovsrättsnotis; + ii. taarifa ya hakimiliki; - iii. en notis som hänvisar till denna Offentliga Licens; + iii. taarifa inayorejelea Leseni hii ya Umma; - iv. en notis som hänvisar till friskrivningen av garantier; + iv. taarifa inayorejelea kukanusha dhamana; - v. en URI eller hyperlänk till det Licensierade Materialet i den utsträckning det är rimligt praktiskt; + v. URI au kiungo cha Nyenzo Zilizotolewa kwa kiwango kinachowezekana; - b. ange om du har modifierat det Licensierade Materialet och behålla en indikation av eventuella tidigare modifieringar; och + b. kuonyesha ikiwa Ulibadilisha Nyenzo Zilizotolewa na kuhifadhi dalili ya mabadiliko yoyote ya awali; na - c. ange att det Licensierade Materialet är licensierat under denna Offentliga Licens, och inkludera texten av, eller URI eller hyperlänk till, denna Offentliga Licens. + c. kuonyesha kwamba Nyenzo Zilizotolewa zimetolewa leseni chini ya Leseni hii ya Umma, na kujumuisha maandishi ya, au URI au kiungo cha, Leseni hii ya Umma. - 2. Du kan uppfylla villkoren i Avsnitt 3(a)(1) på vilket rimligt sätt som helst baserat på mediet, medlen och sammanhanget där du Dela det Licensierade Materialet. Till exempel kan det vara rimligt att uppfylla villkoren genom att tillhandahålla en URI eller hyperlänk till en resurs som innehåller den nödvändiga informationen. + 2. Unaweza kutimiza masharti katika Sehemu ya 3(a)(1) kwa njia yoyote inayofaa kulingana na vyombo vya habari, njia, na muktadha ambamo Unashiriki Nyenzo Zilizotolewa. Kwa mfano, inaweza kuwa sahihi kutimiza masharti kwa kutoa URI au kiungo cha rasilimali inayojumuisha taarifa inayohitajika. - 3. Om Licensgivaren begär det, måste du ta bort någon av den information som krävs enligt Avsnitt 3(a)(1)(A) i den utsträckning det är rimligt praktiskt. + 3. Ikiombwa na Mmiliki wa Leseni, Lazima uondoe taarifa yoyote inayohitajika na Sehemu ya 3(a)(1)(A) kwa kiwango kinachowezekana. - b. ShareAlike. + b. Kushiriki Sawa. - Utöver villkoren i Avsnitt 3(a), om du Dela Anpassat Material som du producerar, gäller följande villkor också. + Mbali na masharti katika Sehemu ya 3(a), ikiwa Utashiriki Nyenzo Zilizorekebishwa Unazozalisha, masharti yafuatayo pia yanatumika. - 1. Adapterns Licens som du tillämpar måste vara en Creative Commons-licens med samma Licensens Element, denna version eller senare, eller en BY-SA Kompatibel Licens. + 1. Leseni ya Mrekebishaji Unayotumia lazima iwe leseni ya Creative Commons yenye Vipengele vya Leseni sawa, toleo hili au baadaye, au Leseni Inayolingana na BY-SA. - 2. Du måste inkludera texten av, eller URI eller hyperlänk till, Adapterns Licens som du tillämpar. Du kan uppfylla detta villkor på vilket rimligt sätt som helst baserat på mediet, medlen och sammanhanget där du Dela Anpassat Material. + 2. Lazima ujumuishe maandishi ya, au URI au kiungo cha, Leseni ya Mrekebishaji Unayotumia. Unaweza kutimiza sharti hili kwa njia yoyote inayofaa kulingana na vyombo vya habari, njia, na muktadha ambamo Unashiriki Nyenzo Zilizorekebishwa. - 3. Du får inte erbjuda eller ålägga några ytterligare eller olika villkor eller tillämpa några Effektiva Teknologiska Åtgärder på Anpassat Material som begränsar utövandet av de rättigheter som beviljas under Adapterns Licens som du tillämpar. + 3. Huwezi kutoa au kuweka masharti yoyote ya ziada au tofauti, au kutumia Hatua za Kiteknolojia Zinazofaa kwa Nyenzo Zilizorekebishwa zinazozuia matumizi ya haki zinazotolewa chini ya Leseni ya Mrekebishaji Unayotumia. -## Avsnitt 4 -- Sui Generis Databasrättigheter. +Sehemu ya 4 -- Haki za Hifadhidata za Sui Generis. -Där de Licensierade Rättigheterna inkluderar Sui Generis Databasrättigheter som gäller för din användning av det Licensierade Materialet: +Ambapo Haki Zilizotolewa zinajumuisha Haki za Hifadhidata za Sui Generis zinazotumika kwa matumizi yako ya Nyenzo Zilizotolewa: - a. för att undvika tvivel, ger Avsnitt 2(a)(1) dig rätten att extrahera, återanvända, reproducera och Dela hela eller en väsentlig del av innehållet i databasen; + a. kwa kuepuka shaka, Sehemu ya 2(a)(1) inakupa haki ya kutoa, kutumia tena, kuzalisha, na Kushiriki yote au sehemu kubwa ya yaliyomo kwenye hifadhidata; - b. om du inkluderar hela eller en väsentlig del av databasens innehåll i en databas där du har Sui Generis Databasrättigheter, är då databasen där du har Sui Generis Databasrättigheter (men inte dess individuella innehåll) Anpassat Material, + b. ikiwa Utajumuisha yote au sehemu kubwa ya yaliyomo kwenye hifadhidata katika hifadhidata ambayo Unayo Haki za Hifadhidata za Sui Generis... +Haki, basi hifadhidata ambayo una Haki za Hifadhidata ya Sui Generis (lakini si maudhui yake ya kibinafsi) ni Nyenzo Iliyobadilishwa, - inklusive för syften av Avsnitt 3(b); och - c. du måste följa villkoren i Avsnitt 3(a) om du Dela hela eller en väsentlig del av innehållet i databasen. +ikiwa ni pamoja na kwa madhumuni ya Sehemu ya 3(b); na +c. Lazima uzingatie masharti katika Sehemu ya 3(a) ikiwa Utashiriki maudhui yote au sehemu kubwa ya hifadhidata. -För att undvika tvivel, kompletterar detta Avsnitt 4 och ersätter inte dina skyldigheter under denna Offentliga Licens där de Licensierade Rättigheterna inkluderar andra Upphovsrätt och liknande rättigheter. +Kwa kuepuka shaka, Sehemu hii ya 4 inaongeza na haibadilishi wajibu wako chini ya Leseni hii ya Umma ambapo Haki Zilizoruhusiwa zinajumuisha Haki nyingine za Hakimiliki na Haki Zilizofanana. -## Avsnitt 5 -- Friskrivning av garantier och begränsning av ansvar. +Sehemu ya 5 -- Kanusho la Dhamana na Kizuizi cha Dhima. - a. OM DET INTE ANNARS ÄR SEPARAT ÅTAGET AV LICENSGIVAREN, I DEN UTSTRÄCKNING DET ÄR MÖJLIGT, ERBJUDER LICENSGIVAREN DET LICENSIERADE MATERIAL SOM-ÄR OCH SOM-ÄR TILLGÄNGLIGT, OCH GÖR INGA UTTALANDEN ELLER GARANTIER AV NÅGOT SLAG ANGÅENDE DET LICENSIERADE MATERIAL, VARE SIG UTTRYCKLIGEN, UNDERFÖRSTÅTT, LAGSTADGAT ELLER ANNAT. DETTA INKLUDERAR, UTAN BEGRÄNSNING, GARANTIER FÖR ÄGANDERÄTT, SÄLJBARHET, LÄMPLIGHET FÖR ETT S +a. ISIPOKUWA IMESEMWA VINGINE NA MTOA LESENI, KADRI INAVYOWEZEKANA, MTOA LESENI ANATOA NYENZO ZILIZORUHUSIWA KAMA ILIVYO NA INAVYOPATIKANA, NA HATOI MAELEZO AU DHAMANA ZA AINA YOYOTE KUHUSU NYENZO ZILIZORUHUSIWA, IWE NI DHAMANA ZA MOJA KWA MOJA, ZILIZODOKEZWA, ZA KISHERIA, AU NYINGINE. HII INAJUMUISHA, BILA KIKOMO, DHAMANA ZA UMILIKI, UWEZO WA KUUZIKA, USTAHIKI KWA KUSUDI MAALUM, KUTOKUKIUKA, UKOSEFU WA DOSARI ZA NDANI AU NYINGINE, USAHIHI, AU UWEPO AU UKOSEFU WA MAKOSA, IWE YANAJULIKANA AU YANAWEZA KUGUNDULIKA. AMBAPO KANUSHO LA DHAMANA HALIRUHUSIWI KIKAMILIFU AU KWA SEHEMU, KANUSHO HILI HALIWEZI KUKUHUSU. -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiska översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller felaktiga tolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +b. KADRI INAVYOWEZEKANA, KWA HALI YOYOTE MTOA LESENI HATAWAJIBIKA KWAKO KWA NJIA YOYOTE YA KISHERIA (IKIWA NI PAMOJA NA, BILA KIKOMO, UZEMBE) AU VINGINEVYO KWA HASARA YOYOTE YA MOJA KWA MOJA, MAALUM, ISIYOKUWA YA MOJA KWA MOJA, YA BAHATI MBAYA, YA MATOKEO, YA ADHABU, YA MFANO, AU HASARA NYINGINE, GHARAMA, MATUMIZI, AU MADAI YANAYOTOKANA NA LESENI HII YA UMMA AU MATUMIZI YA NYENZO ZILIZORUHUSIWA, HATA KAMA MTOA LESENI AMEONYESHWA UWEZEKANO WA HASARA, GHARAMA, MATUMIZI, AU MADAI HAYO. AMBAPO KIKOMO CHA DHIMA HAKIRUHUSIWI KIKAMILIFU AU KWA SEHEMU, KIKOMO HIKI HAKIWEZI KUKUHUSU. + +c. Kanusho la dhamana na kizuizi cha dhima kilichotolewa hapo juu kitatafsiriwa kwa njia ambayo, kadri inavyowezekana, inakaribia zaidi kanusho kamili na msamaha wa dhima yote. + +Sehemu ya 6 -- Muda na Kusitisha. + +a. Leseni hii ya Umma inatumika kwa muda wa Hakimiliki na Haki Zilizofanana zilizopewa leseni hapa. Hata hivyo, ikiwa Utashindwa kuzingatia Leseni hii ya Umma, basi haki zako chini ya Leseni hii ya Umma zitasitishwa kiotomatiki. + +b. Ambapo haki yako ya kutumia Nyenzo Zilizoruhusiwa imesitishwa chini ya Sehemu ya 6(a), inarejeshwa: + +1. kiotomatiki kuanzia tarehe ukiukaji unapotatuliwa, mradi umetatuliwa ndani ya siku 30 tangu ugunduzi wako wa ukiukaji huo; au + +2. kwa urejeshwaji wa moja kwa moja na Mtoa Leseni. + +Kwa kuepuka shaka, Sehemu hii ya 6(b) haiathiri haki yoyote ambayo Mtoa Leseni anaweza kuwa nayo ya kutafuta suluhisho kwa ukiukaji wako wa Leseni hii ya Umma. + +c. Kwa kuepuka shaka, Mtoa Leseni anaweza pia kutoa Nyenzo Zilizoruhusiwa chini ya masharti au hali tofauti au kusitisha kusambaza Nyenzo Zilizoruhusiwa wakati wowote; hata hivyo, kufanya hivyo hakutasitisha Leseni hii ya Umma. + +d. Sehemu za 1, 5, 6, 7, na 8 zitaendelea kutumika baada ya kusitishwa kwa Leseni hii ya Umma. + +Sehemu ya 7 -- Masharti na Hali Nyingine. + +a. Mtoa Leseni hatalazimika kufuata masharti au hali yoyote ya ziada au tofauti uliyoeleza isipokuwa imekubaliwa wazi. + +b. Mipango yoyote, maelewano, au makubaliano kuhusu Nyenzo Zilizoruhusiwa ambayo hayajaelezwa hapa ni tofauti na huru na masharti ya Leseni hii ya Umma. + +Sehemu ya 8 -- Tafsiri. + +a. Kwa kuepuka shaka, Leseni hii ya Umma haipunguzi, haizuii, haibani, au kuweka masharti yoyote juu ya matumizi ya Nyenzo Zilizoruhusiwa ambayo yanaweza kufanywa kihalali bila ruhusa chini ya Leseni hii ya Umma. + +b. Kadri inavyowezekana, ikiwa kifungu chochote cha Leseni hii ya Umma kitachukuliwa kuwa hakiwezi kutekelezeka, kitarekebishwa kiotomatiki kwa kiwango cha chini kinachohitajika ili kufanya kiweze kutekelezeka. Ikiwa kifungu hakiwezi kurekebishwa, kitakatwa kutoka kwa Leseni hii ya Umma bila kuathiri utekelezaji wa masharti na hali zilizobaki. + +c. Hakuna sharti au hali ya Leseni hii ya Umma itakayosamehewa na hakuna kushindwa kuzingatia kutakakubaliwa isipokuwa imekubaliwa wazi na Mtoa Leseni. + +d. Hakuna chochote katika Leseni hii ya Umma kinachounda au kinaweza kufasiriwa kama kizuizi, au msamaha wa, haki yoyote au kinga inayotumika kwa Mtoa Leseni au Wewe, ikiwa ni pamoja na kutoka kwa taratibu za kisheria za mamlaka yoyote au mamlaka. + +======================================================================= + +Creative Commons si sehemu ya leseni zake za umma. Hata hivyo, Creative Commons inaweza kuchagua kutumia moja ya leseni zake za umma kwa nyenzo inazochapisha na katika hali hizo itachukuliwa kuwa "Mtoa Leseni." Maandishi ya leseni za umma za Creative Commons yamewekwa kwa umma chini ya CC0 Public Domain Dedication. Isipokuwa kwa madhumuni madogo ya kuonyesha kuwa nyenzo zimeshirikiwa chini ya leseni ya umma ya Creative Commons au kama inavyoruhusiwa vinginevyo na sera za Creative Commons zilizochapishwa kwenye creativecommons.org/policies, Creative Commons hairuhusu matumizi ya alama ya biashara "Creative Commons" au alama nyingine yoyote ya biashara au nembo ya Creative Commons bila idhini yake ya maandishi ya awali ikiwa ni pamoja na, bila kikomo, kuhusiana na marekebisho yoyote yasiyoruhusiwa ya leseni zake za umma au mipango yoyote mingine, maelewano, au makubaliano kuhusu matumizi ya nyenzo zilizopewa leseni. Kwa kuepuka shaka, aya hii si sehemu ya leseni za umma. + +Creative Commons inaweza kuwasiliana kupitia creativecommons.org. + +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/sw/lessons/sketchnotes/README.md b/translations/sw/lessons/sketchnotes/README.md index 0bae7707..d8753c6a 100644 --- a/translations/sw/lessons/sketchnotes/README.md +++ b/translations/sw/lessons/sketchnotes/README.md @@ -1,8 +1,17 @@ -Alla läroplansskisser kan laddas ner här. + +Sketchnoti zote za mtaala zinaweza kupakuliwa hapa. -🎨 Skapad av: Tomomi Imura (Twitter: [@girlie_mac](https://twitter.com/girlie_mac), GitHub: [girliemac](https://github.com/girliemac)) +🎨 Imeundwa na: 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/) -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av maskinbaserade AI-översättningstjänster. Även om vi strävar efter noggrannhet, vänligen var medveten om att automatiserade översättningar kan innehålla fel eller inkonsekvenser. Det ursprungliga dokumentet på sitt modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår från användningen av denna översättning. \ No newline at end of file +**Kanusho**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file diff --git a/translations/uk/README.md b/translations/uk/README.md new file mode 100644 index 00000000..e712e060 --- /dev/null +++ b/translations/uk/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)_ | + +Досліджуйте світ **Штучного інтелекту** (ШІ) за допомогою нашої 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 або [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). +* Практичні застосування ШІ, побудовані за допомогою **[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), **[Генеративного ШІ з 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/) для отримання додаткової інформації. +* **Глибока математика** глибокого навчання. Для цього рекомендуємо книгу [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 | [Автокодери та 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) | +| 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 | [Етика штучного інтелекту та відповідальний 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) | [Ноутбук](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`. Вікторини поступово локалізуються. +## Потрібна допомога + +Є пропозиції або знайшли орфографічні чи кодові помилки? Створіть issue або pull request. + +## Особлива подяка + +* **✍️ Основний автор:** [Dmitry Soshnikov](http://soshnikov.com), PhD +* **🔥 Редактор:** [Jen Looper](https://twitter.com/jenlooper), PhD +* **🎨 Ілюстратор скетчнотів:** [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) +- [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) +- [Web Dev для початківців](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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/SECURITY.md b/translations/uk/SECURITY.md new file mode 100644 index 00000000..8a29e2cb --- /dev/null +++ b/translations/uk/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-ключа; завантажте його зі сторінки [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). + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/etc/CODE_OF_CONDUCT.md b/translations/uk/etc/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..a4ffc8ff --- /dev/null +++ b/translations/uk/etc/CODE_OF_CONDUCT.md @@ -0,0 +1,21 @@ + +# Кодекс поведінки з відкритим кодом Microsoft + +Цей проєкт прийняв [Кодекс поведінки з відкритим кодом Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Ресурси: + +- [Кодекс поведінки з відкритим кодом Microsoft](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/uk/etc/CONTRIBUTING.md b/translations/uk/etc/CONTRIBUTING.md new file mode 100644 index 00000000..d70ccc4f --- /dev/null +++ b/translations/uk/etc/CONTRIBUTING.md @@ -0,0 +1,31 @@ + +# Внесення змін + +Цей проєкт вітає внески та пропозиції. Більшість внесків вимагають від вас погодитися з Угодою про ліцензування внесків (CLA), яка підтверджує, що ви маєте право і дійсно надаєте нам права на використання вашого внеску. Для деталей відвідайте https://cla.microsoft.com. + +Коли ви надсилаєте pull request, CLA-бот автоматично визначить, чи потрібно вам надати CLA, і відповідно позначить PR (наприклад, міткою, коментарем). Просто дотримуйтесь інструкцій, наданих ботом. Вам потрібно буде зробити це лише один раз для всіх репозиторіїв, які використовують нашу CLA. + +Цей проєкт прийняв [Кодекс поведінки 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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/etc/Mindmap.md b/translations/uk/etc/Mindmap.md new file mode 100644 index 00000000..532715d1 --- /dev/null +++ b/translations/uk/etc/Mindmap.md @@ -0,0 +1,85 @@ + +# Штучний інтелект + +## [Вступ до ШІ](https://github.com/microsoft/AI-For-Beginners/blob/main/lessons/1-Intro/README.md) + - Визначення ШІ + - Історія ШІ + - Підходи до ШІ + - Зверху вниз/Символічний + - Знизу вверх/Нейронний + - Еволюційний + - Синергетичний / Емерджентний ШІ + - [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) + - Представлення знань + - [Експертні системи](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) + - [Архітектури 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) + - [Автокодери та 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/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 + - [Основи ШІ: Дослідження NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77998-cacaste) + - [NLP з PyTorch](https://docs.microsoft.com/learn/modules/intro-natural-language-processing-pytorch/?WT.mc_id=academic-77998-cacaste) + - [NLP з 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) + - [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 + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/etc/SUPPORT.md b/translations/uk/etc/SUPPORT.md new file mode 100644 index 00000000..e84a2dc9 --- /dev/null +++ b/translations/uk/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/uk/etc/TRANSLATIONS.md b/translations/uk/etc/TRANSLATIONS.md new file mode 100644 index 00000000..d548786d --- /dev/null +++ b/translations/uk/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/uk/etc/quiz-app/README.md b/translations/uk/etc/quiz-app/README.md new file mode 100644 index 00000000..17824a23 --- /dev/null +++ b/translations/uk/etc/quiz-app/README.md @@ -0,0 +1,137 @@ + +# Вікторини + +Ці вікторини є попередніми та підсумковими тестами для навчальної програми з ШІ за посиланням 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. Форкніть GitHub-репозиторій +Переконайтеся, що код вашого статичного вебдодатку знаходиться у вашому GitHub-репозиторії. Форкніть цей репозиторій. + +2. Створіть статичний вебдодаток на Azure +- Створіть [обліковий запис Azure](http://azure.microsoft.com) +- Перейдіть до [порталу Azure](https://portal.azure.com) +- Натисніть "Створити ресурс" і знайдіть "Static Web App". +- Натисніть "Створити". + +3. Налаштуйте статичний вебдодаток +- Основне: + - Підписка: Виберіть вашу підписку Azure. + - Група ресурсів: Створіть нову групу ресурсів або використайте існуючу. + - Назва: Вкажіть назву для вашого статичного вебдодатку. + - Регіон: Виберіть регіон, найближчий до ваших користувачів. + +- #### Деталі розгортання: + - Джерело: Виберіть "GitHub". + - Обліковий запис GitHub: Авторизуйте Azure для доступу до вашого облікового запису GitHub. + - Організація: Виберіть вашу організацію GitHub. + - Репозиторій: Виберіть репозиторій, що містить ваш статичний вебдодаток. + - Гілка: Виберіть гілку, з якої ви хочете розгортати. + +- #### Деталі збірки: + - Пресети збірки: Виберіть фреймворк, на якому побудовано ваш додаток (наприклад, React, Angular, Vue тощо). + - Розташування додатку: Вкажіть папку, що містить код вашого додатку (наприклад, /, якщо він у корені). + - Розташування API: Якщо у вас є API, вкажіть його розташування (необов’язково). + - Розташування вихідних файлів: Вкажіть папку, де генерується вихідний код збірки (наприклад, build або dist). + +4. Перевірте та створіть +Перевірте ваші налаштування та натисніть "Створити". Azure налаштує необхідні ресурси та створить GitHub Actions workflow у вашому репозиторії. + +5. GitHub Actions Workflow +Azure автоматично створить файл GitHub Actions workflow у вашому репозиторії (.github/workflows/azure-static-web-apps-.yml). Цей workflow буде відповідати за процес збірки та розгортання. + +6. Моніторинг розгортання +Перейдіть на вкладку "Actions" у вашому репозиторії GitHub. +Ви побачите, що workflow виконується. Цей workflow збере та розгорне ваш статичний вебдодаток на Azure. +Після завершення workflow ваш додаток буде доступний за наданою URL-адресою Azure. + +### Приклад файлу Workflow + +Ось приклад того, як може виглядати файл GitHub Actions workflow: +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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/0-course-setup/for-teachers.md b/translations/uk/lessons/0-course-setup/for-teachers.md new file mode 100644 index 00000000..e0a994da --- /dev/null +++ b/translations/uk/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 у вашому класному репозиторії. + +Існує багато способів організувати це в онлайн-класі. Будь ласка, повідомте нам, що працює найкраще для вас! + +## Будь ласка, поділіться своїми думками + +Ми хочемо, щоб ця навчальна програма була корисною для вас і ваших студентів. Будь ласка, залишайте свої відгуки на дошках обговорень! + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/0-course-setup/how-to-run.md b/translations/uk/lessons/0-course-setup/how-to-run.md new file mode 100644 index 00000000..93be588b --- /dev/null +++ b/translations/uk/lessons/0-course-setup/how-to-run.md @@ -0,0 +1,77 @@ + +# Як запустити код + +Цей курс містить багато прикладів коду та лабораторних робіт, які ви, ймовірно, захочете виконати. Для цього вам потрібно мати можливість запускати Python-код у Jupyter Notebooks, які є частиною цього курсу. У вас є кілька варіантів для запуску коду: + +## Запуск локально на вашому комп'ютері + +Щоб запустити код локально на вашому комп'ютері, вам потрібно мати встановлену якусь версію 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 і почати його використовувати. + +Ви також можете скористатися Google Colab, який надає безкоштовну підтримку GPU, і завантажити туди Jupyter Notebooks для виконання їх по черзі. + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/0-course-setup/setup.md b/translations/uk/lessons/0-course-setup/setup.md new file mode 100644 index 00000000..20662996 --- /dev/null +++ b/translations/uk/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/). + +> **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: `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/uk/lessons/1-Intro/README.md b/translations/uk/lessons/1-Intro/README.md new file mode 100644 index 00000000..bc0959dc --- /dev/null +++ b/translations/uk/lessons/1-Intro/README.md @@ -0,0 +1,66 @@ + +> Зображення від [Дмитра Сошникова](http://soshnikov.com) + +З часом обчислювальні ресурси стали дешевшими, а даних стало більше, тому підходи на основі нейронних мереж почали демонструвати чудову продуктивність, конкуруючи з людьми в багатьох сферах, таких як комп'ютерний зір або розуміння мови. У останнє десятиліття термін "Штучний Інтелект" здебільшого використовується як синонім до нейронних мереж, оскільки більшість успіхів у сфері ШІ, про які ми чуємо, базуються саме на них. + +Ми можемо спостерігати, як змінювалися підходи, наприклад, у створенні комп'ютерної програми для гри в шахи: + +* Ранні шахові програми базувалися на пошуку — програма явно намагалася оцінити можливі ходи суперника на певну кількість наступних ходів і обирала оптимальний хід, ґрунтуючись на найкращій позиції, яку можна досягти за кілька ходів. Це призвело до розробки так званого алгоритму пошуку [альфа-бета відсікання](https://uk.wikipedia.org/wiki/Альфа-бета_відсікання). +* Стратегії пошуку добре працюють наприкінці гри, коли простір пошуку обмежений невеликою кількістю можливих ходів. Однак на початку гри простір пошуку величезний, і алгоритм можна покращити, навчаючись на існуючих партіях між людьми. Подальші експерименти використовували так зване [випадкове міркування](https://uk.wikipedia.org/wiki/Case-based_reasoning), де програма шукала випадки в базі знань, дуже схожі на поточну позицію в грі. +* Сучасні програми, які перемагають людей, базуються на нейронних мережах і [підкріплювальному навчанні](https://uk.wikipedia.org/wiki/Підкріплювальне_навчання), де програми навчаються грати, граючи довгий час самі з собою і вчаться на власних помилках — так само, як люди вчаться грати в шахи. Однак комп'ютерна програма може зіграти набагато більше партій за значно коротший час, і тому може навчатися набагато швидше. + +✅ Проведіть невелике дослідження про інші ігри, в які грали ШІ. + +Аналогічно, ми можемо побачити, як змінювався підхід до створення "розмовляючих програм" (які могли б пройти тест Тьюринга): + +* Ранні програми такого типу, як [Eliza](https://uk.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/). + +![Точність ILSVRC](../../../../lessons/1-Intro/images/ilsvrc.gif) + +> Зображення [Дмитра Сошникова](http://soshnikov.com) + +У 2012 році [Convolutional Neural Networks](../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/uk/lessons/1-Intro/assignment.md b/translations/uk/lessons/1-Intro/assignment.md new file mode 100644 index 00000000..171fe48e --- /dev/null +++ b/translations/uk/lessons/1-Intro/assignment.md @@ -0,0 +1,15 @@ + +# Гейм Джем + +Ігри — це сфера, яка зазнала значного впливу розвитку штучного інтелекту (ШІ) та машинного навчання (МН). У цьому завданні напишіть короткий есе про гру, яка вам подобається і яка була під впливом еволюції ШІ. Це має бути достатньо стара гра, щоб на неї впливали різні типи комп'ютерних обчислювальних систем. Хорошим прикладом є шахи або Ґо, але також зверніть увагу на відеоігри, такі як Pong або Pac-Man. Напишіть есе, яке обговорює минуле, теперішнє та майбутнє гри з точки зору ШІ. + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/2-Symbolic/README.md b/translations/uk/lessons/2-Symbolic/README.md new file mode 100644 index 00000000..07ac50d4 --- /dev/null +++ b/translations/uk/lessons/2-Symbolic/README.md @@ -0,0 +1,248 @@ + +# Представлення знань та експертні системи + +![Резюме змісту про символічний AI](../../../../translated_images/ai-symbolic.715a30cb610411a6964d2e2f23f24364cb338a07cb4844c1f97084d366e586c3.uk.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). Вона містить наступні концепти: + +* **Дані** — це те, що представлено на фізичних носіях, таких як написаний текст або вимовлені слова. Дані існують незалежно від людей і можуть передаватися між ними. +* **Інформація** — це те, як ми інтерпретуємо дані у нашій голові. Наприклад, коли ми чуємо слово *комп'ютер*, ми маємо певне розуміння, що це таке. +* **Знання** — це інформація, інтегрована у нашу модель світу. Наприклад, коли ми дізнаємося, що таке комп'ютер, ми починаємо мати уявлення про те, як він працює, скільки коштує і для чого його можна використовувати. Ця мережа взаємопов'язаних концептів формує наші знання. +* **Мудрість** — це ще один рівень нашого розуміння світу, який представляє *мета-знання*, тобто уявлення про те, як і коли знання слід використовувати. + +*Зображення [з Вікіпедії](https://commons.wikimedia.org/w/index.php?curid=37705247), By Longlivetheux - Own work, CC BY-SA 4.0* + +Таким чином, проблема **представлення знань** полягає у пошуку ефективного способу представлення знань у комп'ютері у вигляді даних, щоб зробити їх автоматично використовуваними. Це можна розглядати як спектр: + +![Спектр представлення знань](../../../../translated_images/knowledge-spectrum.b60df631852c0217e941485b79c9eee40ebd574f15f18609cec5758fcb384bf3.uk.png) + +> Зображення від [Dmitry Soshnikov](http://soshnikov.com) + +* Ліворуч знаходяться дуже прості типи представлення знань, які можуть ефективно використовуватися комп'ютерами. Найпростіший — алгоритмічний, коли знання представлені комп'ютерною програмою. Однак це не найкращий спосіб представлення знань, оскільки він не є гнучким. Знання у нашій голові часто не є алгоритмічними. +* Праворуч знаходяться представлення, такі як природний текст. Це найпотужніший спосіб, але він не може бути використаний для автоматичного міркування. + +> ✅ Подумайте хвилину про те, як ви представляєте знання у своїй голові і перетворюєте їх на нотатки. Чи є якийсь формат, який добре працює для вас, щоб сприяти запам'ятовуванню? + +## Класифікація комп'ютерних методів представлення знань + +Ми можемо класифікувати різні методи представлення знань у комп'ютері за наступними категоріями: + +* **Мережеві представлення** базуються на тому, що у нашій голові є мережа взаємопов'язаних концептів. Ми можемо спробувати відтворити такі ж мережі у вигляді графа у комп'ютері — так званої **семантичної мережі**. + +1. **Трійки об'єкт-атрибут-значення** або **пари атрибут-значення**. Оскільки граф може бути представлений у комп'ютері як список вузлів і ребер, ми можемо представити семантичну мережу у вигляді списку трійок, що містять об'єкти, атрибути і значення. Наприклад, ми створюємо наступні трійки про мови програмування: + +Об'єкт | Атрибут | Значення +-------|---------|--------- +Python | є | Мова без типізації +Python | винайдений | Guido van Rossum +Python | синтаксис блоку | відступи +Мова без типізації | не має | визначень типів + +> ✅ Подумайте, як трійки можуть бути використані для представлення інших типів знань. + +2. **Ієрархічні представлення** підкреслюють той факт, що ми часто створюємо ієрархію об'єктів у нашій голові. Наприклад, ми знаємо, що канарка — це птах, і всі птахи мають крила. Ми також маємо уявлення про те, якого кольору зазвичай канарка і яка її швидкість польоту. + + - **Представлення у вигляді фреймів** базується на представленні кожного об'єкта або класу об'єктів як **фрейму**, який містить **слоти**. Слоти мають можливі значення за замовчуванням, обмеження значень або збережені процедури, які можна викликати для отримання значення слота. Усі фрейми формують ієрархію, схожу на ієрархію об'єктів у мовах програмування, орієнтованих на об'єкти. + - **Сценарії** — це особливий вид фреймів, які представляють складні ситуації, що можуть розгортатися у часі. + +**Python** + +Слот | Значення | Значення за замовчуванням | Інтервал | +-----|----------|---------------------------|----------| +Назва | Python | | | +Є | Мова без типізації | | | +Стиль змінних | | CamelCase | | +Довжина програми | | | 5-5000 рядків | +Синтаксис блоку | Відступ | | | + +3. **Процедурні представлення** базуються на представленні знань у вигляді списку дій, які можуть бути виконані за певних умов. + - Правила продукції — це if-then твердження, які дозволяють робити висновки. Наприклад, лікар може мати правило, яке говорить, що **ЯКЩО** у пацієнта висока температура **АБО** високий рівень C-реактивного білка у аналізі крові **ТОДІ** у нього запалення. Як тільки ми стикаємося з однією з умов, ми можемо зробити висновок про запалення, а потім використовувати його у подальших міркуваннях. + - Алгоритми можна вважати ще однією формою процедурного представлення, хоча вони майже ніколи не використовуються безпосередньо у системах, заснованих на знаннях. + +4. **Логіка** була спочатку запропонована Арістотелем як спосіб представлення універсальних людських знань. + - Логіка предикатів як математична теорія є занадто багатою, щоб бути обчислюваною, тому зазвичай використовується її підмножина, така як клаузи Хорна, що використовуються у Prolog. + - Описова логіка — це сімейство логічних систем, які використовуються для представлення і міркування про ієрархії об'єктів у розподілених представленнях знань, таких як *семантична мережа*. + +## Експертні системи + +Одним із ранніх успіхів символічного AI були так звані **експертні системи** — комп'ютерні системи, які були розроблені для того, щоб діяти як експерт у певній обмеженій області проблем. Вони базувалися на **базі знань**, отриманій від одного або кількох людських експертів, і містили **мотор виведення**, який виконував певні міркування на її основі. + +![Архітектура людини](../../../../translated_images/arch-human.5d4d35f1bba3ab1cdfda96af2f10b89574eb31e9796d0e3011cd9beda1c35112.uk.png) | ![Система, заснована на знаннях](../../../../translated_images/arch-kbs.3ec5c150b09fa8dadc2beb0931a4983c9e2b03913a89eebcc103b5bb841b0212.uk.png) +---------------------------------------------|------------------------------------------------ +Спрощена структура людської нервової системи | Архітектура системи, заснованої на знаннях + +Експертні системи побудовані як система людського мислення, яка містить **короткострокову пам'ять** і **довгострокову пам'ять**. Аналогічно, у системах, заснованих на знаннях, ми розрізняємо наступні компоненти: + +* **Пам'ять проблеми**: містить знання про проблему, яка зараз вирішується, тобто температуру або кров'яний тиск пацієнта, чи є у нього запалення тощо. Ці знання також називаються **статичними знаннями**, оскільки вони містять знімок того, що ми зараз знаємо про проблему — так званий *стан проблеми*. +* **База знань**: представляє довгострокові знання про область проблеми. Вона отримується вручну від людських експертів і не змінюється від консультації до консультації. Оскільки вона дозволяє нам переходити від одного стану проблеми до іншого, її також називають **динамічними знаннями**. +* **Мотор виведення**: координує весь процес пошуку у просторі станів проблеми, задаючи питання користувачеві, коли це необхідно. Він також відповідає за пошук правильних правил, які слід застосувати до кожного стану. + +Наприклад, розглянемо наступну експертну систему для визначення тварини на основі її фізичних характеристик: + +![AND-OR дерево](../../../../translated_images/AND-OR-Tree.5592d2c70187f283703c8e9c0d69d6a786eb370f4ace67f9a7aae5ada3d260b0.uk.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 дерево на тему, яка вам подобається! + +### Пряме vs. зворотне виведення + +Описаний вище процес називається **прямим виведенням**. Він починається з деяких початкових даних про проблему, доступних у робочій пам'яті, а потім виконує наступний цикл міркувань: + +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+. У якийсь момент правила стають занадто складними, щоб тримати всі їх у пам'яті, і саме тоді ви можете почати замислюватися, чому система приймає певні рішення. Однак важливою характеристикою систем, заснованих на знаннях, є те, що ви завжди можете *пояснити*, як саме було прийнято будь-яке з рішень. +## Онтології та Семантична павутина + +Наприкінці 20-го століття була ініціатива використати представлення знань для анотування ресурсів Інтернету, щоб можна було знаходити ресурси, які відповідають дуже специфічним запитам. Цей рух називався **Семантична павутина**, і він базувався на кількох концепціях: + +- Спеціальне представлення знань, засноване на **[логіці описів](https://en.wikipedia.org/wiki/Description_logic)** (DL). Воно схоже на представлення знань у рамках, оскільки будує ієрархію об'єктів із властивостями, але має формальну логічну семантику та висновки. Існує ціла родина DL, яка балансує між виразністю та алгоритмічною складністю висновків. +- Розподілене представлення знань, де всі концепції представлені глобальним ідентифікатором 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` — це деякі загальновідомі та універсально прийняті URI для вираження концепцій *автора* та *дати створення*. + +У більш складному випадку, якщо ми хочемо визначити список авторів, ми можемо використати деякі структури даних, визначені в RDF. + + + +> Діаграми вище створені [Дмитром Сошниковим](http://soshnikov.com) + +Прогрес у створенні Семантичної павутини був дещо уповільнений через успіх пошукових систем і методів обробки природної мови, які дозволяють витягувати структуровані дані з тексту. Однак у деяких областях все ще докладаються значні зусилля для підтримки онтологій і баз знань. Кілька проектів, які варто відзначити: + +* [WikiData](https://wikidata.org/) — це колекція машинозчитуваних баз знань, пов'язаних із Вікіпедією. Більшість даних добувається з *InfoBoxes* Вікіпедії, шматків структурованого контенту всередині сторінок Вікіпедії. Ви можете [запитувати](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/). Завантажте його або використовуйте онлайн. + + + +*Веб-редактор 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 для групування новинних статей у кілька категорій. + +## Висновок + +Сьогодні AI часто вважається синонімом *машинного навчання* або *нейронних мереж*. Однак людина також демонструє явне мислення, яке наразі не обробляється нейронними мережами. У реальних проектах явне мислення все ще використовується для виконання завдань, які потребують пояснень або можливості змінювати поведінку системи контрольованим чином. + +## 🚀 Виклик + +У блокноті Family Ontology, пов'язаному з цим уроком, є можливість експериментувати з іншими сімейними відносинами. Спробуйте знайти нові зв'язки між людьми в родинному дереві. + +## [Тест після лекції](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/uk/lessons/2-Symbolic/assignment.md b/translations/uk/lessons/2-Symbolic/assignment.md new file mode 100644 index 00000000..da9e55c2 --- /dev/null +++ b/translations/uk/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/uk/lessons/3-NeuralNetworks/03-Perceptron/README.md b/translations/uk/lessons/3-NeuralNetworks/03-Perceptron/README.md new file mode 100644 index 00000000..e4c29212 --- /dev/null +++ b/translations/uk/lessons/3-NeuralNetworks/03-Perceptron/README.md @@ -0,0 +1,104 @@ + +# Вступ до нейронних мереж: Перцептрон + +## [Тест перед лекцією](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/103) + +Однією з перших спроб реалізувати щось схоже на сучасну нейронну мережу була робота Френка Розенблатта з Корнельської аеронавтичної лабораторії у 1957 році. Це була апаратна реалізація під назвою "Mark-1", створена для розпізнавання простих геометричних фігур, таких як трикутники, квадрати та кола. + +| | | +|--------------|-----------| +|Френк Розенблатт | Перцептрон Mark 1| + +> Зображення [з Вікіпедії](https://en.wikipedia.org/wiki/Perceptron) + +Вхідне зображення представлялося у вигляді масиву з 20x20 фоточутливих елементів, тому нейронна мережа мала 400 входів і один бінарний вихід. Проста мережа містила один нейрон, який також називався **пороговим логічним елементом**. Ваги нейронної мережі працювали як потенціометри, які потрібно було вручну налаштовувати під час навчання. + +> ✅ Потенціометр — це пристрій, який дозволяє користувачеві регулювати опір у колі. + +> У той час The New York Times писала про перцептрон: *ембріон електронного комп'ютера, який [ВМС] очікують, зможе ходити, говорити, бачити, писати, відтворювати себе і усвідомлювати своє існування.* + +## Модель перцептрона + +Припустимо, що у нашій моделі є 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 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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md b/translations/uk/lessons/3-NeuralNetworks/03-Perceptron/lab/README.md new file mode 100644 index 00000000..a1cc04d9 --- /dev/null +++ b/translations/uk/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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/3-NeuralNetworks/04-OwnFramework/README.md b/translations/uk/lessons/3-NeuralNetworks/04-OwnFramework/README.md new file mode 100644 index 00000000..0314f732 --- /dev/null +++ b/translations/uk/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'. + +обчислювальний граф + +> 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/uk/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md b/translations/uk/lessons/3-NeuralNetworks/04-OwnFramework/lab/README.md new file mode 100644 index 00000000..f5142518 --- /dev/null +++ b/translations/uk/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) + +## Запитання + +У результаті цієї лабораторної роботи спробуйте відповісти на наступні запитання: + +- Чи впливає функція активації між шарами на продуктивність мережі? +- Чи потрібна для цього завдання дво- або тришарова мережа? +- Чи виникли у вас проблеми з навчанням мережі? Особливо, коли кількість шарів збільшувалася. +- Як поводяться ваги мережі під час навчання? Ви можете побудувати графік максимальної абсолютної величини вагів залежно від епохи, щоб зрозуміти взаємозв’язок. + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/3-NeuralNetworks/05-Frameworks/README.md b/translations/uk/lessons/3-NeuralNetworks/05-Frameworks/README.md new file mode 100644 index 00000000..541b9d56 --- /dev/null +++ b/translations/uk/lessons/3-NeuralNetworks/05-Frameworks/README.md @@ -0,0 +1,132 @@ + +# Фреймворки для нейронних мереж + +Як ми вже дізналися, для ефективного навчання нейронних мереж необхідно виконати дві основні задачі: + +* Працювати з тензорами, наприклад, множити, додавати та обчислювати функції, такі як сигмоїда або 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 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` на графіках нижче): + +![linear](../../../../../translated_images/overfit1.f24b71c6f652e59e6bed7245ffbeaecc3ba320e16e2221f6832b432052c4da43.uk.jpg) | ![overfit](../../../../../translated_images/overfit2.131f5800ae10ca5e41d12a411f5f705d9ee38b1b10916f284b787028dd55cc1c.uk.jpg) +-------------------------|-------------------------- +**Лінійна модель, 2 параметри** | **Нелінійна модель, 7 параметрів** +Помилка навчання = 5.3 | Помилка навчання = 0 +Помилка валідації = 5.1 | Помилка валідації = 20 + +* Ліворуч ми бачимо хорошу апроксимацію прямою лінією. Оскільки кількість параметрів є адекватною, модель правильно розуміє розподіл точок. +* Праворуч модель занадто потужна. Оскільки у нас є лише 5 точок, а модель має 7 параметрів, вона може налаштуватися так, щоб проходити через усі точки, зводячи помилку навчання до 0. Однак це заважає моделі зрозуміти правильний шаблон даних, тому помилка валідації дуже висока. + +Дуже важливо знайти правильний баланс між складністю моделі (кількістю параметрів) і кількістю навчальних зразків. + +## Чому виникає перенавчання + + * Недостатньо навчальних даних + * Занадто потужна модель + * Занадто багато шуму у вхідних даних + +## Як виявити перенавчання + +Як видно з графіка вище, перенавчання можна виявити за дуже низькою помилкою навчання і високою помилкою валідації. Зазвичай під час навчання ми бачимо, як помилки навчання і валідації починають зменшуватися, а потім у певний момент помилка валідації може перестати зменшуватися і почати зростати. Це буде ознакою перенавчання і сигналом, що, ймовірно, слід припинити навчання (або принаймні зробити знімок моделі). + +![overfitting](../../../../../translated_images/Overfitting.408ad91cd90b4371d0a81f4287e1409c359751adeb1ae450332af50e84f08c3e.uk.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). Якщо ми розглянемо можливі джерела помилок у нашій моделі, то побачимо два типи помилок: + +* **Помилки зміщення** виникають через те, що наш алгоритм не може правильно захопити взаємозв’язок між навчальними даними. Це може бути наслідком того, що наша модель недостатньо потужна (**недонавчання**). +* **Помилки дисперсії**, які виникають через те, що модель апроксимує шум у вхідних даних замість значущих взаємозв’язків (**перенавчання**). + +Під час навчання помилка зміщення зменшується (оскільки наша модель навчається апроксимувати дані), а помилка дисперсії збільшується. Важливо припинити навчання — або вручну (коли ми виявляємо перенавчання), або автоматично (впроваджуючи регуляризацію) — щоб запобігти перенавчанню. + +## Висновок + +У цьому уроці ви дізналися про відмінності між різними API для двох найпопулярніших фреймворків штучного інтелекту, 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/uk/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md b/translations/uk/lessons/3-NeuralNetworks/05-Frameworks/lab/README.md new file mode 100644 index 00000000..ebe65fd8 --- /dev/null +++ b/translations/uk/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)** – приклад задачі з табличними вхідними даними, яку можна вирішити за допомогою класичних методів машинного навчання. Вашою метою буде класифікувати іриси на 3 класи, базуючись на 4 числових параметрах. +2. **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/uk/lessons/3-NeuralNetworks/README.md b/translations/uk/lessons/3-NeuralNetworks/README.md new file mode 100644 index 00000000..3bbdd223 --- /dev/null +++ b/translations/uk/lessons/3-NeuralNetworks/README.md @@ -0,0 +1,60 @@ + +# Вступ до нейронних мереж + +![Резюме змісту "Вступ до нейронних мереж" у вигляді малюнка](../../../../translated_images/ai-neuralnetworks.1c687ae40bc86e834f497844866a26d3e0886650a67a4bbe29442e2f157d3b18.uk.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.uk.jpg) | ![Модель нейрона](../../../../translated_images/artneuron.1a5daa88d20ebe6f5824ddb89fba0bdaaf49f67e8230c1afbec42909df1fc17e.uk.png) +----|---- +Реальний нейрон *([Зображення](https://en.wikipedia.org/wiki/Synapse#/media/File:SynapseSchematic_lines.svg) з Wikipedia)* | Штучний нейрон *(Зображення автора)* + +Таким чином, найпростіша математична модель нейрона містить кілька входів 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) Воррена МакКалока і Волтера Піттса у 1943 році. Дональд Хебб у своїй книзі "[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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильне тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/06-IntroCV/README.md b/translations/uk/lessons/4-ComputerVision/06-IntroCV/README.md new file mode 100644 index 00000000..f06e124d --- /dev/null +++ b/translations/uk/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++. Ви також можете викликати 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)` +* Зміна **яскравості та контрасту** зображення може бути виконана за допомогою маніпуляцій з масивами 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.uk.jpeg) | ![Попередньо оброблене зображення](../../../../../translated_images/braille-result.46530fea020b03c76aac532d7d6eeef7f6fb35b55b1001cd21627907dabef3ed.uk.png) | ![Символи шрифту Брайля](../../../../../translated_images/braille-symbols.0159185ab69d533909dc4d7d26a1971b51401c6a80eb3a5584f250ea880af88b.uk.png) +----|-----|----- + +> Зображення з [OpenCV.ipynb](../../../../../lessons/4-ComputerVision/06-IntroCV/OpenCV.ipynb) + +* **Детекція руху у відео за допомогою різниці кадрів**. Якщо камера нерухома, то кадри з її потоку мають бути досить схожими один на одного. Оскільки кадри представлені у вигляді масивів, просто віднімаючи ці масиви для двох послідовних кадрів, ми отримаємо різницю пікселів, яка має бути низькою для статичних кадрів і ставати вищою, коли у зображенні відбувається значний рух. + +![Зображення кадрів відео та різниці кадрів](../../../../../translated_images/frame-difference.706f805491a0883c938e16447bf5eb2f7d69e812c7f743cbe7d7c7645168f81f.uk.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.uk.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/uk/lessons/4-ComputerVision/06-IntroCV/lab/README.md b/translations/uk/lessons/4-ComputerVision/06-IntroCV/lab/README.md new file mode 100644 index 00000000..fc29b994 --- /dev/null +++ b/translations/uk/lessons/4-ComputerVision/06-IntroCV/lab/README.md @@ -0,0 +1,31 @@ + +# Виявлення рухів за допомогою оптичного потоку + +Лабораторне завдання з [курсу "AI for Beginners"](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/uk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md b/translations/uk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md new file mode 100644 index 00000000..3fd4b497 --- /dev/null +++ b/translations/uk/lessons/4-ComputerVision/07-ConvNets/CNN_Architectures.md @@ -0,0 +1,73 @@ + +# Відомі архітектури CNN + +### VGG-16 + +VGG-16 — це мережа, яка досягла точності 92.7% у класифікації ImageNet (top-5) у 2014 році. Вона має наступну структуру шарів: + +![ImageNet Layers](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.uk.jpg) + +Як видно, VGG слідує традиційній пірамідальній архітектурі, яка є послідовністю шарів згортки та пулінгу. + +![ImageNet Pyramid](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.uk.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). + +## Висновок + +У цьому розділі ви дізналися основну концепцію нейронних мереж для комп’ютерного зору — згорткові мережі. Реальні архітектури, які забезпечують класифікацію зображень, виявлення об’єктів і навіть генерацію зображень, базуються на CNN, просто з більшою кількістю шарів і деякими додатковими трюками тренування. + +## 🚀 Виклик + +У супровідних блокнотах є примітки внизу про те, як досягти більшої точності. Проведіть експерименти, щоб побачити, чи зможете ви досягти вищої точності. + +## [Тест після лекції](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/207) + +## Огляд і самостійне навчання + +Хоча CNN найчастіше використовуються для завдань комп’ютерного зору, вони загалом добре підходять для вилучення шаблонів фіксованого розміру. Наприклад, якщо ми працюємо зі звуками, ми також можемо використовувати CNN для пошуку певних шаблонів в аудіосигналі — у цьому випадку фільтри будуть одномірними (і така CNN називатиметься 1D-CNN). Також іноді використовується 3D-CNN для вилучення ознак у багатовимірному просторі, наприклад, певних подій, що відбуваються на відео — CNN може захоплювати певні шаблони змін ознак з часом. Проведіть огляд і самостійне навчання про інші завдання, які можна виконувати за допомогою CNN. + +## [Завдання](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/uk/lessons/4-ComputerVision/07-ConvNets/README.md b/translations/uk/lessons/4-ComputerVision/07-ConvNets/README.md new file mode 100644 index 00000000..14cbf23e --- /dev/null +++ b/translations/uk/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.uk.png) | ![Фільтр горизонтальних країв](../../../../../translated_images/filter-horiz.59b80ed4feb946efbe201a7fe3ca95abb3364e266e6fd90820cb893b4d3a6dda.uk.png) +----|---- + +> Зображення Дмитра Сошникова + +Наприклад, якщо ми застосуємо 3x3 фільтри вертикальних і горизонтальних країв до цифр MNIST, ми можемо отримати виділення (наприклад, високі значення) там, де є вертикальні та горизонтальні краї в нашому оригінальному зображенні. Таким чином, ці два фільтри можна використовувати для "пошуку" країв. Аналогічно, ми можемо створювати різні фільтри для пошуку інших низькорівневих шаблонів: + +> Зображення [Leung-Malik Filter Bank](https://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html) + +Однак, хоча ми можемо створювати фільтри для вилучення певних шаблонів вручну, ми також можемо спроєктувати мережу таким чином, щоб вона навчалася шаблонів автоматично. Це одна з основних ідей CNN. + +## Основні ідеї CNN + +Робота CNN базується на таких важливих ідеях: + +* Конволюційні фільтри можуть вилучати шаблони +* Ми можемо спроєктувати мережу таким чином, щоб фільтри навчалися автоматично +* Ми можемо використовувати той самий підхід для пошуку шаблонів у високорівневих ознаках, а не лише в оригінальному зображенні. Таким чином, вилучення ознак у CNN працює на ієрархії ознак, починаючи з низькорівневих комбінацій пікселів і до високорівневих комбінацій частин зображення. + +![Ієрархічне вилучення ознак](../../../../../translated_images/FeatureExtractionCNN.d9b456cbdae7cb643fde3032b81b2940e3cf8be842e29afac3f482725ba7f95c.uk.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, мережі, яка досягла 92.7% точності в топ-5 класифікації ImageNet у 2014 році: + +![Шари ImageNet](../../../../../translated_images/vgg-16-arch1.d901a5583b3a51baeaab3e768567d921e5d54befa46e1e642616c5458c934028.uk.jpg) + +![Піраміда ImageNet](../../../../../translated_images/vgg-16-arch.64ff2137f50dd49fdaa786e3f3a975b3f22615efd13efb19c5d22f12e01451a1.uk.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) + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/07-ConvNets/lab/README.md b/translations/uk/lessons/4-ComputerVision/07-ConvNets/lab/README.md new file mode 100644 index 00000000..e5cde789 --- /dev/null +++ b/translations/uk/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.uk.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/uk/lessons/4-ComputerVision/08-TransferLearning/README.md b/translations/uk/lessons/4-ComputerVision/08-TransferLearning/README.md new file mode 100644 index 00000000..755f90d3 --- /dev/null +++ b/translations/uk/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 у 2015 році. Вони мають більше шарів, а отже, потребують більше ресурсів. +* **MobileNet** — це сімейство моделей зі зменшеним розміром, які підходять для мобільних пристроїв. Використовуйте їх, якщо у вас обмежені ресурси і ви можете пожертвувати трохи точністю. + +Ось приклади ознак, вилучених із зображення кота за допомогою мережі VGG-16: + +![Ознаки, вилучені VGG-16](../../../../../translated_images/features.6291f9c7ba3a0b951af88fc9864632b9115365410765680680d30c927dd67354.uk.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.uk.png) + +Однак, якщо ми це зробимо, ми отримаємо щось дуже схоже на випадковий шум. Це тому, що *існує багато способів змусити мережу думати, що вхідне зображення — це кіт*, включаючи ті, які не мають сенсу візуально. Хоча ці зображення містять багато шаблонів, типових для кота, немає нічого, що обмежувало б їх бути візуально виразними. + +Щоб покращити результат, ми можемо додати ще один термін до функції втрат, який називається **варіаційною втратою**. Це метрика, яка показує, наскільки схожі сусідні пікселі зображення. Мінімізуючи варіаційну втрату, ми робимо зображення більш гладким і позбавляємося шуму — таким чином розкриваючи більш візуально привабливі шаблони. Ось приклад таких "ідеальних" зображень, які класифікуються як кіт і як зебра з високою ймовірністю: + +![Ідеальний кіт](../../../../../translated_images/ideal-cat.203dd4597643d6b0bd73038b87f9c0464322725e3a06ab145d25d4a861c70592.uk.png) | ![Ідеальна зебра](../../../../../translated_images/ideal-zebra.7f70e8b54ee15a7a314000bb5df38a6cfe086ea04d60df4d3ef313d046b98a2b.uk.png) +-----|----- + *Ідеальний кіт* | *Ідеальна зебра* + +Схожий підхід можна використати для виконання так званих **атак на нейронну мережу**. Припустимо, ми хочемо обдурити нейронну мережу і змусити собаку виглядати як кіт. Якщо ми візьмемо зображення собаки, яке мережа розпізнає як собаку, ми можемо трохи змінити його за допомогою оптимізації градієнтного спуску, поки мережа не почне класифікувати його як кота: + +![Зображення собаки](../../../../../translated_images/original-dog.8f68a67d2fe0911f33041c0f7fce8aa4ea919f9d3917ec4b468298522aeb6356.uk.png) | ![Зображення собаки, класифіковане як кіт](../../../../../translated_images/adversarial-dog.d9fc7773b0142b89752539bfbf884118de845b3851c5162146ea0b8809fc820f.uk.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 породами котів і собак, і побудуємо класифікатор перенесення навчання. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md b/translations/uk/lessons/4-ComputerVision/08-TransferLearning/TrainingTricks.md new file mode 100644 index 00000000..3700d9a8 --- /dev/null +++ b/translations/uk/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)** гарантує, що для входів із середнім значенням 0 і стандартним відхиленням 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/)). + +## Dropout + +**Dropout** — це цікава техніка, яка видаляє певний відсоток випадкових нейронів під час тренування. Вона також реалізується як шар із одним параметром (відсоток нейронів для видалення, зазвичай 10%-50%), і під час тренування вона обнуляє випадкові елементи вхідного вектора перед передачею його до наступного шару. + +Хоча це може здатися дивною ідеєю, ви можете побачити ефект dropout на тренуванні класифікатора цифр MNIST у ноутбуці [`Dropout.ipynb`](../../../../../lessons/4-ComputerVision/08-TransferLearning/Dropout.ipynb). Це прискорює тренування і дозволяє досягти вищої точності за меншу кількість епох. + +Цей ефект можна пояснити кількома способами: + +- Це можна вважати випадковим шоковим фактором для моделі, який виводить оптимізацію з локального мінімуму +- Це можна вважати *неявним усередненням моделі*, оскільки під час dropout ми тренуємо трохи іншу модель + +> *Дехто каже, що коли п'яна людина намагається щось вивчити, вона запам'ятає це краще наступного ранку порівняно з тверезою людиною, оскільки мозок із деякими нефункціонуючими нейронами намагається краще адаптуватися, щоб зрозуміти сенс. Ми ніколи не перевіряли, чи це правда.* + +## Запобігання перенавчанню + +Одним із дуже важливих аспектів глибокого навчання є здатність запобігати [перенавчанню](../../3-NeuralNetworks/05-Frameworks/Overfitting.md). Хоча може бути спокусливо використовувати дуже потужну модель нейронної мережі, ми завжди повинні балансувати кількість параметрів моделі з кількістю навчальних зразків. + +> Переконайтеся, що ви розумієте концепцію [перенавчання](../../3-NeuralNetworks/05-Frameworks/Overfitting.md), яку ми раніше пояснювали! + +Існує кілька способів запобігти перенавчанню: + +- Раннє зупинення — постійний моніторинг помилки на валідаційному наборі і зупинка тренування, коли помилка валідації починає зростати. +- Явний розпад ваг / регуляризація — додавання додаткового штрафу до функції втрат за високі абсолютні значення ваг, що запобігає отриманню дуже нестабільних результатів. +- Усереднення моделі — тренування кількох моделей і потім усереднення результату. Це допомагає мінімізувати варіацію. +- Dropout (неявне усереднення моделі) + +## Оптимізатори / алгоритми тренування + +Ще одним важливим аспектом тренування є вибір гарного алгоритму тренування. Хоча класичний **градієнтний спуск** є розумним вибором, він іноді може бути надто повільним або призводити до інших проблем. + +У глибокому навчанні ми використовуємо **стохастичний градієнтний спуск** (SGD), який є градієнтним спуском, застосованим до мінібатчів, випадково вибраних із навчального набору. Ваги коригуються за цією формулою: + +wt+1 = wt - η∇ℒ + +### Momentum + +У **momentum 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. + +### Gradient clipping + +Gradient clipping — це розширення ідеї вище. Коли ||∇ℒ|| ≤ θ, ми враховуємо оригінальний градієнт у оптимізації ваг, а коли ||∇ℒ|| > θ — ми ділимо градієнт на його норму. Тут θ — це параметр, у більшості випадків можна взяти θ=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/uk/lessons/4-ComputerVision/08-TransferLearning/lab/README.md b/translations/uk/lessons/4-ComputerVision/08-TransferLearning/lab/README.md new file mode 100644 index 00000000..62281361 --- /dev/null +++ b/translations/uk/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) + +## Висновок + +Трансферне навчання та попередньо натреновані мережі дозволяють нам відносно легко вирішувати реальні завдання класифікації зображень. Однак попередньо натреновані мережі добре працюють із зображеннями подібного типу, і якщо ми почнемо класифікувати дуже відмінні зображення (наприклад, медичні знімки), ймовірно, результати будуть значно гіршими. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/09-Autoencoders/README.md b/translations/uk/lessons/4-ComputerVision/09-Autoencoders/README.md new file mode 100644 index 00000000..289b3c81 --- /dev/null +++ b/translations/uk/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.uk.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) Ісаака Дайкмана + +Варіаційні автоенкодери використовують складну функцію втрат, яка складається з двох частин: + +* **Втрати реконструкції** — це функція втрат, яка показує, наскільки реконструйоване зображення близьке до цільового (це може бути середньоквадратична помилка, або MSE). Це та сама функція втрат, що й у звичайних автоенкодерах. +* **KL втрати**, які забезпечують, щоб розподіл латентних змінних залишався близьким до нормального розподілу. Вона базується на понятті [дивергенції Кульбака-Лейблера](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) — метриці для оцінки схожості двох статистичних розподілів. + +Однією з важливих переваг VAE є те, що вони дозволяють нам генерувати нові зображення відносно легко, оскільки ми знаємо, з якого розподілу вибирати латентні вектори. Наприклад, якщо ми навчимо VAE з 2D латентним вектором на MNIST, ми зможемо змінювати компоненти латентного вектора, щоб отримати різні цифри: + +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) + +## Висновок + +У цьому уроці ви дізналися про різні типи автоенкодерів, доступних для науковця зі штучного інтелекту. Ви дізналися, як їх створювати та використовувати для реконструкції зображень. Ви також дізналися про 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/uk/lessons/4-ComputerVision/10-GANs/README.md b/translations/uk/lessons/4-ComputerVision/10-GANs/README.md new file mode 100644 index 00000000..992c94aa --- /dev/null +++ b/translations/uk/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) + +> ✅ Невеликий словник: +> * **Генератор** — це мережа, яка бере випадковий вектор і створює зображення як результат. +> * **Дискримінатор** — це мережа, яка бере зображення і повинна визначити, чи є воно реальним (з навчального набору даних), чи було створене генератором. Це, по суті, класифікатор зображень. + +### Дискримінатор + +Архітектура дискримінатора не відрізняється від звичайної мережі класифікації зображень. У найпростішому випадку це може бути повністю зв’язаний класифікатор, але найімовірніше це буде [згорткова мережа](../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 (відповідно до реальних зображень). Потім ми заморожуємо параметри дискримінатора (ми не хочемо, щоб він навчався на цьому етапі) і виконуємо зворотне поширення. + +Під час цього процесу втрати як генератора, так і дискримінатора не зменшуються значно. У ідеальній ситуації вони повинні коливатися, що відповідає покращенню продуктивності обох мереж. + +## ✍️ Вправи: GAN + +* [Ноутбук GAN у TensorFlow/Keras](../../../../../lessons/4-ComputerVision/10-GANs/GANTF.ipynb) +* [Ноутбук GAN у PyTorch](../../../../../lessons/4-ComputerVision/10-GANs/GANPyTorch.ipynb) + +### Проблеми з навчанням GAN + +GAN відомі тим, що їх особливо складно навчати. Ось кілька проблем: + +* **Колапс моди**. Цей термін означає, що генератор навчається створювати одне успішне зображення, яке обманює дискримінатор, а не різноманітність різних зображень. +* **Чутливість до гіперпараметрів**. Часто можна побачити, що GAN взагалі не сходиться, а потім раптово зменшення швидкості навчання призводить до сходження. +* Збереження **балансу** між генератором і дискримінатором. У багатьох випадках втрати дискримінатора можуть швидко впасти до нуля, що призводить до того, що генератор більше не може навчатися. Щоб подолати це, ми можемо спробувати встановити різні швидкості навчання для генератора і дискримінатора або пропустити навчання дискримінатора, якщо втрати вже занадто низькі. +* Навчання для **високої роздільної здатності**. Відображаючи ту саму проблему, що й з автокодувальниками, ця проблема виникає через те, що реконструкція занадто багатьох шарів згорткової мережі призводить до артефактів. Цю проблему зазвичай вирішують за допомогою так званого **прогресивного зростання**, коли спочатку кілька шарів навчаються на зображеннях низької роздільної здатності, а потім шари "розблоковуються" або додаються. Інше рішення — додати додаткові з’єднання між шарами та навчати кілька роздільних здатностей одночасно — див. цю [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048) для деталей. + +## Перенесення стилю + +GAN — чудовий спосіб створювати художні зображення. Ще одна цікава техніка — так зване **перенесення стилю**, яке бере одне **зображення контенту** і перемальовує його в іншому стилі, застосовуючи фільтри із **зображення стилю**. + +Як це працює: +* Ми починаємо з випадкового шумового зображення (або із зображення контенту, але для розуміння легше почати з випадкового шуму). +* Нашою метою буде створити таке зображення, яке буде близьким як до зображення контенту, так і до зображення стилю. Це визначатиметься двома функціями втрат: + - **Втрати контенту** обчислюються на основі ознак, отриманих CNN на деяких шарах із поточного зображення та зображення контенту. + - **Втрати стилю** обчислюються між поточним зображенням і зображенням стилю хитрим способом за допомогою матриць Грама (детальніше в [прикладі ноутбука](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb)). +* Щоб зробити зображення більш гладким і прибрати шум, ми також вводимо **Втрати варіації**, які обчислюють середню відстань між сусідніми пікселями. +* Основний цикл оптимізації коригує поточне зображення за допомогою градієнтного спуску (або іншого алгоритму оптимізації), щоб мінімізувати загальні втрати, які є зваженою сумою всіх трьох втрат. + +## ✍️ Приклад: [Перенесення стилю](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb) + +## [Тест після лекції](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/210) + +## Висновок + +У цьому уроці ви дізналися про GAN і як їх навчати. Ви також дізналися про особливі виклики, з якими може зіткнутися цей тип нейронної мережі, і деякі стратегії, як їх подолати. + +## 🚀 Виклик + +Пройдіть через [ноутбук перенесення стилю](../../../../../lessons/4-ComputerVision/10-GANs/StyleTransfer.ipynb), використовуючи власні зображення. + +## Огляд і самостійне навчання + +Для довідки прочитайте більше про GAN у цих ресурсах: + +* 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 на власних зображеннях. Що ви можете створити? + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильне тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/11-ObjectDetection/README.md b/translations/uk/lessons/4-ComputerVision/11-ObjectDetection/README.md new file mode 100644 index 00000000..259c82b2 --- /dev/null +++ b/translations/uk/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.uk.png) + +> Зображення з [вебсайту YOLO v2](https://pjreddie.com/darknet/yolov2/) + +## Наївний підхід до виявлення об'єктів + +Припустимо, ми хочемо знайти кота на зображенні. Дуже наївний підхід до виявлення об'єктів може виглядати так: + +1. Розбити зображення на кілька плиток. +2. Запустити класифікацію зображень для кожної плитки. +3. Ті плитки, які дають достатньо високу активацію, можна вважати такими, що містять потрібний об'єкт. + +![Наївне виявлення об'єктів](../../../../../translated_images/naive-detection.e7f1ba220ccd08c68a2ea8e06a7ed75c3fcc738c2372f9e00b7f4299a8659c01.uk.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.uk.jpg) + +## Метрики для виявлення об'єктів + +### Перетин над об'єднанням + +Для класифікації зображень легко виміряти, наскільки добре працює алгоритм, але для виявлення об'єктів потрібно оцінити як правильність класу, так і точність визначення місцезнаходження межової рамки. Для останнього ми використовуємо так званий **Перетин над об'єднанням** (IoU), який вимірює, наскільки добре дві рамки (або дві довільні області) перекриваються. + +![IoU](../../../../../translated_images/iou_equation.9a4751d40fff4e119ecd0a7bcca4e71ab1dc83e0d4f2a0d66ff0859736f593cf.uk.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 для них, шукаючи максимальну активацію. Це трохи схоже на наївний підхід, за винятком того, що 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.uk.png) + +> *Зображення з van de Sande et al. ICCV’11* + +![RCNN-1](../../../../../translated_images/rcnn2.2d9530bb83516484ec65b250c22dbf37d3d23244f32864ebcb91d98fe7c3112c.uk.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.uk.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 — так званої *Мережі пропозицій регіонів*. [Стаття](https://arxiv.org/pdf/1506.01497.pdf), 2016 + +![FasterRCNN](../../../../../translated_images/faster-rcnn.8d46c099b87ef30ab2ea26dbc4bdd85b974a57ba8eb526f65dc4cd0a4711de30.uk.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.uk.png) + +> Зображення з [офіційної статті](https://arxiv.org/abs/1605.06409) + +### YOLO - You Only Look Once + +YOLO — це алгоритм реального часу з одним проходом. Основна ідея полягає у наступному: + + * Зображення ділиться на $S\times S$ регіонів. + * Для кожного регіону **CNN** прогнозує $n$ можливих об'єктів, координати *межової рамки* та *довіру*=*ймовірність* * IoU. + + ![YOLO](../../../../../translated_images/yolo.a2648ec82ee8bb4ea27537677adb482fd4b733ca1705c561b6a24a85102dced5.uk.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 (Single Shot Detector): [офіційна стаття](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/) +* [Реалізація 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/uk/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md b/translations/uk/lessons/4-ComputerVision/11-ObjectDetection/lab/README.md new file mode 100644 index 00000000..96432ef1 --- /dev/null +++ b/translations/uk/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`, і для кожної голови вказуються координати обмежувального прямокутника. Ви можете обробляти 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)), важливо розуміти, як працює виявлення об'єктів, і вміти навчати власні моделі. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/12-Segmentation/README.md b/translations/uk/lessons/4-ComputerVision/12-Segmentation/README.md new file mode 100644 index 00000000..0ed6a083 --- /dev/null +++ b/translations/uk/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 Database дерматоскопічних зображень як джерело даних. Цей набір даних містить 200 зображень трьох класів: типовий невус, атиповий невус і меланома. Усі зображення також мають відповідну **маску**, яка окреслює невус. + +> ✅ Ця техніка особливо підходить для такого типу медичних зображень, але які інші реальні застосування ви могли б уявити? + +navi + +> Зображення з PH2 Database + +Ми навчимо модель сегментувати будь-який невус від фону. + +## ✍️ Вправи: Семантична сегментація + +Відкрийте наведені нижче ноутбуки, щоб дізнатися більше про різні архітектури семантичної сегментації, попрактикуватися з ними та побачити їх у дії. + +* [Семантична сегментація 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) пропонує хороший огляд різних застосувань цієї техніки. Дізнайтеся більше самостійно про піддомени сегментації об'єктів (Instance segmentation) та паноптичної сегментації (Panoptic segmentation) у цій галузі досліджень. + +## [Завдання](lab/README.md) + +У цій лабораторній роботі спробуйте **сегментацію людського тіла** за допомогою [Segmentation Full Body MADS Dataset](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/uk/lessons/4-ComputerVision/12-Segmentation/lab/README.md b/translations/uk/lessons/4-ComputerVision/12-Segmentation/lab/README.md new file mode 100644 index 00000000..6ce6d6f2 --- /dev/null +++ b/translations/uk/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), щоб дізнатися, як можна реалізувати ці завдання. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/4-ComputerVision/README.md b/translations/uk/lessons/4-ComputerVision/README.md new file mode 100644 index 00000000..9fe65b83 --- /dev/null +++ b/translations/uk/lessons/4-ComputerVision/README.md @@ -0,0 +1,25 @@ + +# Комп'ютерний зір + +![Резюме матеріалів про комп'ютерний зір у вигляді малюнка](../../../../translated_images/ai-computervision.6506ebebac3fbf76cdb78989d7d3dfea87e88285c0feaade53aa7804a22b248f.uk.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/uk/lessons/5-NLP/13-TextRep/README.md b/translations/uk/lessons/5-NLP/13-TextRep/README.md new file mode 100644 index 00000000..2e0d4064 --- /dev/null +++ b/translations/uk/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 кодуванні. +* **Представлення на рівні слів**, у якому ми створюємо **словник** усіх слів у нашому тексті, а потім представляємо слова за допомогою one-hot кодування. Цей підхід є дещо кращим, оскільки кожна літера сама по собі не має великого значення, і, використовуючи більш високорівневі семантичні концепти — слова — ми спрощуємо завдання для нейронної мережі. Однак через великий розмір словника нам доводиться працювати з високовимірними розрідженими тензорами. + +Незалежно від способу представлення, спочатку потрібно перетворити текст у послідовність **токенів**, де один токен — це символ, слово або навіть частина слова. Потім ми перетворюємо токен у число, зазвичай використовуючи **словник**, і це число можна подати в нейронну мережу за допомогою one-hot кодування. + +## N-грам + +У природній мові точне значення слів можна визначити лише в контексті. Наприклад, значення *нейронна мережа* і *рибальська мережа* абсолютно різні. Один із способів врахувати це — побудувати нашу модель на парах слів, розглядаючи пари слів як окремі токени словника. Таким чином, речення *Мені подобається рибалити* буде представлено наступною послідовністю токенів: *Мені подобається*, *подобається рибалити*. Проблема цього підходу полягає в тому, що розмір словника значно зростає, і комбінації, такі як *рибалити* і *шопінг*, представлені різними токенами, які не мають жодної семантичної схожості, незважаючи на однакове дієслово. + +У деяких випадках ми можемо розглянути використання триграм — комбінацій із трьох слів. Таким чином, цей підхід часто називають **n-грамами**. Також має сенс використовувати n-грами з представленням на рівні символів, у цьому випадку n-грами приблизно відповідатимуть різним складам. + +## Мішок слів і TF/IDF + +Під час вирішення завдань, таких як класифікація тексту, нам потрібно вміти представляти текст одним вектором фіксованого розміру, який ми будемо використовувати як вхід для фінального щільного класифікатора. Один із найпростіших способів зробити це — об’єднати всі окремі представлення слів, наприклад, додаючи їх. Якщо ми додамо one-hot кодування кожного слова, ми отримаємо вектор частот, який показує, скільки разів кожне слово з’являється в тексті. Таке представлення тексту називається **мішок слів** (BoW). + + + +> Зображення автора + +BoW фактично представляє, які слова з’являються в тексті та в якій кількості, що дійсно може бути хорошим показником того, про що йдеться в тексті. Наприклад, новинна стаття про політику, ймовірно, містить слова, такі як *президент* і *країна*, тоді як наукова публікація матиме щось на кшталт *колайдер*, *відкриття* тощо. Таким чином, частоти слів у багатьох випадках можуть бути хорошим показником змісту тексту. + +Проблема BoW полягає в тому, що певні загальні слова, такі як *і*, *є* тощо, з’являються в більшості текстів і мають найвищі частоти, приховуючи слова, які дійсно важливі. Ми можемо знизити важливість цих слів, враховуючи частоту, з якою слова зустрічаються в усій колекції документів. Це основна ідея підходу 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/uk/lessons/5-NLP/13-TextRep/assignment.md b/translations/uk/lessons/5-NLP/13-TextRep/assignment.md new file mode 100644 index 00000000..1a74fc60 --- /dev/null +++ b/translations/uk/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/uk/lessons/5-NLP/14-Embeddings/README.md b/translations/uk/lessons/5-NLP/14-Embeddings/README.md new file mode 100644 index 00000000..1de8a257 --- /dev/null +++ b/translations/uk/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` і явно перетворювали низьковимірні позиційні вектори у розріджені вектори з одним активним елементом (one-hot). Однак таке представлення не є ефективним з точки зору пам’яті. Крім того, кожне слово розглядається незалежно від інших, тобто вектори з одним активним елементом не виражають жодної семантичної схожості між словами. + +Ідея **вбудовування** полягає в тому, щоб представляти слова за допомогою низьковимірних щільних векторів, які певним чином відображають семантичне значення слова. Пізніше ми обговоримо, як створювати значущі вбудовування слів, але наразі розглянемо вбудовування як спосіб зменшення розмірності вектора слова. + +Таким чином, шар вбудовування приймає слово як вхід і генерує вихідний вектор заданого розміру `embedding_size`. У певному сенсі це дуже схоже на шар `Linear`, але замість того, щоб приймати вектор з одним активним елементом, він може приймати номер слова як вхід, що дозволяє уникнути створення великих векторів з одним активним елементом. + +Використовуючи шар вбудовування як перший шар у нашій мережі класифікатора, ми можемо перейти від моделі "мішка слів" до моделі **мішка вбудовувань**, де спочатку кожне слово в тексті перетворюється у відповідне вбудовування, а потім обчислюється певна агрегатна функція для всіх цих вбудовувань, наприклад, `sum`, `average` або `max`. + +![Зображення, що показує класифікатор на основі вбудовувань для п’яти слів у послідовності.](../../../../../translated_images/embedding-classifier-example.b77f021a7ee67eeec8e68bfe11636c5b97d6eaa067515a129bfb1d0034b1ac5b.uk.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) — у цій архітектурі модель навчається передбачати слово за контекстом. Дано n-граму $(W_{-2},W_{-1},W_0,W_1,W_2)$, мета моделі — передбачити $W_0$ за $(W_{-2},W_{-1},W_1,W_2)$. + - **Неперервний скіп-грам** — протилежність CBoW. Модель використовує вікно контексту навколо слова для передбачення поточного слова. + +CBoW працює швидше, тоді як скіп-грам повільніший, але краще представляє рідковживані слова. + +![Зображення, що показує алгоритми CBoW і Skip-Gram для перетворення слів у вектори.](../../../../../translated_images/example-algorithms-for-converting-words-to-vectors.fbe9207a726922f6f0f5de66427e8a6eda63809356114e28fb1fa5f4a83ebda7.uk.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 для створення поезії. Також перегляньте [це відео Дена Шиффмана](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/uk/lessons/5-NLP/14-Embeddings/assignment.md b/translations/uk/lessons/5-NLP/14-Embeddings/assignment.md new file mode 100644 index 00000000..e8b4427d --- /dev/null +++ b/translations/uk/lessons/5-NLP/14-Embeddings/assignment.md @@ -0,0 +1,15 @@ + +# Завдання: Ноутбуки + +Використовуючи ноутбуки, пов’язані з цим уроком (версія PyTorch або TensorFlow), запустіть їх заново, використовуючи власний набір даних, можливо, один із Kaggle, з відповідним зазначенням джерела. Перепишіть ноутбук, щоб підкреслити власні висновки. Спробуйте інший тип набору даних і задокументуйте свої спостереження, використовуючи текст, наприклад [ці тексти пісень Beatles](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/uk/lessons/5-NLP/15-LanguageModeling/README.md b/translations/uk/lessons/5-NLP/15-LanguageModeling/README.md new file mode 100644 index 00000000..27ee69be --- /dev/null +++ b/translations/uk/lessons/5-NLP/15-LanguageModeling/README.md @@ -0,0 +1,54 @@ + +# Моделювання мови + +Семантичні векторні представлення, такі як Word2Vec і GloVe, насправді є першим кроком до **моделювання мови** — створення моделей, які певним чином *розуміють* (або *представляють*) природу мови. + +## [Тест перед лекцією](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/115) + +Основна ідея моделювання мови полягає в тому, щоб навчати моделі на немаркованих наборах даних у ненаглядний спосіб. Це важливо, оскільки у нас є величезна кількість немаркованого тексту, тоді як обсяг маркованого тексту завжди буде обмежений зусиллями, які ми можемо витратити на маркування. Найчастіше ми можемо створювати мовні моделі, які можуть **передбачати пропущені слова** в тексті, оскільки легко приховати випадкове слово в тексті та використовувати його як навчальний зразок. + +## Навчання векторних представлень + +У попередніх прикладах ми використовували попередньо навчені семантичні векторні представлення, але цікаво побачити, як ці вектори можна навчати. Є кілька можливих підходів: + +* **Моделювання мови за допомогою 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.uk.png) + +> Зображення з [цієї статті](https://arxiv.org/pdf/1301.3781.pdf) + +## ✍️ Приклад блокнотів: Навчання моделі CBoW + +Продовжуйте навчання за допомогою наступних блокнотів: + +* [Навчання 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) + +## Огляд і самостійне навчання + +* [Офіційний підручник 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/uk/lessons/5-NLP/15-LanguageModeling/lab/README.md b/translations/uk/lessons/5-NLP/15-LanguageModeling/lab/README.md new file mode 100644 index 00000000..9cb80ede --- /dev/null +++ b/translations/uk/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). + +## Завдання + +У цій лабораторній роботі ми пропонуємо вам навчити модель Word2Vec, використовуючи техніку Skip-Gram. Навчіть мережу з вбудовуванням для прогнозування сусідніх слів у 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)) Льюїса Керролла. Або ви можете використати п'єси Шекспіра, які можна отримати за допомогою наступного коду: + +```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-просторі. Чи бачите ви якісь закономірності? + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/5-NLP/16-RNN/README.md b/translations/uk/lessons/5-NLP/16-RNN/README.md new file mode 100644 index 00000000..26ce2e4c --- /dev/null +++ b/translations/uk/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.uk.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/) Крістофера Олаха. + +## Двонаправлені та багатошарові RNN + +Ми обговорили рекурентні мережі, які працюють в одному напрямку — від початку послідовності до кінця. Це виглядає природно, оскільки нагадує спосіб, яким ми читаємо та слухаємо мовлення. Однак, оскільки в багатьох практичних випадках ми маємо випадковий доступ до вхідної послідовності, може мати сенс виконувати рекурентні обчислення в обох напрямках. Такі мережі називаються **двонаправленими** RNN. Працюючи з двонаправленою мережею, нам знадобляться два приховані вектори стану — один для кожного напрямку. + +Рекурентна мережа, одностороння чи двонаправлена, захоплює певні шаблони в послідовності та може зберігати їх у векторі стану або передавати у вихід. Як і у випадку з згортковими мережами, ми можемо побудувати ще один рекурентний шар поверх першого, щоб захопити шаблони вищого рівня та будувати з шаблонів нижчого рівня, які витягує перший шар. Це приводить нас до поняття **багатошарової RNN**, яка складається з двох або більше рекурентних мереж, де вихід попереднього шару передається наступному шару як вхід. + +![Зображення багатошарової довгої короткочасної пам'яті RNN](../../../../../translated_images/multi-layer-lstm.dd975e29bb2a59fe58b429db833932d734c81f211cad2783797a9608984acb8c.uk.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) + +## Висновок + +У цьому розділі ми побачили, що 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) + +**Відмова від відповідальності**: +Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/5-NLP/16-RNN/assignment.md b/translations/uk/lessons/5-NLP/16-RNN/assignment.md new file mode 100644 index 00000000..5fb5b28b --- /dev/null +++ b/translations/uk/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/uk/lessons/5-NLP/17-GenerativeNetworks/README.md b/translations/uk/lessons/5-NLP/17-GenerativeNetworks/README.md new file mode 100644 index 00000000..25f6e6fd --- /dev/null +++ b/translations/uk/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.uk.jpg) + +> Зображення з блогу [Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) авторства [Андрея Карпаті](http://karpathy.github.io/) + +* **Один до одного** — це традиційна нейронна мережа з одним входом і одним виходом. +* **Один до багатьох** — це генеративна архітектура, яка приймає одне вхідне значення і генерує послідовність вихідних значень. Наприклад, якщо ми хочемо навчити мережу для **створення підписів до зображень**, яка створюватиме текстовий опис картинки, ми можемо взяти зображення як вхід, пропустити його через CNN для отримання прихованого стану, а потім використати рекурентний ланцюг для генерації підпису слово за словом. +* **Багато до одного** відповідає архітектурам RNN, які ми описували в попередньому модулі, наприклад, класифікація тексту. +* **Багато до багатьох**, або **послідовність до послідовності**, відповідає завданням, таким як **машинний переклад**, де перший RNN збирає всю інформацію з вхідної послідовності в прихований стан, а інший ланцюг RNN розгортає цей стан у вихідну послідовність. + +У цьому модулі ми зосередимося на простих генеративних моделях, які допомагають нам генерувати текст. Для простоти ми використовуватимемо токенізацію на рівні символів. + +Ми навчимо RNN генерувати текст крок за кроком. На кожному кроці ми братимемо послідовність символів довжиною `nchars` і проситимемо мережу створити наступний вихідний символ для кожного вхідного символу: + +![Зображення, що показує приклад генерації слова 'HELLO' за допомогою RNN.](../../../../../translated_images/rnn-generate.56c54afb52f9781d63a7c16ea9c1b86cb70e6e1eae6a742b56b7b37468576b17.uk.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](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/uk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md b/translations/uk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md new file mode 100644 index 00000000..32ec2fd7 --- /dev/null +++ b/translations/uk/lessons/5-NLP/17-GenerativeNetworks/lab/README.md @@ -0,0 +1,23 @@ + +# Генерація тексту на рівні слів за допомогою RNN + +Лабораторне завдання з [AI for Beginners Curriculum](https://github.com/microsoft/ai-for-beginners). + +## Завдання + +У цьому лабораторному завданні вам потрібно взяти будь-яку книгу та використати її як набір даних для навчання генератора тексту на рівні слів. + +## Набір даних + +Ви можете використовувати будь-яку книгу. Багато безкоштовних текстів можна знайти на [Project Gutenberg](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/uk/lessons/5-NLP/18-Transformers/README.md b/translations/uk/lessons/5-NLP/18-Transformers/README.md new file mode 100644 index 00000000..e539eda1 --- /dev/null +++ b/translations/uk/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.uk.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.uk.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) + +Впровадження механізмів уваги у поєднанні з цим обмеженням призвело до створення сучасних моделей трансформерів, таких як BERT та Open-GPT3, які ми знаємо і використовуємо сьогодні. + +## Моделі трансформерів + +Однією з основних ідей трансформерів є уникнення послідовної природи RNN та створення моделі, яка може бути паралелізована під час навчання. Це досягається шляхом реалізації двох ідей: + +* позиційне кодування +* використання механізму самоуваги для захоплення шаблонів замість RNN (або CNN) (саме тому стаття, яка представляє трансформери, називається *[Attention is all you need](https://arxiv.org/abs/1706.03762)*). + +### Позиційне кодування/вбудовування + +Ідея позиційного кодування полягає в наступному. +1. При використанні RNN відносна позиція токенів представлена кількістю кроків, і тому не потребує явного представлення. +2. Однак, коли ми переходимо до уваги, нам потрібно знати відносні позиції токенів у послідовності. +3. Для отримання позиційного кодування ми доповнюємо нашу послідовність токенів послідовністю позицій токенів у послідовності (тобто послідовністю чисел 0,1, ...). +4. Потім ми змішуємо позицію токена з вектором вбудовування токена. Для перетворення позиції (цілого числа) у вектор можна використовувати різні підходи: + +* Навчуване вбудовування, схоже на вбудовування токенів. Це підхід, який ми розглядаємо тут. Ми застосовуємо шари вбудовування як до токенів, так і до їх позицій, отримуючи вектори вбудовування однакових розмірів, які потім додаємо. +* Фіксована функція позиційного кодування, як запропоновано в оригінальній статті. + + + +> Зображення автора + +Результат, який ми отримуємо з позиційним вбудовуванням, включає як оригінальний токен, так і його позицію в послідовності. + +### Багатоголовкова самоувага + +Далі нам потрібно захопити деякі шаблони в нашій послідовності. Для цього трансформери використовують механізм **самоуваги**, який, по суті, є увагою, застосованою до тієї ж послідовності як до входу, так і до виходу. Застосування самоуваги дозволяє враховувати **контекст** у реченні та бачити, які слова взаємопов'язані. Наприклад, це дозволяє бачити, до яких слів відносяться кореференції, такі як *воно*, а також враховувати контекст: + +![](../../../../../translated_images/CoreferenceResolution.861924d6d384a7d68d8d0039d06a71a151f18a796b8b1330239d3590bd4947eb.uk.png) + +> Зображення з [блогу Google](https://research.googleblog.com/2017/08/transformer-novel-neural-network.html) + +У трансформерах ми використовуємо **багатоголовкову увагу**, щоб надати мережі можливість захоплювати кілька різних типів залежностей, наприклад, довгострокові та короткострокові відносини між словами, кореференції тощо. + +[Ноутбук TensorFlow](../../../../../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.uk.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/uk/lessons/5-NLP/18-Transformers/assignment.md b/translations/uk/lessons/5-NLP/18-Transformers/assignment.md new file mode 100644 index 00000000..f3c7445d --- /dev/null +++ b/translations/uk/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/uk/lessons/5-NLP/19-NER/README.md b/translations/uk/lessons/5-NLP/19-NER/README.md new file mode 100644 index 00000000..9a64acf9 --- /dev/null +++ b/translations/uk/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). Після маркування наша назва виглядатиме так: + +Токен | Тег +------|----- +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.uk.jpg) + +> *Зображення з [цієї статті](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) від [Андрія Карпатія](http://karpathy.github.io/). Моделі класифікації токенів NER відповідають правосторонній архітектурі мережі на цьому зображенні.* + +## Навчання моделей NER + +Оскільки модель NER фактично є моделлю класифікації токенів, ми можемо використовувати RNN, з якими ми вже знайомі, для цього завдання. У цьому випадку кожен блок рекурентної мережі буде повертати ID токена. Наступний приклад ноутбука показує, як навчати LSTM для класифікації токенів. + +## ✍️ Приклад ноутбуків: NER + +Продовжуйте навчання за допомогою наступного ноутбука: + +* [NER з TensorFlow](../../../../../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), щоб отримати всі деталі. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають у результаті використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/5-NLP/19-NER/lab/README.md b/translations/uk/lessons/5-NLP/19-NER/lab/README.md new file mode 100644 index 00000000..1d55f3f4 --- /dev/null +++ b/translations/uk/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 +... +``` + +У цьому наборі даних перші два рядки містять заголовок статті та анотацію, а далі йдуть окремі сутності з початковими та кінцевими позиціями в межах блоку "заголовок+анотація". Окрім типу сутності, ви отримуєте ідентифікатор онтології цієї сутності в межах певної медичної онтології. + +Вам потрібно буде написати трохи коду на Python, щоб перетворити ці дані у формат BIO. + +## Мережа + +Першу спробу створення 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/). + +Де-факто стандартом для навчання моделей трансформерів є бібліотека [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/uk/lessons/5-NLP/20-LangModels/README.md b/translations/uk/lessons/5-NLP/20-LangModels/README.md new file mode 100644 index 00000000..9a418260 --- /dev/null +++ b/translations/uk/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 для початківців"](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) + +## Висновок + +Нові загальні попередньо навчені мовні моделі не лише моделюють структуру мови, але й містять величезний обсяг природної мови. Таким чином, їх можна ефективно використовувати для вирішення деяких завдань обробки природної мови в умовах нульового або обмеженого навчання. + +## [Тест після лекції](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/uk/lessons/5-NLP/README.md b/translations/uk/lessons/5-NLP/README.md new file mode 100644 index 00000000..20b1b236 --- /dev/null +++ b/translations/uk/lessons/5-NLP/README.md @@ -0,0 +1,78 @@ + +# Обробка природної мови + +![Резюме задач NLP у вигляді малюнка](../../../../translated_images/ai-nlp.b22dcb8ca4707ceaee8576db1c5f4089c8cac2f454e9e03ea554f07fda4556b8.uk.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 реалізовані у Python-бібліотеці [Natural Language Processing Toolkit (NLTK)](https://www.nltk.org). Існує чудова [книга NLTK](https://www.nltk.org/book/), доступна онлайн, яка охоплює, як різні задачі NLP можна вирішувати за допомогою NLTK. + +У нашому курсі ми здебільшого зосередимося на використанні нейронних мереж для NLP, і будемо використовувати NLTK за потреби. + +Ми вже вивчили використання нейронних мереж для роботи з табличними даними та зображеннями. Основна відмінність між цими типами даних і текстом полягає в тому, що текст — це послідовність змінної довжини, тоді як розмір вхідних даних у випадку зображень відомий заздалегідь. Хоча згорткові мережі можуть витягувати шаблони з вхідних даних, шаблони в тексті є більш складними. Наприклад, заперечення може бути відокремлене від суб'єкта довільною кількістю слів (наприклад, *Мені не подобаються апельсини* проти *Мені не подобаються ті великі кольорові смачні апельсини*), і це все одно має інтерпретуватися як один шаблон. Таким чином, для обробки мови нам потрібно впроваджувати нові типи нейронних мереж, такі як *рекурентні мережі* та *трансформери*. + +## Встановлення бібліотек + +Якщо ви використовуєте локальну установку Python для запуску цього курсу, можливо, вам потрібно встановити всі необхідні бібліотеки для NLP за допомогою наступних команд: + +**Для PyTorch** +```bash +pip install -r requirements-torch.txt +``` +**Для TensorFlow** +```bash +pip install -r requirements-tf.txt +``` + +> Ви можете спробувати NLP з 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) +``` + +Якщо вас цікавить вивчення NLP з точки зору класичного ML, відвідайте [цей набір уроків](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) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/6-Other/21-GeneticAlgorithms/README.md b/translations/uk/lessons/6-Other/21-GeneticAlgorithms/README.md new file mode 100644 index 00000000..db7e9871 --- /dev/null +++ b/translations/uk/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), яке розповідає про те, як комп'ютер може навчитися грати в Super Mario, використовуючи нейронні мережі, треновані генетичними алгоритмами. Ми дізнаємося більше про те, як комп'ютер навчається грати в такі ігри [у наступному розділі](../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) як початкову точку. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/6-Other/22-DeepRL/README.md b/translations/uk/lessons/6-Other/22-DeepRL/README.md new file mode 100644 index 00000000..18e97361 --- /dev/null +++ b/translations/uk/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* або *Гіроскутери*. Вони здатні автоматично балансувати, регулюючи свої колеса у відповідь на сигнал від акселерометра або гіроскопа. У цьому розділі ми навчимося вирішувати подібну проблему — балансування стовпа. Це схоже на ситуацію, коли цирковий артист балансує стовп на руці, але це балансування відбувається лише в 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` виконує крок симуляції. Він отримує **дію** з **простору дій** і повертає **спостереження** (з простору спостережень), а також винагороду та прапорець завершення. + +У наведеному вище прикладі ми виконуємо випадкову дію на кожному кроці, тому тривалість експерименту дуже коротка: + +![non-balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-nobalance.gif) + +Мета алгоритму RL — навчити модель — так звану **політику** π, яка буде повертати дію у відповідь на заданий стан. Ми також можемо вважати політику ймовірнісною, тобто для будь-якого стану *s* і дії *a* вона поверне ймовірність π(*a*|*s*), що ми повинні виконати *a* у стані *s*. + +## Алгоритм градієнтів політики + +Найочевидніший спосіб змоделювати політику — створити нейронну мережу, яка прийматиме стани як вхідні дані та повертатиме відповідні дії (або, скоріше, ймовірності всіх дій). У певному сенсі це було б схоже на звичайне завдання класифікації, з однією суттєвою відмінністю — ми заздалегідь не знаємо, які дії слід виконувати на кожному з кроків. + +Ідея полягає в тому, щоб оцінити ці ймовірності. Ми створюємо вектор **накопичених винагород**, який показує нашу загальну винагороду на кожному кроці експерименту. Ми також застосовуємо **дисконтування винагороди**, множачи попередні винагороди на деякий коефіцієнт γ=0.99, щоб зменшити роль попередніх винагород. Потім ми підсилюємо ті кроки вздовж шляху експерименту, які приносять більші винагороди. + +> Дізнайтеся більше про алгоритм градієнтів політики та перегляньте його в дії в [прикладному ноутбуці](../../../../../lessons/6-Other/22-DeepRL/CartPole-RL-TF.ipynb). + +## Алгоритм Actor-Critic + +Покращена версія підходу градієнтів політики називається **Actor-Critic**. Основна ідея полягає в тому, що нейронна мережа буде навчена повертати дві речі: + +* Політику, яка визначає, яку дію виконати. Ця частина називається **актор**. +* Оцінку загальної винагороди, яку ми можемо очікувати отримати в цьому стані — ця частина називається **критик**. + +У певному сенсі ця архітектура нагадує [GAN](../../4-ComputerVision/10-GANs/README.md), де у нас є дві мережі, які навчаються одна проти одної. У моделі actor-critic актор пропонує дію, яку нам потрібно виконати, а критик намагається бути критичним і оцінити результат. Однак наша мета — навчити ці мережі в унісон. + +Оскільки ми знаємо як реальні накопичені винагороди, так і результати, повернуті критиком під час експерименту, відносно легко побудувати функцію втрат, яка мінімізуватиме різницю між ними. Це дасть нам **втрати критика**. Ми можемо обчислити **втрати актора**, використовуючи той самий підхід, що й у алгоритмі градієнтів політики. + +Після запуску одного з цих алгоритмів ми можемо очікувати, що наш CartPole буде поводитися так: + +![a balancing cartpole](../../../../../lessons/6-Other/22-DeepRL/images/cartpole-balance.gif) + +## ✍️ Вправи: Градієнти політики та 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 + +Навчання з підкріпленням сьогодні є швидкозростаючою галуззю досліджень. Деякі цікаві приклади навчання з підкріпленням: + +* Навчання комп'ютера грати в **ігри Atari**. Складність цієї задачі полягає в тому, що у нас немає простого стану, представленого у вигляді вектора, а є скріншот — і нам потрібно використовувати CNN, щоб перетворити це зображення екрана на вектор ознак або витягти інформацію про винагороду. Ігри Atari доступні в 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) + +## Огляд і самостійне навчання + +Дізнайтеся більше про класичне навчання з підкріпленням у нашій [навчальній програмі з машинного навчання для початківців](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/README.md). + +Перегляньте [це чудове відео](https://www.youtube.com/watch?v=qv6UVOQ0F44) про те, як комп'ютер може навчитися грати в Super Mario. + +## Завдання: [Навчіть Mountain Car](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/uk/lessons/6-Other/22-DeepRL/lab/README.md b/translations/uk/lessons/6-Other/22-DeepRL/lab/README.md new file mode 100644 index 00000000..5be4e10a --- /dev/null +++ b/translations/uk/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 як параметр. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/6-Other/23-MultiagentSystems/README.md b/translations/uk/lessons/6-Other/23-MultiagentSystems/README.md new file mode 100644 index 00000000..686e35de --- /dev/null +++ b/translations/uk/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-х роках як відповідь на розвиток Інтернету та розподілених систем. Один із класичних підручників зі штучного інтелекту, [Artificial Intelligence: A Modern Approach](https://en.wikipedia.org/wiki/Artificial_Intelligence:_A_Modern_Approach), розглядає класичний штучний інтелект з точки зору багатоагентних систем. + +Центральним поняттям багатоагентного підходу є **агент** — сутність, яка існує в певному **середовищі**, яке вона може сприймати та впливати на нього. Це дуже широке визначення, і існує багато різних типів і класифікацій агентів: + +* За здатністю до мислення: + - **Реактивні** агенти зазвичай мають просту поведінку типу запит-відповідь + - **Деліберативні** агенти використовують певний вид логічного мислення та/або планування +* За місцем виконання коду агента: + - **Статичні** агенти працюють на виділеному вузлі мережі + - **Мобільні** агенти можуть переміщувати свій код між вузлами мережі +* За поведінкою: + - **Пасивні агенти** не мають конкретних цілей. Такі агенти можуть реагувати на зовнішні стимули, але не ініціюють дії самостійно. + - **Активні агенти** мають певні цілі, яких вони прагнуть + - **Когнітивні агенти** включають складне планування та мислення + +Багатоагентні системи сьогодні використовуються в ряді застосувань: + +* У іграх багато персонажів, які не є гравцями, використовують певний вид штучного інтелекту і можуть вважатися інтелектуальними агентами +* У відеовиробництві рендеринг складних 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/), якщо вас цікавить детальне навчання. + +Ви можете [завантажити](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.uk.png) + +> Знімок екрану від Дмитра Сошникова + +На цьому екрані ви можете побачити: + +* Розділ **Interface**, який містить: + - Основне поле, де живуть всі агенти + - Різні елементи управління: кнопки, повзунки тощо + - Графіки, які можна використовувати для відображення параметрів симуляції +* Вкладку **Code**, яка містить редактор, де ви можете писати програму NetLogo + +У більшості випадків інтерфейс матиме кнопку **Setup**, яка ініціалізує стан симуляції, і кнопку **Go**, яка запускає виконання. Ці кнопки обробляються відповідними обробниками в коді, які виглядають так: + +``` +to go [ +... +] +``` + +Світ NetLogo складається з наступних об'єктів: + +* **Агенти** (черепашки), які можуть переміщатися по полю та виконувати дії. Ви керуєте агентами за допомогою синтаксису `ask turtles [...]`, і код у дужках виконується всіма агентами в *режимі черепашки*. +* **Патчі** — це квадратні області поля, на яких живуть агенти. Ви можете звертатися до всіх агентів на одному патчі або змінювати кольори патчів та інші властивості. Ви також можете `ask patches` виконати певні дії. +* **Спостерігач** — це унікальний агент, який контролює світ. Усі обробники кнопок виконуються в *режимі спостерігача*. + +> ✅ Перевага багатоагентного середовища полягає в тому, що код, який виконується в режимі черепашки або патча, виконується одночасно всіма агентами паралельно. Таким чином, написавши невеликий код і запрограмувавши поведінку окремого агента, ви можете створити складну поведінку всієї симуляційної системи. + +### Зграї + +Як приклад багатоагентної поведінки, розглянемо **[зграї](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** показує, як люди групуються під час коктейльної вечірки. Ви можете знайти комбінацію параметрів, яка призводить до найшвидшого збільшення щастя групи. + +Як видно з цих прикладів, багатоагентні симуляції можуть бути досить корисним способом зрозуміти поведінку складної системи, що складається з індивідуумів, які дотримуються однакової або схожої логіки. Це також може бути використано для управління віртуальними агентами, такими як [NPC](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). Ці мови розроблені на основі [теорії мовленнєвих актів](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/uk/lessons/6-Other/23-MultiagentSystems/assignment.md b/translations/uk/lessons/6-Other/23-MultiagentSystems/assignment.md new file mode 100644 index 00000000..702da966 --- /dev/null +++ b/translations/uk/lessons/6-Other/23-MultiagentSystems/assignment.md @@ -0,0 +1,17 @@ + +# Завдання NetLogo + +Візьміть одну з моделей із бібліотеки NetLogo і використайте її для максимально точного моделювання реальної ситуації. Хорошим прикладом може бути модифікація моделі Virus у папці Alternative Visualizations, щоб показати, як її можна використовувати для моделювання поширення COVID-19. Чи можете ви створити модель, яка імітує реальне поширення вірусу? + +Покажіть свою роботу, зберігши копію та створивши відеодемонстрацію, яка пояснює, як модель пов'язана з реальною ситуацією. + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file diff --git a/translations/uk/lessons/7-Ethics/README.md b/translations/uk/lessons/7-Ethics/README.md new file mode 100644 index 00000000..95f186be --- /dev/null +++ b/translations/uk/lessons/7-Ethics/README.md @@ -0,0 +1,52 @@ + +# Етичний та відповідальний штучний інтелект + +Ви майже завершили цей курс, і я сподіваюся, що тепер ви чітко розумієте, що штучний інтелект базується на ряді формальних математичних методів, які дозволяють знаходити взаємозв’язки в даних і навчати моделі відтворювати деякі аспекти людської поведінки. На цьому етапі історії ми вважаємо штучний інтелект дуже потужним інструментом для виявлення закономірностей у даних і застосування цих закономірностей для вирішення нових завдань. + +## [Тест перед лекцією](https://white-water-09ec41f0f.azurestaticapps.net/quiz/5/) + +Однак у науковій фантастиці ми часто бачимо історії, де штучний інтелект становить загрозу для людства. Зазвичай ці історії зосереджені навколо якогось виду бунту штучного інтелекту, коли він вирішує протистояти людям. Це передбачає, що штучний інтелект має певні емоції або може приймати рішення, які не передбачені його розробниками. + +Штучний інтелект, про який ми дізналися в цьому курсі, — це не більше ніж велика матрична арифметика. Це дуже потужний інструмент, який допомагає нам вирішувати наші проблеми, і, як будь-який інший потужний інструмент, його можна використовувати як на благо, так і на шкоду. Важливо, що його можна *зловживати*. + +## Принципи відповідального штучного інтелекту + +Щоб уникнути випадкового або навмисного зловживання штучним інтелектом, Microsoft визначає важливі [Принципи відповідального штучного інтелекту](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-77998-cacaste). Ці принципи базуються на таких концепціях: + +* **Справедливість** стосується важливої проблеми *упередженості моделей*, яка може виникнути через використання упереджених даних для навчання. Наприклад, коли ми намагаємося передбачити ймовірність отримання роботи розробника програмного забезпечення для певної людини, модель, ймовірно, надасть перевагу чоловікам — просто тому, що навчальний набір даних, ймовірно, був упередженим на користь чоловічої аудиторії. Ми повинні ретельно збалансовувати навчальні дані та досліджувати модель, щоб уникнути упередженості та переконатися, що модель враховує більш релевантні характеристики. +* **Надійність і безпека**. За своєю природою моделі штучного інтелекту можуть робити помилки. Нейронна мережа повертає ймовірності, і ми повинні враховувати це під час прийняття рішень. Кожна модель має певну точність і повноту, і ми повинні це розуміти, щоб запобігти шкоді, яку можуть спричинити неправильні рекомендації. +* **Конфіденційність і безпека** мають певні специфічні аспекти для штучного інтелекту. Наприклад, коли ми використовуємо певні дані для навчання моделі, ці дані певним чином стають "інтегрованими" в модель. З одного боку, це підвищує безпеку та конфіденційність, з іншого — ми повинні пам’ятати, на яких даних була навчена модель. +* **Інклюзивність** означає, що ми створюємо штучний інтелект не для того, щоб замінити людей, а щоб доповнити їх і зробити нашу роботу більш творчою. Це також пов’язано зі справедливістю, оскільки при роботі з недостатньо представленими спільнотами більшість зібраних нами наборів даних, ймовірно, будуть упередженими, і ми повинні переконатися, що ці спільноти враховані та правильно оброблені штучним інтелектом. +* **Прозорість**. Це включає в себе забезпечення того, щоб ми завжди чітко вказували на використання штучного інтелекту. Також, де це можливо, ми хочемо використовувати системи штучного інтелекту, які є *інтерпретованими*. +* **Відповідальність**. Коли моделі штучного інтелекту приймають певні рішення, не завжди зрозуміло, хто несе відповідальність за ці рішення. Ми повинні переконатися, що розуміємо, де лежить відповідальність за рішення штучного інтелекту. У більшості випадків ми хотіли б включити людей у процес прийняття важливих рішень, щоб відповідальність несли реальні люди. + +## Інструменти для відповідального штучного інтелекту + +Microsoft розробила [Набір інструментів для відповідального штучного інтелекту](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/uk/lessons/README.md b/translations/uk/lessons/README.md new file mode 100644 index 00000000..f6e1363d --- /dev/null +++ b/translations/uk/lessons/README.md @@ -0,0 +1,17 @@ + +# Огляд + +![Огляд у вигляді замальовки](../../../translated_images/ai-overview.0857791951d19500d0ef8b803d77110c738dcafc52306e6d68724742cd4af167.uk.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/uk/lessons/X-Extras/X1-MultiModal/README.md b/translations/uk/lessons/X-Extras/X1-MultiModal/README.md new file mode 100644 index 00000000..a98982d7 --- /dev/null +++ b/translations/uk/lessons/X-Extras/X1-MultiModal/README.md @@ -0,0 +1,88 @@ + +# Мультимодальні мережі + +Після успіху моделей трансформерів у вирішенні завдань обробки природної мови (NLP), ті ж або схожі архітектури були застосовані до завдань комп'ютерного зору. Зростає інтерес до створення моделей, які б *поєднували* можливості зору та природної мови. Одним із таких підходів є моделі CLIP та DALL.E, розроблені OpenAI. + +## Контрастне попереднє навчання зображень (CLIP) + +Основна ідея CLIP полягає в тому, щоб порівнювати текстові запити із зображеннями та визначати, наскільки добре зображення відповідає запиту. + +![Архітектура CLIP](../../../../../translated_images/clip-arch.b3dbf20b4e8ed8be1c38e2bc6100fd3cc257c33cda4692b301be91f791b13ea7.uk.png) + +> *Зображення з [цього блогу](https://openai.com/blog/clip/)* + +Модель тренується на зображеннях, отриманих з Інтернету, та їх підписах. Для кожного батчу ми беремо N пар (зображення, текст) і перетворюємо їх у векторні представлення I, ..., I / T, ..., T. Ці представлення потім зіставляються між собою. Функція втрат визначається таким чином, щоб максимізувати косинусну схожість між векторами, що відповідають одній парі (наприклад, 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.uk.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/) (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.uk.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.uk.png) | ![Зображення, створене Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_young_female_teacher_of_computer_science_with_a_computer.e0b6495f210a439077e1c32cc8afdf714e634fe24dc78dc5aa45fd2f560b0ed5.uk.png) | ![Зображення, створене Pixray](../../../../../translated_images/a_closeup_oil_portrait_of_old_male_teacher_of_math.5362e67aa7fc2683b9d36a613b364deb7454760cd39205623fc1e3938fa133c0.uk.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: +![Зображення, створене 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.uk.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.uk.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.uk.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/uk/lessons/sketchnotes/LICENSE.md b/translations/uk/lessons/sketchnotes/LICENSE.md new file mode 100644 index 00000000..3301a244 --- /dev/null +++ b/translations/uk/lessons/sketchnotes/LICENSE.md @@ -0,0 +1,122 @@ + +Поширення прав, то цей розділ застосовується до Вашого використання: + + a. для уникнення сумнівів, Розділ 2(a)(1) надає Вам право вилучати, повторно використовувати, відтворювати та поширювати весь або значну частину вмісту бази даних; + + b. якщо Ви включаєте весь або значну частину вмісту бази даних у базу даних, в якій Ви маєте права Sui Generis Database Rights, то база даних, створена Вами, повинна бути ліцензована на тих самих умовах, що й ця Публічна Ліцензія; + + c. Ви не можете накладати додаткові або інші умови чи застосовувати Ефективні Технологічні Заходи до бази даних, створеної Вами, які обмежують використання прав, наданих цією Публічною Ліцензією. + +Розділ 5 -- Застереження та обмеження. + + a. За винятком випадків, прямо зазначених у цій Публічній Ліцензії, Ліцензіар не надає жодних гарантій щодо Ліцензованого Матеріалу, включаючи, без обмежень, будь-які гарантії придатності для продажу, придатності для певної мети, відсутності порушень або відсутності прихованих дефектів. У межах, дозволених чинним законодавством, Ліцензіар відмовляється від будь-якої відповідальності за будь-які збитки, пов’язані з використанням Ліцензованого Матеріалу. + + b. У межах, дозволених чинним законодавством, Ліцензіар не несе відповідальності перед Вами за будь-які теорії відповідальності, включаючи, без обмежень, гарантії, договір, делікт (включаючи недбалість), або інші юридичні теорії, за будь-які збитки, пов’язані з використанням Ліцензованого Матеріалу, навіть якщо Ліцензіар був попереджений про можливість таких збитків. + + c. Якщо відмова від гарантій або обмеження відповідальності не дозволені повністю або частково в певній юрисдикції, ці відмови та обмеження застосовуються до Вас у межах, дозволених чинним законодавством. + +Розділ 6 -- Термін дії та припинення. + + a. Термін дії. Ця Публічна Ліцензія залишається чинною протягом усього терміну дії авторських прав і подібних прав, ліцензованих відповідно до цієї Публічної Ліцензії. Однак якщо Ви не дотримуєтеся умов цієї Публічної Ліцензії, Ваші права за цією Публічною Ліцензією автоматично припиняються. + + b. Відновлення прав. + + 1. Якщо Ваші права припинилися відповідно до Розділу 6(a), вони автоматично відновлюються: + + a. через 30 днів після припинення, якщо Ви виправили порушення; або + + b. після отримання письмового дозволу від Ліцензіара. + + 2. Для уникнення сумнівів, цей Розділ 6(b) не впливає на будь-які права Ліцензіара припиняти цю Публічну Ліцензію відповідно до чинного законодавства. + + 3. Для уникнення сумнівів, Ліцензіар може також пропонувати Ліцензований Матеріал за іншими умовами або припиняти розповсюдження Ліцензованого Матеріалу в будь-який час; однак це не припиняє цю Публічну Ліцензію. + + c. Вплив припинення. Якщо Ваші права припиняються відповідно до Розділу 6(a), Ви повинні припинити використання Ліцензованого Матеріалу та знищити будь-які копії, які Ви зробили. Однак Ваші зобов’язання відповідно до цієї Публічної Ліцензії залишаються чинними. + +Розділ 7 -- Інші умови. + + a. Додаткові умови, угоди та розуміння. + + 1. Ліцензіар не зобов’язаний виконувати будь-які умови, які Ви додаєте до використання Ліцензованого Матеріалу або будь-які додаткові угоди, які Ви укладаєте. + + 2. Будь-які угоди, розуміння або домовленості між Вами та Ліцензіаром, які не зазначені в цій Публічній Ліцензії, не є частиною цієї Публічної Ліцензії. + + b. Тлумачення. + + 1. Для уникнення сумнівів, ця Публічна Ліцензія не зменшує, не обмежує та не обмежує будь-які винятки та обмеження, які застосовуються до Вашого використання Ліцензованого Матеріалу відповідно до чинного законодавства. + + 2. Якщо будь-яке положення цієї Публічної Ліцензії буде визнано недійсним або незастосовним відповідно до чинного законодавства, це не впливає на дійсність або застосовність решти умов цієї Публічної Ліцензії. + + 3. Ніщо в цій Публічній Ліцензії не є або не повинно тлумачитися як обмеження або відмова від будь-яких привілеїв та імунітетів, які застосовуються до Ліцензіара або Вас, включаючи привілеї та імунітети, які походять від міжнародного права. + +Розділ 8 -- Ваші права під цією Публічною Ліцензією. + +Ця Публічна Ліцензія не є ліцензією на патенти, торгові марки або інші права інтелектуальної власності, крім авторських прав і подібних прав, ліцензованих відповідно до цієї Публічної Ліцензії. +Права, а також база даних, у якій Ви маєте права 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 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/uk/lessons/sketchnotes/README.md b/translations/uk/lessons/sketchnotes/README.md new file mode 100644 index 00000000..20f2d162 --- /dev/null +++ b/translations/uk/lessons/sketchnotes/README.md @@ -0,0 +1,17 @@ + +Усі скетчноти навчальної програми можна завантажити тут. + +🎨 Створено: Томомі Імура (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/) + +**Відмова від відповідальності**: +Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу. \ No newline at end of file